From 5f67a868cb4a3b118de53fff0e69c32687b1e19b Mon Sep 17 00:00:00 2001 From: logorrheique Date: Sun, 27 Oct 2024 11:36:46 +0100 Subject: [PATCH] fix:redirect /list on mobile to /dashboard when shrinking on computer --- .github/workflows/json-yaml-validate.yml | 54 +- docker/debian-base.dockerfile | 122 +- package-lock.json | 35380 +++++++++--------- package.json | 428 +- server/database.js | 1432 +- server/jobs/clear-old-data.js | 114 +- server/model/monitor.js | 3474 +- server/notification-providers/serverchan.js | 100 +- server/server.js | 3732 +- server/uptime-calculator.js | 1664 +- server/uptime-kuma-server.js | 1110 +- src/components/HeartbeatBar.vue | 656 +- src/lang/bg-BG.json | 2108 +- src/lang/de-CH.json | 2104 +- src/lang/de-DE.json | 2110 +- src/lang/en.json | 2114 +- src/lang/et-EE.json | 640 +- src/lang/fi.json | 2104 +- src/lang/fr-FR.json | 2110 +- src/lang/hr-HR.json | 1974 +- src/lang/id-ID.json | 2100 +- src/lang/ja.json | 1352 +- src/lang/pl.json | 1994 +- src/lang/pt-BR.json | 1968 +- src/lang/ru-RU.json | 1950 +- src/lang/sv-SE.json | 1922 +- src/lang/tr-TR.json | 2110 +- src/lang/uk-UA.json | 2122 +- src/lang/zh-CN.json | 2114 +- src/pages/EditMonitor.vue | 3834 +- src/pages/List.vue | 19 + 31 files changed, 42517 insertions(+), 42498 deletions(-) diff --git a/.github/workflows/json-yaml-validate.yml b/.github/workflows/json-yaml-validate.yml index b6437ec49..5d3c41ed7 100644 --- a/.github/workflows/json-yaml-validate.yml +++ b/.github/workflows/json-yaml-validate.yml @@ -1,27 +1,27 @@ -name: json-yaml-validate -on: - push: - branches: - - master - pull_request: - branches: - - master - - 1.23.X - workflow_dispatch: - -permissions: - contents: read - pull-requests: write # enable write permissions for pull request comments - -jobs: - json-yaml-validate: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: json-yaml-validate - id: json-yaml-validate - uses: GrantBirki/json-yaml-validate@v2.4.0 - with: - comment: "true" # enable comment mode - exclude_file: ".github/config/exclude.txt" # gitignore style file for exclusions +name: json-yaml-validate +on: + push: + branches: + - master + pull_request: + branches: + - master + - 1.23.X + workflow_dispatch: + +permissions: + contents: read + pull-requests: write # enable write permissions for pull request comments + +jobs: + json-yaml-validate: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: json-yaml-validate + id: json-yaml-validate + uses: GrantBirki/json-yaml-validate@v2.4.0 + with: + comment: "true" # enable comment mode + exclude_file: ".github/config/exclude.txt" # gitignore style file for exclusions diff --git a/docker/debian-base.dockerfile b/docker/debian-base.dockerfile index 805504127..167373c28 100644 --- a/docker/debian-base.dockerfile +++ b/docker/debian-base.dockerfile @@ -1,61 +1,61 @@ -# If the image changed, the second stage image should be changed too -FROM node:20-bookworm-slim AS base2-slim -ARG TARGETPLATFORM - -# Specify --no-install-recommends to skip unused dependencies, make the base much smaller! -# sqlite3 = for debugging -# iputils-ping = for ping -# util-linux = for setpriv (Should be dropped in 2.0.0?) -# dumb-init = avoid zombie processes (#480) -# curl = for debugging -# ca-certificates = keep the cert up-to-date -# sudo = for start service nscd with non-root user -# nscd = for better DNS caching -RUN apt update && \ - apt --yes --no-install-recommends install \ - sqlite3 \ - ca-certificates \ - iputils-ping \ - util-linux \ - dumb-init \ - curl \ - sudo \ - nscd && \ - rm -rf /var/lib/apt/lists/* && \ - apt --yes autoremove - -# apprise = for notifications (Install from the deb package, as the stable one is too old) (workaround for #4867) -# Switching to testing repo is no longer working, as the testing repo is not bookworm anymore. -# python3-paho-mqtt (#4859) -RUN curl http://ftp.debian.org/debian/pool/main/a/apprise/apprise_1.8.0-2_all.deb --output apprise.deb && \ - apt update && \ - apt --yes --no-install-recommends install ./apprise.deb python3-paho-mqtt && \ - rm -rf /var/lib/apt/lists/* && \ - rm -f apprise.deb && \ - apt --yes autoremove - -# Install cloudflared -RUN curl https://pkg.cloudflare.com/cloudflare-main.gpg --output /usr/share/keyrings/cloudflare-main.gpg && \ - echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared bullseye main' | tee /etc/apt/sources.list.d/cloudflared.list && \ - apt update && \ - apt install --yes --no-install-recommends -t stable cloudflared && \ - cloudflared version && \ - rm -rf /var/lib/apt/lists/* && \ - apt --yes autoremove - -# For nscd -COPY ./docker/etc/nscd.conf /etc/nscd.conf -COPY ./docker/etc/sudoers /etc/sudoers - - -# Full Base Image -# MariaDB, Chromium and fonts -# Make sure to reuse the slim image here. Uncomment the above line if you want to build it from scratch. -# FROM base2-slim AS base2 -FROM louislam/uptime-kuma:base2-slim AS base2 -ENV UPTIME_KUMA_ENABLE_EMBEDDED_MARIADB=1 -RUN apt update && \ - apt --yes --no-install-recommends install chromium fonts-indic fonts-noto fonts-noto-cjk mariadb-server && \ - rm -rf /var/lib/apt/lists/* && \ - apt --yes autoremove && \ - chown -R node:node /var/lib/mysql +# If the image changed, the second stage image should be changed too +FROM node:20-bookworm-slim AS base2-slim +ARG TARGETPLATFORM + +# Specify --no-install-recommends to skip unused dependencies, make the base much smaller! +# sqlite3 = for debugging +# iputils-ping = for ping +# util-linux = for setpriv (Should be dropped in 2.0.0?) +# dumb-init = avoid zombie processes (#480) +# curl = for debugging +# ca-certificates = keep the cert up-to-date +# sudo = for start service nscd with non-root user +# nscd = for better DNS caching +RUN apt update && \ + apt --yes --no-install-recommends install \ + sqlite3 \ + ca-certificates \ + iputils-ping \ + util-linux \ + dumb-init \ + curl \ + sudo \ + nscd && \ + rm -rf /var/lib/apt/lists/* && \ + apt --yes autoremove + +# apprise = for notifications (Install from the deb package, as the stable one is too old) (workaround for #4867) +# Switching to testing repo is no longer working, as the testing repo is not bookworm anymore. +# python3-paho-mqtt (#4859) +RUN curl http://ftp.debian.org/debian/pool/main/a/apprise/apprise_1.8.0-2_all.deb --output apprise.deb && \ + apt update && \ + apt --yes --no-install-recommends install ./apprise.deb python3-paho-mqtt && \ + rm -rf /var/lib/apt/lists/* && \ + rm -f apprise.deb && \ + apt --yes autoremove + +# Install cloudflared +RUN curl https://pkg.cloudflare.com/cloudflare-main.gpg --output /usr/share/keyrings/cloudflare-main.gpg && \ + echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared bullseye main' | tee /etc/apt/sources.list.d/cloudflared.list && \ + apt update && \ + apt install --yes --no-install-recommends -t stable cloudflared && \ + cloudflared version && \ + rm -rf /var/lib/apt/lists/* && \ + apt --yes autoremove + +# For nscd +COPY ./docker/etc/nscd.conf /etc/nscd.conf +COPY ./docker/etc/sudoers /etc/sudoers + + +# Full Base Image +# MariaDB, Chromium and fonts +# Make sure to reuse the slim image here. Uncomment the above line if you want to build it from scratch. +# FROM base2-slim AS base2 +FROM louislam/uptime-kuma:base2-slim AS base2 +ENV UPTIME_KUMA_ENABLE_EMBEDDED_MARIADB=1 +RUN apt update && \ + apt --yes --no-install-recommends install chromium fonts-indic fonts-noto fonts-noto-cjk mariadb-server && \ + rm -rf /var/lib/apt/lists/* && \ + apt --yes autoremove && \ + chown -R node:node /var/lib/mysql diff --git a/package-lock.json b/package-lock.json index a89b1b560..f89165075 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17690 +1,17690 @@ -{ - "name": "uptime-kuma", - "version": "2.0.0-dev", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "uptime-kuma", - "version": "2.0.0-dev", - "license": "MIT", - "dependencies": { - "@grpc/grpc-js": "~1.8.22", - "@louislam/ping": "~0.4.4-mod.1", - "@louislam/sqlite3": "15.1.6", - "@vvo/tzdb": "^6.125.0", - "args-parser": "~1.3.0", - "axios": "~0.28.1", - "badge-maker": "~3.3.1", - "bcryptjs": "~2.4.3", - "chardet": "~1.4.0", - "check-password-strength": "^2.0.5", - "cheerio": "~1.0.0-rc.12", - "chroma-js": "~2.4.2", - "command-exists": "~1.2.9", - "compare-versions": "~3.6.0", - "compression": "~1.7.4", - "croner": "~8.1.0", - "dayjs": "~1.11.5", - "dev-null": "^0.1.1", - "dotenv": "~16.0.3", - "express": "~4.21.0", - "express-basic-auth": "~1.2.1", - "express-static-gzip": "~2.1.7", - "feed": "^4.2.2", - "form-data": "~4.0.0", - "gamedig": "^4.2.0", - "html-escaper": "^3.0.3", - "http-cookie-agent": "~5.0.4", - "http-graceful-shutdown": "~3.1.7", - "http-proxy-agent": "~5.0.0", - "https-proxy-agent": "~5.0.1", - "iconv-lite": "~0.6.3", - "isomorphic-ws": "^5.0.0", - "jsesc": "~3.0.2", - "jsonata": "^2.0.3", - "jsonwebtoken": "~9.0.0", - "jwt-decode": "~3.1.2", - "kafkajs": "^2.2.4", - "knex": "^2.4.2", - "limiter": "~2.1.0", - "liquidjs": "^10.7.0", - "marked": "^14.0.0", - "mitt": "~3.0.1", - "mongodb": "~4.17.1", - "mqtt": "~4.3.7", - "mssql": "~11.0.0", - "mysql2": "~3.9.6", - "nanoid": "~3.3.4", - "net-snmp": "^3.11.2", - "node-cloudflared-tunnel": "~1.0.9", - "node-radius-client": "~1.0.0", - "nodemailer": "~6.9.13", - "nostr-tools": "^1.13.1", - "notp": "~2.0.3", - "openid-client": "^5.4.2", - "password-hash": "~1.2.2", - "pg": "~8.11.3", - "pg-connection-string": "~2.6.2", - "playwright-core": "~1.39.0", - "prom-client": "~13.2.0", - "prometheus-api-metrics": "~3.2.1", - "promisify-child-process": "~4.1.2", - "protobufjs": "~7.2.4", - "qs": "~6.10.4", - "redbean-node": "~0.3.0", - "redis": "~4.5.1", - "semver": "~7.5.4", - "socket.io": "~4.8.0", - "socket.io-client": "~4.8.0", - "socks-proxy-agent": "6.1.1", - "tar": "~6.2.1", - "tcp-ping": "~0.1.1", - "thirty-two": "~1.0.2", - "tough-cookie": "~4.1.3", - "ws": "^8.13.0" - }, - "devDependencies": { - "@actions/github": "~5.1.1", - "@fortawesome/fontawesome-svg-core": "~1.2.36", - "@fortawesome/free-regular-svg-icons": "~5.15.4", - "@fortawesome/free-solid-svg-icons": "~5.15.4", - "@fortawesome/vue-fontawesome": "~3.0.0-5", - "@playwright/test": "~1.39.0", - "@popperjs/core": "~2.10.2", - "@testcontainers/hivemq": "^10.13.1", - "@types/bootstrap": "~5.1.9", - "@types/node": "^20.8.6", - "@typescript-eslint/eslint-plugin": "^6.7.5", - "@typescript-eslint/parser": "^6.7.5", - "@vitejs/plugin-vue": "~5.0.1", - "@vue/compiler-sfc": "~3.4.2", - "@vuepic/vue-datepicker": "~3.4.8", - "aedes": "^0.46.3", - "bootstrap": "5.1.3", - "chart.js": "~4.2.1", - "chartjs-adapter-dayjs-4": "~1.0.4", - "concurrently": "^7.1.0", - "core-js": "~3.26.1", - "cronstrue": "~2.24.0", - "cross-env": "~7.0.3", - "delay": "^5.0.0", - "dns2": "~2.0.1", - "dompurify": "~3.1.7", - "eslint": "~8.14.0", - "eslint-plugin-jsdoc": "~46.4.6", - "eslint-plugin-vue": "~8.7.1", - "favico.js": "~0.3.10", - "get-port-please": "^3.1.1", - "node-ssh": "~13.1.0", - "postcss-html": "~1.5.0", - "postcss-rtlcss": "~3.7.2", - "postcss-scss": "~4.0.4", - "prismjs": "~1.29.0", - "qrcode": "~1.5.0", - "rollup-plugin-visualizer": "^5.6.0", - "sass": "~1.42.1", - "stylelint": "^15.10.1", - "stylelint-config-standard": "~25.0.0", - "terser": "~5.15.0", - "test": "~3.3.0", - "testcontainers": "^10.13.1", - "typescript": "~4.4.4", - "v-pagination-3": "~0.1.7", - "vite": "~5.2.8", - "vite-plugin-compression": "^0.5.1", - "vite-plugin-vue-devtools": "^7.0.15", - "vue": "~3.4.2", - "vue-chartjs": "~5.2.0", - "vue-confirm-dialog": "~1.0.2", - "vue-contenteditable": "~3.0.4", - "vue-i18n": "~9.2.2", - "vue-image-crop-upload": "~3.0.3", - "vue-multiselect": "~3.0.0-alpha.2", - "vue-prism-editor": "~2.0.0-alpha.2", - "vue-qrcode": "~1.0.0", - "vue-router": "~4.2.5", - "vue-toastification": "~2.0.0-rc.5", - "vuedraggable": "~4.1.0", - "wait-on": "^7.2.0", - "whatwg-url": "~12.0.1" - }, - "engines": { - "node": "18 || >= 20.4.0" - } - }, - "node_modules/@actions/github": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.1.1.tgz", - "integrity": "sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@actions/http-client": "^2.0.1", - "@octokit/core": "^3.6.0", - "@octokit/plugin-paginate-rest": "^2.17.0", - "@octokit/plugin-rest-endpoint-methods": "^5.13.0" - } - }, - "node_modules/@actions/http-client": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", - "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tunnel": "^0.0.6", - "undici": "^5.25.4" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@antfu/utils": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", - "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@aws-crypto/sha256-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", - "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-crypto/sha256-js": "^5.2.0", - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha256-js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", - "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-crypto/supports-web-crypto": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", - "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/util": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", - "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.658.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.658.1.tgz", - "integrity": "sha512-MCYLKmNy0FlNT9TvXfOxj0jh+ZQq+G9qEy/VZqu3JsQSgiFvFRdzgzcbQ9gQx7fZrDC/TPdABOTh483zI4cu9g==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.658.1", - "@aws-sdk/client-sts": "3.658.1", - "@aws-sdk/core": "3.658.1", - "@aws-sdk/credential-provider-node": "3.658.1", - "@aws-sdk/middleware-host-header": "3.654.0", - "@aws-sdk/middleware-logger": "3.654.0", - "@aws-sdk/middleware-recursion-detection": "3.654.0", - "@aws-sdk/middleware-user-agent": "3.654.0", - "@aws-sdk/region-config-resolver": "3.654.0", - "@aws-sdk/types": "3.654.0", - "@aws-sdk/util-endpoints": "3.654.0", - "@aws-sdk/util-user-agent-browser": "3.654.0", - "@aws-sdk/util-user-agent-node": "3.654.0", - "@smithy/config-resolver": "^3.0.8", - "@smithy/core": "^2.4.6", - "@smithy/fetch-http-handler": "^3.2.8", - "@smithy/hash-node": "^3.0.6", - "@smithy/invalid-dependency": "^3.0.6", - "@smithy/middleware-content-length": "^3.0.8", - "@smithy/middleware-endpoint": "^3.1.3", - "@smithy/middleware-retry": "^3.0.21", - "@smithy/middleware-serde": "^3.0.6", - "@smithy/middleware-stack": "^3.0.6", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/node-http-handler": "^3.2.3", - "@smithy/protocol-http": "^4.1.3", - "@smithy/smithy-client": "^3.3.5", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.21", - "@smithy/util-defaults-mode-node": "^3.0.21", - "@smithy/util-endpoints": "^2.1.2", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-retry": "^3.0.6", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.658.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.658.1.tgz", - "integrity": "sha512-lOuaBtqPTYGn6xpXlQF4LsNDsQ8Ij2kOdnk+i69Kp6yS76TYvtUuukyLL5kx8zE1c8WbYtxj9y8VNw9/6uKl7Q==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.658.1", - "@aws-sdk/middleware-host-header": "3.654.0", - "@aws-sdk/middleware-logger": "3.654.0", - "@aws-sdk/middleware-recursion-detection": "3.654.0", - "@aws-sdk/middleware-user-agent": "3.654.0", - "@aws-sdk/region-config-resolver": "3.654.0", - "@aws-sdk/types": "3.654.0", - "@aws-sdk/util-endpoints": "3.654.0", - "@aws-sdk/util-user-agent-browser": "3.654.0", - "@aws-sdk/util-user-agent-node": "3.654.0", - "@smithy/config-resolver": "^3.0.8", - "@smithy/core": "^2.4.6", - "@smithy/fetch-http-handler": "^3.2.8", - "@smithy/hash-node": "^3.0.6", - "@smithy/invalid-dependency": "^3.0.6", - "@smithy/middleware-content-length": "^3.0.8", - "@smithy/middleware-endpoint": "^3.1.3", - "@smithy/middleware-retry": "^3.0.21", - "@smithy/middleware-serde": "^3.0.6", - "@smithy/middleware-stack": "^3.0.6", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/node-http-handler": "^3.2.3", - "@smithy/protocol-http": "^4.1.3", - "@smithy/smithy-client": "^3.3.5", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.21", - "@smithy/util-defaults-mode-node": "^3.0.21", - "@smithy/util-endpoints": "^2.1.2", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-retry": "^3.0.6", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.658.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.658.1.tgz", - "integrity": "sha512-RGcZAI3qEA05JszPKwa0cAyp8rnS1nUvs0Sqw4hqLNQ1kD7b7V6CPjRXe7EFQqCOMvM4kGqx0+cEEVTOmBsFLw==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.658.1", - "@aws-sdk/credential-provider-node": "3.658.1", - "@aws-sdk/middleware-host-header": "3.654.0", - "@aws-sdk/middleware-logger": "3.654.0", - "@aws-sdk/middleware-recursion-detection": "3.654.0", - "@aws-sdk/middleware-user-agent": "3.654.0", - "@aws-sdk/region-config-resolver": "3.654.0", - "@aws-sdk/types": "3.654.0", - "@aws-sdk/util-endpoints": "3.654.0", - "@aws-sdk/util-user-agent-browser": "3.654.0", - "@aws-sdk/util-user-agent-node": "3.654.0", - "@smithy/config-resolver": "^3.0.8", - "@smithy/core": "^2.4.6", - "@smithy/fetch-http-handler": "^3.2.8", - "@smithy/hash-node": "^3.0.6", - "@smithy/invalid-dependency": "^3.0.6", - "@smithy/middleware-content-length": "^3.0.8", - "@smithy/middleware-endpoint": "^3.1.3", - "@smithy/middleware-retry": "^3.0.21", - "@smithy/middleware-serde": "^3.0.6", - "@smithy/middleware-stack": "^3.0.6", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/node-http-handler": "^3.2.3", - "@smithy/protocol-http": "^4.1.3", - "@smithy/smithy-client": "^3.3.5", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.21", - "@smithy/util-defaults-mode-node": "^3.0.21", - "@smithy/util-endpoints": "^2.1.2", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-retry": "^3.0.6", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.658.1" - } - }, - "node_modules/@aws-sdk/client-sts": { - "version": "3.658.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.658.1.tgz", - "integrity": "sha512-yw9hc5blTnbT1V6mR7Cx9HGc9KQpcLQ1QXj8rntiJi6tIYu3aFNVEyy81JHL7NsuBSeQulJTvHO3y6r3O0sfRg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.658.1", - "@aws-sdk/core": "3.658.1", - "@aws-sdk/credential-provider-node": "3.658.1", - "@aws-sdk/middleware-host-header": "3.654.0", - "@aws-sdk/middleware-logger": "3.654.0", - "@aws-sdk/middleware-recursion-detection": "3.654.0", - "@aws-sdk/middleware-user-agent": "3.654.0", - "@aws-sdk/region-config-resolver": "3.654.0", - "@aws-sdk/types": "3.654.0", - "@aws-sdk/util-endpoints": "3.654.0", - "@aws-sdk/util-user-agent-browser": "3.654.0", - "@aws-sdk/util-user-agent-node": "3.654.0", - "@smithy/config-resolver": "^3.0.8", - "@smithy/core": "^2.4.6", - "@smithy/fetch-http-handler": "^3.2.8", - "@smithy/hash-node": "^3.0.6", - "@smithy/invalid-dependency": "^3.0.6", - "@smithy/middleware-content-length": "^3.0.8", - "@smithy/middleware-endpoint": "^3.1.3", - "@smithy/middleware-retry": "^3.0.21", - "@smithy/middleware-serde": "^3.0.6", - "@smithy/middleware-stack": "^3.0.6", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/node-http-handler": "^3.2.3", - "@smithy/protocol-http": "^4.1.3", - "@smithy/smithy-client": "^3.3.5", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.21", - "@smithy/util-defaults-mode-node": "^3.0.21", - "@smithy/util-endpoints": "^2.1.2", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-retry": "^3.0.6", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/core": { - "version": "3.658.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.658.1.tgz", - "integrity": "sha512-vJVMoMcSKXK2gBRSu9Ywwv6wQ7tXH8VL1fqB1uVxgCqBZ3IHfqNn4zvpMPWrwgO2/3wv7XFyikGQ5ypPTCw4jA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/core": "^2.4.6", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/protocol-http": "^4.1.3", - "@smithy/signature-v4": "^4.1.4", - "@smithy/smithy-client": "^3.3.5", - "@smithy/types": "^3.4.2", - "@smithy/util-middleware": "^3.0.6", - "fast-xml-parser": "4.4.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.658.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.658.1.tgz", - "integrity": "sha512-JY4rZ4e2emL7PNHCU7F/BQV8PpQGEBZLkEoPD55RO4CitaIhlVZRpUCGLih+0Hw4MOnTUqJdfQBM+qZk6G+Now==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/client-cognito-identity": "3.658.1", - "@aws-sdk/types": "3.654.0", - "@smithy/property-provider": "^3.1.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.654.0.tgz", - "integrity": "sha512-kogsx3Ql81JouHS7DkheCDU9MYAvK0AokxjcshDveGmf7BbgbWCA8Fnb9wjQyNDaOXNvkZu8Z8rgkX91z324/w==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/property-provider": "^3.1.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.658.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.658.1.tgz", - "integrity": "sha512-4ubkJjEVCZflxkZnV1JDQv8P2pburxk1LrEp55telfJRzXrnowzBKwuV2ED0QMNC448g2B3VCaffS+Ct7c4IWQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/fetch-http-handler": "^3.2.8", - "@smithy/node-http-handler": "^3.2.3", - "@smithy/property-provider": "^3.1.6", - "@smithy/protocol-http": "^4.1.3", - "@smithy/smithy-client": "^3.3.5", - "@smithy/types": "^3.4.2", - "@smithy/util-stream": "^3.1.8", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.658.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.658.1.tgz", - "integrity": "sha512-2uwOamQg5ppwfegwen1ddPu5HM3/IBSnaGlaKLFhltkdtZ0jiqTZWUtX2V+4Q+buLnT0hQvLS/frQ+7QUam+0Q==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.654.0", - "@aws-sdk/credential-provider-http": "3.658.1", - "@aws-sdk/credential-provider-process": "3.654.0", - "@aws-sdk/credential-provider-sso": "3.658.1", - "@aws-sdk/credential-provider-web-identity": "3.654.0", - "@aws-sdk/types": "3.654.0", - "@smithy/credential-provider-imds": "^3.2.3", - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.658.1" - } - }, - "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.658.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.658.1.tgz", - "integrity": "sha512-XwxW6N+uPXPYAuyq+GfOEdfL/MZGAlCSfB5gEWtLBFmFbikhmEuqfWtI6CD60OwudCUOh6argd21BsJf8o1SJA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.654.0", - "@aws-sdk/credential-provider-http": "3.658.1", - "@aws-sdk/credential-provider-ini": "3.658.1", - "@aws-sdk/credential-provider-process": "3.654.0", - "@aws-sdk/credential-provider-sso": "3.658.1", - "@aws-sdk/credential-provider-web-identity": "3.654.0", - "@aws-sdk/types": "3.654.0", - "@smithy/credential-provider-imds": "^3.2.3", - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.654.0.tgz", - "integrity": "sha512-PmQoo8sZ9Q2Ow8OMzK++Z9lI7MsRUG7sNq3E72DVA215dhtTICTDQwGlXH2AAmIp7n+G9LLRds+4wo2ehG4mkg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.658.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.658.1.tgz", - "integrity": "sha512-YOagVEsZEk9DmgJEBg+4MBXrPcw/tYas0VQ5OVBqC5XHNbi2OBGJqgmjVPesuu393E7W0VQxtJFDS00O1ewQgA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/client-sso": "3.658.1", - "@aws-sdk/token-providers": "3.654.0", - "@aws-sdk/types": "3.654.0", - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.654.0.tgz", - "integrity": "sha512-6a2g9gMtZToqSu+CusjNK5zvbLJahQ9di7buO3iXgbizXpLXU1rnawCpWxwslMpT5fLgMSKDnKDrr6wdEk7jSw==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/property-provider": "^3.1.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.654.0" - } - }, - "node_modules/@aws-sdk/credential-providers": { - "version": "3.658.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.658.1.tgz", - "integrity": "sha512-lfXA6kZS6GHyi/67EbfrKdLoqHR6j7G35eFwaqxyNkfMhNBpAF0eZK3SYiwnzdR9+Wb/enTFawYiFbG5R+dQzA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/client-cognito-identity": "3.658.1", - "@aws-sdk/client-sso": "3.658.1", - "@aws-sdk/client-sts": "3.658.1", - "@aws-sdk/credential-provider-cognito-identity": "3.658.1", - "@aws-sdk/credential-provider-env": "3.654.0", - "@aws-sdk/credential-provider-http": "3.658.1", - "@aws-sdk/credential-provider-ini": "3.658.1", - "@aws-sdk/credential-provider-node": "3.658.1", - "@aws-sdk/credential-provider-process": "3.654.0", - "@aws-sdk/credential-provider-sso": "3.658.1", - "@aws-sdk/credential-provider-web-identity": "3.654.0", - "@aws-sdk/types": "3.654.0", - "@smithy/credential-provider-imds": "^3.2.3", - "@smithy/property-provider": "^3.1.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", - "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", - "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", - "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", - "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@aws-sdk/util-endpoints": "3.654.0", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", - "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/token-providers": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.654.0.tgz", - "integrity": "sha512-D8GeJYmvbfWkQDtTB4owmIobSMexZel0fOoetwvgCQ/7L8VPph3Q2bn1TRRIXvH7wdt6DcDxA3tKMHPBkT3GlA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sso-oidc": "^3.654.0" - } - }, - "node_modules/@aws-sdk/types": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", - "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", - "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/types": "^3.4.2", - "@smithy/util-endpoints": "^2.1.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.568.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz", - "integrity": "sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", - "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/types": "^3.4.2", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.654.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", - "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/types": "3.654.0", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, - "node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-auth": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.8.0.tgz", - "integrity": "sha512-YvFMowkXzLbXNM11yZtVLhUCmuG0ex7JKOH366ipjmHBhL3vpDcPAeWF+jf0X+jVXwFqo3UhsWUq4kH0ZPdu/g==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-client": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", - "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-rest-pipeline": "^1.9.1", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.6.1", - "@azure/logger": "^1.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-http-compat": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-2.1.2.tgz", - "integrity": "sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-client": "^1.3.0", - "@azure/core-rest-pipeline": "^1.3.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-lro": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz", - "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.2.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-paging": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", - "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.17.0.tgz", - "integrity": "sha512-62Vv8nC+uPId3j86XJ0WI+sBf0jlqTqPUFCBNrGtlaUeQUIXWV/D8GE5A1d+Qx8H7OQojn2WguC8kChD6v0shA==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.8.0", - "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.9.0", - "@azure/logger": "^1.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@azure/core-rest-pipeline/node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@azure/core-rest-pipeline/node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@azure/core-tracing": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.1.2.tgz", - "integrity": "sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-util": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.10.0.tgz", - "integrity": "sha512-dqLWQsh9Nro1YQU+405POVtXnwrIVqPyfUzc4zXCbThTg7+vNNaiMkwbX9AMXKyoFYFClxmB3s25ZFr3+jZkww==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/identity": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.4.1.tgz", - "integrity": "sha512-DwnG4cKFEM7S3T+9u05NstXU/HN0dk45kPOinUyNKsn5VWwpXd9sbPKEg6kgJzGbm1lMuhx9o31PVbCtM5sfBA==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.5.0", - "@azure/core-client": "^1.9.2", - "@azure/core-rest-pipeline": "^1.1.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.3.0", - "@azure/logger": "^1.0.0", - "@azure/msal-browser": "^3.14.0", - "@azure/msal-node": "^2.9.2", - "events": "^3.0.0", - "jws": "^4.0.0", - "open": "^8.0.0", - "stoppable": "^1.1.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/identity/node_modules/@azure/abort-controller": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", - "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", - "license": "MIT", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure/identity/node_modules/jwa": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", - "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@azure/identity/node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "license": "MIT", - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@azure/keyvault-keys": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.8.0.tgz", - "integrity": "sha512-jkuYxgkw0aaRfk40OQhFqDIupqblIOIlYESWB6DKCVDxQet1pyv86Tfk9M+5uFM0+mCs6+MUHU+Hxh3joiUn4Q==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.5.0", - "@azure/core-http-compat": "^2.0.1", - "@azure/core-lro": "^2.2.0", - "@azure/core-paging": "^1.1.1", - "@azure/core-rest-pipeline": "^1.8.1", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/keyvault-keys/node_modules/@azure/abort-controller": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", - "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", - "license": "MIT", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure/logger": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.4.tgz", - "integrity": "sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/msal-browser": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.24.0.tgz", - "integrity": "sha512-JGNV9hTYAa7lsum9IMIibn2kKczAojNihGo1hi7pG0kNrcKej530Fl6jxwM05A44/6I079CSn6WxYxbVhKUmWg==", - "license": "MIT", - "dependencies": { - "@azure/msal-common": "14.15.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-common": { - "version": "14.15.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.15.0.tgz", - "integrity": "sha512-ImAQHxmpMneJ/4S8BRFhjt1MZ3bppmpRPYYNyzeQPeFN288YKbb8TmmISQEbtfkQ1BPASvYZU5doIZOPBAqENQ==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-node": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.14.0.tgz", - "integrity": "sha512-rrfzIpG3Q1rHjVYZmHAEDidWAZZ2cgkxlIcMQ8dHebRISaZ2KCV33Q8Vs+uaV6lxweROabNxKFlR2lIKagZqYg==", - "license": "MIT", - "dependencies": { - "@azure/msal-common": "14.15.0", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", - "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.25.7", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", - "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", - "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.25.7", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz", - "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.8", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/helper-replace-supers": "^7.25.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/traverse": "^7.25.4", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", - "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.8", - "@babel/types": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", - "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", - "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", - "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.24.8", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/traverse": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", - "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", - "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", - "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", - "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", - "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz", - "integrity": "sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.25.7" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.7.tgz", - "integrity": "sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-decorators": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz", - "integrity": "sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", - "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", - "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz", - "integrity": "sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.25.0", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-syntax-typescript": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", - "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", - "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/types": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", - "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.25.7", - "@babel/generator": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/template": "^7.25.7", - "@babel/types": "^7.25.7", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz", - "integrity": "sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@balena/dockerignore": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", - "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", - "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^2.4.1" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz", - "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": "^14 || ^16 || >=18" - } - }, - "node_modules/@csstools/media-query-list-parser": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz", - "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.7.1", - "@csstools/css-tokenizer": "^2.4.1" - } - }, - "node_modules/@csstools/selector-specificity": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", - "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": "^14 || ^16 || >=18" - }, - "peerDependencies": { - "postcss-selector-parser": "^6.0.13" - } - }, - "node_modules/@es-joy/jsdoccomment": { - "version": "0.40.1", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.40.1.tgz", - "integrity": "sha512-YORCdZSusAlBrFpZ77pJjc5r1bQs5caPWtAu+WWmiSo+8XaUzseapVrfAtiRFbQWnrBxxLLEwF6f6ZG/UgCQCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "comment-parser": "1.4.0", - "esquery": "^1.5.0", - "jsdoc-type-pratt-parser": "~4.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", - "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", - "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", - "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", - "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", - "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", - "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", - "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", - "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", - "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", - "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", - "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", - "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", - "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", - "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", - "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", - "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", - "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", - "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", - "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", - "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", - "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", - "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", - "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", - "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/@fortawesome/fontawesome-common-types": { - "version": "0.2.36", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz", - "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/fontawesome-svg-core": { - "version": "1.2.36", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz", - "integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@fortawesome/fontawesome-common-types": "^0.2.36" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/free-regular-svg-icons": { - "version": "5.15.4", - "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.15.4.tgz", - "integrity": "sha512-9VNNnU3CXHy9XednJ3wzQp6SwNwT3XaM26oS4Rp391GsxVYA+0oDR2J194YCIWf7jNRCYKjUCOduxdceLrx+xw==", - "dev": true, - "hasInstallScript": true, - "license": "(CC-BY-4.0 AND MIT)", - "dependencies": { - "@fortawesome/fontawesome-common-types": "^0.2.36" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/free-solid-svg-icons": { - "version": "5.15.4", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4.tgz", - "integrity": "sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==", - "dev": true, - "hasInstallScript": true, - "license": "(CC-BY-4.0 AND MIT)", - "dependencies": { - "@fortawesome/fontawesome-common-types": "^0.2.36" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/vue-fontawesome": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.8.tgz", - "integrity": "sha512-yyHHAj4G8pQIDfaIsMvQpwKMboIZtcHTUvPqXjOHyldh1O1vZfH4W03VDPv5RvI9P6DLTzJQlmVgj9wCf7c2Fw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@fortawesome/fontawesome-svg-core": "~1 || ~6", - "vue": ">= 3.0.0 < 4" - } - }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "license": "MIT", - "optional": true - }, - "node_modules/@grpc/grpc-js": { - "version": "1.8.22", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.22.tgz", - "integrity": "sha512-oAjDdN7fzbUi+4hZjKG96MR6KTEubAeMpQEb+77qy+3r0Ua5xTFuie6JOLr4ZZgl5g+W5/uRTS2M1V8mVAFPuA==", - "license": "Apache-2.0", - "dependencies": { - "@grpc/proto-loader": "^0.7.0", - "@types/node": ">=12.12.47" - }, - "engines": { - "node": "^8.13.0 || >=10.10.0" - } - }, - "node_modules/@grpc/proto-loader": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", - "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", - "license": "Apache-2.0", - "dependencies": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.2.5", - "yargs": "^17.7.2" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@intlify/core-base": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.2.tgz", - "integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@intlify/devtools-if": "9.2.2", - "@intlify/message-compiler": "9.2.2", - "@intlify/shared": "9.2.2", - "@intlify/vue-devtools": "9.2.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@intlify/devtools-if": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.2.tgz", - "integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@intlify/shared": "9.2.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@intlify/message-compiler": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.2.tgz", - "integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@intlify/shared": "9.2.2", - "source-map": "0.6.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@intlify/shared": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.2.tgz", - "integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/@intlify/vue-devtools": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz", - "integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@intlify/core-base": "9.2.2", - "@intlify/shared": "9.2.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@js-joda/core": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.6.3.tgz", - "integrity": "sha512-T1rRxzdqkEXcou0ZprN1q9yDRlvzCPLqmlNt5IIsGBzoEVgLCCYrKEwc84+TvsXuAc95VAZwtWD2zVsKPY4bcA==", - "license": "BSD-3-Clause" - }, - "node_modules/@kurkle/color": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", - "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@louislam/ping": { - "version": "0.4.4-mod.1", - "resolved": "https://registry.npmjs.org/@louislam/ping/-/ping-0.4.4-mod.1.tgz", - "integrity": "sha512-uMq6qwL9/VYh2YBbDEhM7ZzJ8YON+juw/3k+28P3s9ue3uDMQ56MNPfywXoRpsxkU8RgjN0TDzEhQDzO1WisMw==", - "license": "MIT", - "dependencies": { - "command-exists": "~1.2.9", - "underscore": "~1.13.6" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@louislam/sqlite3": { - "version": "15.1.6", - "resolved": "https://registry.npmjs.org/@louislam/sqlite3/-/sqlite3-15.1.6.tgz", - "integrity": "sha512-cVf7hcMrfywYnycatLvorngTFpL3BSWvEy7/NrEfcTyQX8xxj9fdeD553oCTv5fIAk85fluo6mzPq89V3YzrVA==", - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.0", - "node-addon-api": "^4.2.0", - "tar": "^6.1.11" - }, - "optionalDependencies": { - "node-gyp": "8.x" - }, - "peerDependencies": { - "node-gyp": "8.x" - }, - "peerDependenciesMeta": { - "node-gyp": { - "optional": true - } - } - }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", - "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", - "license": "BSD-3-Clause", - "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/@mongodb-js/saslprep": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", - "integrity": "sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==", - "license": "MIT", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - } - }, - "node_modules/@noble/ciphers": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.2.0.tgz", - "integrity": "sha512-6YBxJDAapHSdd3bLDv6x2wRPwq4QFMUaB3HvljNBUTThDd12eSm7/3F+2lnfzx2jvM+S6Nsy0jEt9QbPqSwqRw==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/curves": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", - "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.3.1" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", - "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "license": "ISC", - "optional": true, - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "license": "MIT", - "optional": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3" - } - }, - "node_modules/@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.21.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", - "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.40.0" - }, - "peerDependencies": { - "@octokit/core": ">=2" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "5.16.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", - "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.39.0", - "deprecation": "^2.3.1" - }, - "peerDependencies": { - "@octokit/core": ">=3" - } - }, - "node_modules/@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@playwright/test": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.39.0.tgz", - "integrity": "sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ==", - "deprecated": "Please update to the latest version of Playwright to test up-to-date browsers.", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright": "1.39.0" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.28", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", - "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@popperjs/core": { - "version": "2.10.2", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", - "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", - "license": "BSD-3-Clause" - }, - "node_modules/@redis/bloom": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.1.0.tgz", - "integrity": "sha512-9QovlxmpRtvxVbN0UBcv8WfdSMudNZZTFqCsnBszcQXqaZb/TVe30ScgGEO7u1EAIacTPAo7/oCYjYAxiHLanQ==", - "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" - } - }, - "node_modules/@redis/client": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.4.2.tgz", - "integrity": "sha512-oUdEjE0I7JS5AyaAjkD3aOXn9NhO7XKyPyXEyrgFDu++VrVBHUPnV6dgEya9TcMuj5nIJRuCzCm8ZP+c9zCHPw==", - "license": "MIT", - "dependencies": { - "cluster-key-slot": "1.1.1", - "generic-pool": "3.9.0", - "yallist": "4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@redis/client/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, - "node_modules/@redis/graph": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz", - "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==", - "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" - } - }, - "node_modules/@redis/json": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz", - "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==", - "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" - } - }, - "node_modules/@redis/search": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.0.tgz", - "integrity": "sha512-NyFZEVnxIJEybpy+YskjgOJRNsfTYqaPbK/Buv6W2kmFNaRk85JiqjJZA5QkRmWvGbyQYwoO5QfDi2wHskKrQQ==", - "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" - } - }, - "node_modules/@redis/time-series": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.4.tgz", - "integrity": "sha512-ThUIgo2U/g7cCuZavucQTQzA9g9JbDDY2f64u3AbAoz/8vE2lt2U37LamDUVChhaDA3IRT9R6VvJwqnUfTJzng==", - "license": "MIT", - "peerDependencies": { - "@redis/client": "^1.0.0" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz", - "integrity": "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.5.tgz", - "integrity": "sha512-SU5cvamg0Eyu/F+kLeMXS7GoahL+OoizlclVFX3l5Ql6yNlywJJ0OuqTzUx0v+aHhPHEB/56CT06GQrRrGNYww==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.5.tgz", - "integrity": "sha512-S4pit5BP6E5R5C8S6tgU/drvgjtYW76FBuG6+ibG3tMvlD1h9LHVF9KmlmaUBQ8Obou7hEyS+0w+IR/VtxwNMQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.5.tgz", - "integrity": "sha512-250ZGg4ipTL0TGvLlfACkIxS9+KLtIbn7BCZjsZj88zSg2Lvu3Xdw6dhAhfe/FjjXPVNCtcSp+WZjVsD3a/Zlw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.5.tgz", - "integrity": "sha512-D8brJEFg5D+QxFcW6jYANu+Rr9SlKtTenmsX5hOSzNYVrK5oLAEMTUgKWYJP+wdKyCdeSwnapLsn+OVRFycuQg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.5.tgz", - "integrity": "sha512-PNqXYmdNFyWNg0ma5LdY8wP+eQfdvyaBAojAXgO7/gs0Q/6TQJVXAXe8gwW9URjbS0YAammur0fynYGiWsKlXw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.5.tgz", - "integrity": "sha512-kSSCZOKz3HqlrEuwKd9TYv7vxPYD77vHSUvM2y0YaTGnFc8AdI5TTQRrM1yIp3tXCKrSL9A7JLoILjtad5t8pQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.5.tgz", - "integrity": "sha512-oTXQeJHRbOnwRnRffb6bmqmUugz0glXaPyspp4gbQOPVApdpRrY/j7KP3lr7M8kTfQTyrBUzFjj5EuHAhqH4/w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.5.tgz", - "integrity": "sha512-qnOTIIs6tIGFKCHdhYitgC2XQ2X25InIbZFor5wh+mALH84qnFHvc+vmWUpyX97B0hNvwNUL4B+MB8vJvH65Fw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.5.tgz", - "integrity": "sha512-TMYu+DUdNlgBXING13rHSfUc3Ky5nLPbWs4bFnT+R6Vu3OvXkTkixvvBKk8uO4MT5Ab6lC3U7x8S8El2q5o56w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.5.tgz", - "integrity": "sha512-PTQq1Kz22ZRvuhr3uURH+U/Q/a0pbxJoICGSprNLAoBEkyD3Sh9qP5I0Asn0y0wejXQBbsVMRZRxlbGFD9OK4A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.5.tgz", - "integrity": "sha512-bR5nCojtpuMss6TDEmf/jnBnzlo+6n1UhgwqUvRoe4VIotC7FG1IKkyJbwsT7JDsF2jxR+NTnuOwiGv0hLyDoQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.5.tgz", - "integrity": "sha512-N0jPPhHjGShcB9/XXZQWuWBKZQnC1F36Ce3sDqWpujsGjDz/CQtOL9LgTrJ+rJC8MJeesMWrMWVLKKNR/tMOCA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.5.tgz", - "integrity": "sha512-uBa2e28ohzNNwjr6Uxm4XyaA1M/8aTgfF2T7UIlElLaeXkgpmIJ2EitVNQxjO9xLLLy60YqAgKn/AqSpCUkE9g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.5.tgz", - "integrity": "sha512-RXT8S1HP8AFN/Kr3tg4fuYrNxZ/pZf1HemC5Tsddc6HzgGnJm0+Lh5rAHJkDuW3StI0ynNXukidROMXYl6ew8w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.5.tgz", - "integrity": "sha512-ElTYOh50InL8kzyUD6XsnPit7jYCKrphmddKAe1/Ytt74apOxDq5YEcbsiKs0fR3vff3jEneMM+3I7jbqaMyBg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.5.tgz", - "integrity": "sha512-+lvL/4mQxSV8MukpkKyyvfwhH266COcWlXE/1qxwN08ajovta3459zrjLghYMgDerlzNwLAcFpvU+WWE5y6nAQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@scure/base": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", - "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT" - }, - "node_modules/@scure/bip32": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz", - "integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==", - "license": "MIT", - "dependencies": { - "@noble/curves": "~1.1.0", - "@noble/hashes": "~1.3.1", - "@scure/base": "~1.1.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", - "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "~1.3.0", - "@scure/base": "~1.1.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@sideway/address": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@smithy/abort-controller": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.4.tgz", - "integrity": "sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/config-resolver": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.8.tgz", - "integrity": "sha512-Tv1obAC18XOd2OnDAjSWmmthzx6Pdeh63FbLin8MlPiuJ2ATpKkq0NcNOJFr0dO+JmZXnwu8FQxKJ3TKJ3Hulw==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.4.6.tgz", - "integrity": "sha512-6lQQp99hnyuNNIzeTYSzCUXJHwvvFLY7hfdFGSJM95tjRDJGfzWYFRBXPaM9766LiiTsQ561KErtbufzUFSYUg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/middleware-endpoint": "^3.1.3", - "@smithy/middleware-retry": "^3.0.21", - "@smithy/middleware-serde": "^3.0.6", - "@smithy/protocol-http": "^4.1.3", - "@smithy/smithy-client": "^3.3.5", - "@smithy/types": "^3.4.2", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/credential-provider-imds": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.3.tgz", - "integrity": "sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/fetch-http-handler": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.8.tgz", - "integrity": "sha512-Lqe0B8F5RM7zkw//6avq1SJ8AfaRd3ubFUS1eVp5WszV7p6Ne5hQ4dSuMHDpNRPhgTvj4va9Kd/pcVigHEHRow==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/protocol-http": "^4.1.3", - "@smithy/querystring-builder": "^3.0.6", - "@smithy/types": "^3.4.2", - "@smithy/util-base64": "^3.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/hash-node": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.6.tgz", - "integrity": "sha512-c/FHEdKK/7DU2z6ZE91L36ahyXWayR3B+FzELjnYq7wH5YqIseM24V+pWCS9kFn1Ln8OFGTf+pyYPiHZuX0s/Q==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/invalid-dependency": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.6.tgz", - "integrity": "sha512-czM7Ioq3s8pIXht7oD+vmgy4Wfb4XavU/k/irO8NdXFFOx7YAlsCCcKOh/lJD1mJSYQqiR7NmpZ9JviryD/7AQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/is-array-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", - "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/middleware-content-length": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.8.tgz", - "integrity": "sha512-VuyszlSO49WKh3H9/kIO2kf07VUwGV80QRiaDxUfP8P8UKlokz381ETJvwLhwuypBYhLymCYyNhB3fLAGBX2og==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/middleware-endpoint": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.3.tgz", - "integrity": "sha512-KeM/OrK8MVFUsoJsmCN0MZMVPjKKLudn13xpgwIMpGTYpA8QZB2Xq5tJ+RE6iu3A6NhOI4VajDTwBsm8pwwrhg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/middleware-serde": "^3.0.6", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "@smithy/url-parser": "^3.0.6", - "@smithy/util-middleware": "^3.0.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/middleware-retry": { - "version": "3.0.21", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.21.tgz", - "integrity": "sha512-/h0fElV95LekVVEJuSw+aI11S1Y3zIUwBc6h9ZbUv43Gl2weXsbQwjLoet6j/Qtb0phfrSxS6pNg6FqgJOWZkA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/protocol-http": "^4.1.3", - "@smithy/service-error-classification": "^3.0.6", - "@smithy/smithy-client": "^3.3.5", - "@smithy/types": "^3.4.2", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-retry": "^3.0.6", - "tslib": "^2.6.2", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/middleware-retry/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "optional": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@smithy/middleware-serde": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.6.tgz", - "integrity": "sha512-KKTUSl1MzOM0MAjGbudeaVNtIDo+PpekTBkCNwvfZlKndodrnvRo+00USatiyLOc0ujjO9UydMRu3O9dYML7ag==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/middleware-stack": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.6.tgz", - "integrity": "sha512-2c0eSYhTQ8xQqHMcRxLMpadFbTXg6Zla5l0mwNftFCZMQmuhI7EbAJMx6R5eqfuV3YbJ3QGyS3d5uSmrHV8Khg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/node-config-provider": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz", - "integrity": "sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/property-provider": "^3.1.6", - "@smithy/shared-ini-file-loader": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/node-http-handler": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.2.3.tgz", - "integrity": "sha512-/gcm5DJ3k1b1zEInzBGAZC8ntJ+jwrz1NcSIu+9dSXd1FfG0G6QgkDI40tt8/WYUbHtLyo8fEqtm2v29koWo/w==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/abort-controller": "^3.1.4", - "@smithy/protocol-http": "^4.1.3", - "@smithy/querystring-builder": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/property-provider": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", - "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/protocol-http": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.3.tgz", - "integrity": "sha512-GcbMmOYpH9iRqtC05RbRnc/0FssxSTHlmaNhYBTgSgNCYpdR3Kt88u5GAZTBmouzv+Zlj/VRv92J9ruuDeJuEw==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/querystring-builder": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.6.tgz", - "integrity": "sha512-sQe08RunoObe+Usujn9+R2zrLuQERi3CWvRO3BvnoWSYUaIrLKuAIeY7cMeDax6xGyfIP3x/yFWbEKSXvOnvVg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "@smithy/util-uri-escape": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/querystring-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.6.tgz", - "integrity": "sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/service-error-classification": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.6.tgz", - "integrity": "sha512-53SpchU3+DUZrN7J6sBx9tBiCVGzsib2e4sc512Q7K9fpC5zkJKs6Z9s+qbMxSYrkEkle6hnMtrts7XNkMJJMg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/types": "^3.4.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz", - "integrity": "sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/signature-v4": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.4.tgz", - "integrity": "sha512-72MiK7xYukNsnLJI9NqvUHqTu0ziEsfMsYNlWpiJfuGQnCTFKpckThlEatirvcA/LmT1h7rRO+pJD06PYsPu9Q==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-middleware": "^3.0.6", - "@smithy/util-uri-escape": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/smithy-client": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.3.5.tgz", - "integrity": "sha512-7IZi8J3Dr9n3tX+lcpmJ/5tCYIqoXdblFBaPuv0SEKZFRpCxE+TqIWL6I3t7jLlk9TWu3JSvEZAhtjB9yvB+zA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/middleware-endpoint": "^3.1.3", - "@smithy/middleware-stack": "^3.0.6", - "@smithy/protocol-http": "^4.1.3", - "@smithy/types": "^3.4.2", - "@smithy/util-stream": "^3.1.8", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/types": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", - "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/url-parser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.6.tgz", - "integrity": "sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/querystring-parser": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/util-base64": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", - "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-body-length-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", - "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/util-body-length-node": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", - "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-buffer-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", - "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-config-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", - "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-browser": { - "version": "3.0.21", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.21.tgz", - "integrity": "sha512-M/FhTBk4c/SsB91dD/M4gMGfJO7z/qJaM9+XQQIqBOf4qzZYMExnP7R4VdGwxxH8IKMGW+8F0I4rNtVRrcfPoA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/property-provider": "^3.1.6", - "@smithy/smithy-client": "^3.3.5", - "@smithy/types": "^3.4.2", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-node": { - "version": "3.0.21", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.21.tgz", - "integrity": "sha512-NiLinPvF86U3S2Pdx/ycqd4bnY5dmFSPNL5KYRwbNjqQFS09M5Wzqk8BNk61/47xCYz1X/6KeiSk9qgYPTtuDw==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/config-resolver": "^3.0.8", - "@smithy/credential-provider-imds": "^3.2.3", - "@smithy/node-config-provider": "^3.1.7", - "@smithy/property-provider": "^3.1.6", - "@smithy/smithy-client": "^3.3.5", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@smithy/util-endpoints": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.2.tgz", - "integrity": "sha512-FEISzffb4H8DLzGq1g4MuDpcv6CIG15fXoQzDH9SjpRJv6h7J++1STFWWinilG0tQh9H1v2UKWG19Jjr2B16zQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/node-config-provider": "^3.1.7", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-hex-encoding": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", - "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-middleware": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.6.tgz", - "integrity": "sha512-BxbX4aBhI1O9p87/xM+zWy0GzT3CEVcXFPBRDoHAM+pV0eSW156pR+PSYEz0DQHDMYDsYAflC2bQNz2uaDBUZQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-retry": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.6.tgz", - "integrity": "sha512-BRZiuF7IwDntAbevqMco67an0Sr9oLQJqqRCsSPZZHYRnehS0LHDAkJk/pSmI7Z8c/1Vet294H7fY2fWUgB+Rg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/service-error-classification": "^3.0.6", - "@smithy/types": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-stream": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.8.tgz", - "integrity": "sha512-hoKOqSmb8FD3WLObuB5hwbM7bNIWgcnvkThokTvVq7J5PKjlLUK5qQQcB9zWLHIoSaIlf3VIv2OxZY2wtQjcRQ==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/fetch-http-handler": "^3.2.8", - "@smithy/node-http-handler": "^3.2.3", - "@smithy/types": "^3.4.2", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-uri-escape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", - "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", - "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", - "license": "MIT" - }, - "node_modules/@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", - "license": "MIT", - "dependencies": { - "defer-to-connect": "^2.0.1" - }, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/@tediousjs/connection-string": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@tediousjs/connection-string/-/connection-string-0.5.0.tgz", - "integrity": "sha512-7qSgZbincDDDFyRweCIEvZULFAw5iz/DeunhvuxpL31nfntX3P4Yd4HkHBRg9H8CdqY1e5WFN1PZIz/REL9MVQ==", - "license": "MIT" - }, - "node_modules/@testcontainers/hivemq": { - "version": "10.13.1", - "resolved": "https://registry.npmjs.org/@testcontainers/hivemq/-/hivemq-10.13.1.tgz", - "integrity": "sha512-LvXx+l6XEOckAX9GwD4+WQgo/Y5jITDAfyultLd9jMl/OlzBU6sLfHl/vYFjG17xZObiXznGDrKVQYIp70wxZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "testcontainers": "^10.13.1" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@types/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/bootstrap": { - "version": "5.1.13", - "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-5.1.13.tgz", - "integrity": "sha512-1hIIOgfkMlyQCQz/3ae53xr6ZN2d6EDj/n3G+Sh/LBsBUVigyDmnCbLwsaXJJ1GBGlkjgfXVoyIvEPowQw25xQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@popperjs/core": "^2.9.2" - } - }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "license": "MIT", - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/content-disposition": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.8.tgz", - "integrity": "sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==", - "license": "MIT" - }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "license": "MIT" - }, - "node_modules/@types/cookies": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.9.0.tgz", - "integrity": "sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==", - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/express": "*", - "@types/keygrip": "*", - "@types/node": "*" - } - }, - "node_modules/@types/cors": { - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/docker-modem": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.6.tgz", - "integrity": "sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/ssh2": "*" - } - }, - "node_modules/@types/dockerode": { - "version": "3.3.31", - "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.3.31.tgz", - "integrity": "sha512-42R9eoVqJDSvVspV89g7RwRqfNExgievLNWoHkg7NoWIqAmavIbgQBb4oc0qRtHkxE+I3Xxvqv7qVXFABKPBTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/docker-modem": "*", - "@types/node": "*", - "@types/ssh2": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.6", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", - "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/http-assert": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.5.tgz", - "integrity": "sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g==", - "license": "MIT" - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", - "license": "MIT" - }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/keygrip": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.6.tgz", - "integrity": "sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==", - "license": "MIT" - }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/koa": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.15.0.tgz", - "integrity": "sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==", - "license": "MIT", - "dependencies": { - "@types/accepts": "*", - "@types/content-disposition": "*", - "@types/cookies": "*", - "@types/http-assert": "*", - "@types/http-errors": "*", - "@types/keygrip": "*", - "@types/koa-compose": "*", - "@types/node": "*" - } - }, - "node_modules/@types/koa-compose": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.8.tgz", - "integrity": "sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==", - "license": "MIT", - "dependencies": { - "@types/koa": "*" - } - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "license": "MIT" - }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "20.16.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.10.tgz", - "integrity": "sha512-vQUKgWTjEIRFCvK6CyriPH3MZYiYlNy0fKiEYHWbcoWLEgs4opurGGKlebrTLqdSMIbXImH6XExNiIyNUv3WpA==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/qs": { - "version": "6.9.16", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", - "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "license": "MIT" - }, - "node_modules/@types/readable-stream": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.15.tgz", - "integrity": "sha512-oAZ3kw+kJFkEqyh7xORZOku1YAKvsFTogRY8kVl4vHpEKiDkfnSA/My8haRE7fvmix5Zyy+1pwzOi7yycGLBJw==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "safe-buffer": "~5.1.1" - } - }, - "node_modules/@types/responselike": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", - "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "license": "MIT", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } - }, - "node_modules/@types/ssh2": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.15.1.tgz", - "integrity": "sha512-ZIbEqKAsi5gj35y4P4vkJYly642wIbY6PqoN0xiyQGshKUGXR9WQjF/iF9mXBQ8uBKy3ezfsCkcoHKhd0BzuDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "^18.11.18" - } - }, - "node_modules/@types/ssh2-streams": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@types/ssh2-streams/-/ssh2-streams-0.1.12.tgz", - "integrity": "sha512-Sy8tpEmCce4Tq0oSOYdfqaBpA3hDM8SoxoFh5vzFsu2oL+znzGz8oVWW7xb4K920yYMUY+PIG31qZnFMfPWNCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ssh2/node_modules/@types/node": { - "version": "18.19.54", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.54.tgz", - "integrity": "sha512-+BRgt0G5gYjTvdLac9sIeE0iZcJxi4Jc4PV5EUzqi+88jmQLr+fRZdv2tCTV7IHKSGxM6SaLoOXQWWUiLUItMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/ssh2/node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/webidl-conversions": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", - "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", - "license": "MIT" - }, - "node_modules/@types/whatwg-url": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", - "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/webidl-conversions": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@vitejs/plugin-vue": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.5.tgz", - "integrity": "sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "vite": "^5.0.0", - "vue": "^3.2.25" - } - }, - "node_modules/@vue/babel-helper-vue-transform-on": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.5.tgz", - "integrity": "sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vue/babel-plugin-jsx": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.5.tgz", - "integrity": "sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/plugin-syntax-jsx": "^7.24.7", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.6", - "@babel/types": "^7.25.6", - "@vue/babel-helper-vue-transform-on": "1.2.5", - "@vue/babel-plugin-resolve-type": "1.2.5", - "html-tags": "^3.3.1", - "svg-tags": "^1.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - } - } - }, - "node_modules/@vue/babel-plugin-resolve-type": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.5.tgz", - "integrity": "sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/parser": "^7.25.6", - "@vue/compiler-sfc": "^3.5.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-core": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.10.tgz", - "integrity": "sha512-iXWlk+Cg/ag7gLvY0SfVucU8Kh2CjysYZjhhP70w9qI4MvSox4frrP+vDGvtQuzIcgD8+sxM6lZvCtdxGunTAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.10", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-dom": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.10.tgz", - "integrity": "sha512-DyxHC6qPcktwYGKOIy3XqnHRrrXyWR2u91AjP+nLkADko380srsC2DC3s7Y1Rk6YfOlxOlvEQKa9XXmLI+W4ZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/compiler-core": "3.5.10", - "@vue/shared": "3.5.10" - } - }, - "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-sfc": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.10.tgz", - "integrity": "sha512-to8E1BgpakV7224ZCm8gz1ZRSyjNCAWEplwFMWKlzCdP9DkMKhRRwt0WkCjY7jkzi/Vz3xgbpeig5Pnbly4Tow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.25.3", - "@vue/compiler-core": "3.5.10", - "@vue/compiler-dom": "3.5.10", - "@vue/compiler-ssr": "3.5.10", - "@vue/shared": "3.5.10", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.11", - "postcss": "^8.4.47", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-ssr": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.10.tgz", - "integrity": "sha512-hxP4Y3KImqdtyUKXDRSxKSRkSm1H9fCvhojEYrnaoWhE4w/y8vwWhnosJoPPe2AXm5sU7CSbYYAgkt2ZPhDz+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.5.10", - "@vue/shared": "3.5.10" - } - }, - "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/shared": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.10.tgz", - "integrity": "sha512-VkkBhU97Ki+XJ0xvl4C9YJsIZ2uIlQ7HqPpZOS3m9VCvmROPaChZU6DexdMJqvz9tbgG+4EtFVrSuailUq5KGQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vue/compiler-core": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz", - "integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.24.7", - "@vue/shared": "3.4.38", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz", - "integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/compiler-core": "3.4.38", - "@vue/shared": "3.4.38" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz", - "integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.24.7", - "@vue/compiler-core": "3.4.38", - "@vue/compiler-dom": "3.4.38", - "@vue/compiler-ssr": "3.4.38", - "@vue/shared": "3.4.38", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.10", - "postcss": "^8.4.40", - "source-map-js": "^1.2.0" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz", - "integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.4.38", - "@vue/shared": "3.4.38" - } - }, - "node_modules/@vue/devtools-api": { - "version": "6.6.4", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", - "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vue/devtools-core": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.4.6.tgz", - "integrity": "sha512-7ATNPEbVqThOOAp2bg/YUIm9MqqgimbSk24D05hdXUp89JlXX12aTzdrWd9xZRwS78hDR+wCToHl1C/8sopBrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/devtools-kit": "^7.4.6", - "@vue/devtools-shared": "^7.4.6", - "mitt": "^3.0.1", - "nanoid": "^3.3.4", - "pathe": "^1.1.2", - "vite-hot-client": "^0.2.3" - }, - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/@vue/devtools-kit": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.4.6.tgz", - "integrity": "sha512-NbYBwPWgEic1AOd9bWExz9weBzFdjiIfov0yRn4DrRfR+EQJCI9dn4I0XS7IxYGdkmUJi8mFW42LLk18WsGqew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/devtools-shared": "^7.4.6", - "birpc": "^0.2.17", - "hookable": "^5.5.3", - "mitt": "^3.0.1", - "perfect-debounce": "^1.0.0", - "speakingurl": "^14.0.1", - "superjson": "^2.2.1" - } - }, - "node_modules/@vue/devtools-shared": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.4.6.tgz", - "integrity": "sha512-rPeSBzElnHYMB05Cc056BQiJpgocQjY8XVulgni+O9a9Gr9tNXgPteSzFFD+fT/iWMxNuUgGKs9CuW5DZewfIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "rfdc": "^1.4.1" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.38.tgz", - "integrity": "sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/shared": "3.4.38" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.38.tgz", - "integrity": "sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/reactivity": "3.4.38", - "@vue/shared": "3.4.38" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.38.tgz", - "integrity": "sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/reactivity": "3.4.38", - "@vue/runtime-core": "3.4.38", - "@vue/shared": "3.4.38", - "csstype": "^3.1.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.38.tgz", - "integrity": "sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/compiler-ssr": "3.4.38", - "@vue/shared": "3.4.38" - }, - "peerDependencies": { - "vue": "3.4.38" - } - }, - "node_modules/@vue/shared": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.38.tgz", - "integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vuepic/vue-datepicker": { - "version": "3.4.8", - "resolved": "https://registry.npmjs.org/@vuepic/vue-datepicker/-/vue-datepicker-3.4.8.tgz", - "integrity": "sha512-nbuMA7IgjtT99LqcjSTSUcl7omTZSB+7vYSWQ9gQm31Frm/1wn54fT1Q0HaRD9nHXX982AACbqeND4K80SKONw==", - "dev": true, - "license": "MIT", - "dependencies": { - "date-fns": "^2.29.2" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "vue": ">=3.2.0" - } - }, - "node_modules/@vvo/tzdb": { - "version": "6.145.0", - "resolved": "https://registry.npmjs.org/@vvo/tzdb/-/tzdb-6.145.0.tgz", - "integrity": "sha512-X3DTmeEzsZi/ZkYXofW04t1bFInYUk6SJBuNWPvV9wjCp9fI2C2n6OTDT9+YLKCJTosolMx1YKZWMJQykJerPQ==", - "license": "MIT" - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "license": "ISC" - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/aedes": { - "version": "0.46.3", - "resolved": "https://registry.npmjs.org/aedes/-/aedes-0.46.3.tgz", - "integrity": "sha512-i3B+H74uNRhlqcs/JdrMp7e3daz4Cwls0x4yLcfjGXz2tIwnxhF6od4m86O6yyNdz/Gg3jfY3q0sc/Cz8qzg6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "aedes-packet": "^2.3.1", - "aedes-persistence": "^8.1.3", - "bulk-write-stream": "^2.0.1", - "end-of-stream": "^1.4.4", - "fastfall": "^1.5.1", - "fastparallel": "^2.4.1", - "fastseries": "^2.0.0", - "hyperid": "^3.0.0", - "mqemitter": "^4.5.0", - "mqtt-packet": "^7.1.2", - "readable-stream": "^3.6.0", - "retimer": "^3.0.0", - "reusify": "^1.0.4", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/aedes-packet": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/aedes-packet/-/aedes-packet-2.3.1.tgz", - "integrity": "sha512-LqBd57uc2rui2RbjycW17dylglejG26mM4ewVXGNDnVp/SUHFVEgm7d1HTmYrnSkSCNoHti042qgcTwv/F+BtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mqtt-packet": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/aedes-packet/node_modules/mqtt-packet": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz", - "integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.0.2", - "debug": "^4.1.1", - "process-nextick-args": "^2.0.1" - } - }, - "node_modules/aedes-persistence": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/aedes-persistence/-/aedes-persistence-8.1.3.tgz", - "integrity": "sha512-VMCjEV+2g1TNJb/IlDEUy6SP9crT+QUhe2xc6UjyqrFNBNgTvHmOefXY7FxWrwmR2QA02vwg3+5p/JXkyg/Dkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "aedes-packet": "^2.3.1", - "from2": "^2.3.0", - "qlobber": "^5.0.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/agentkeepalive": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", - "license": "MIT", - "optional": true, - "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "license": "MIT", - "optional": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/anafanafo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anafanafo/-/anafanafo-2.0.0.tgz", - "integrity": "sha512-Nlfq7NC4AOkTJerWRIZcOAiMNtIDVIGWGvQ98O7Jl6Kr2Dk0dX5u4MqN778kSRTy5KRqchpLdF2RtLFEz9FVkQ==", - "license": "MIT", - "dependencies": { - "char-width-table-consumer": "^1.0.0" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "license": "ISC" - }, - "node_modules/archiver": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", - "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "archiver-utils": "^5.0.2", - "async": "^3.2.4", - "buffer-crc32": "^1.0.0", - "readable-stream": "^4.0.0", - "readdir-glob": "^1.1.2", - "tar-stream": "^3.0.0", - "zip-stream": "^6.0.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/archiver-utils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", - "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob": "^10.0.0", - "graceful-fs": "^4.2.0", - "is-stream": "^2.0.1", - "lazystream": "^1.0.0", - "lodash": "^4.17.15", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/archiver-utils/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/archiver-utils/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/archiver-utils/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/archiver-utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/archiver-utils/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/archiver-utils/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/archiver/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/archiver/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/are-docs-informative": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", - "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/args-parser": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/args-parser/-/args-parser-1.3.0.tgz", - "integrity": "sha512-If3Zi4BSjlQIJ9fgAhSiKi0oJtgMzSqh0H4wvl7XSeO16FKx7QqaHld8lZeEajPX7y1C5qKKeNgyrfyvmjmjUQ==", - "license": "Apache-2.0" - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "license": "MIT" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/asn1-ber": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/asn1-ber/-/asn1-ber-1.2.2.tgz", - "integrity": "sha512-CbNem/7hxrjSiOAOOTX4iZxu+0m3jiLqlsERQwwPM1IDR/22M8IPpA1VVndCLw5KtjRYyRODbvAEIfuTogNDng==", - "license": "MIT" - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true, - "license": "MIT" - }, - "node_modules/async-lock": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz", - "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/await-lock": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", - "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==", - "license": "MIT" - }, - "node_modules/axios": { - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.28.1.tgz", - "integrity": "sha512-iUcGA5a7p0mVb4Gm/sy+FSECNkPFT4y7wt6OM/CDpO/OnNCvSs3PoMG8ibrC9jRoGYU0gUK5pXVC4NPXq6lHRQ==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/b4a": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/babel-plugin-add-module-exports": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz", - "integrity": "sha512-3AN/9V/rKuv90NG65m4tTHsI04XrCKsWbztIcW7a8H5iIN7WlvWucRtVV0V/rT4QvtA11n5Vmp20fLwfMWqp6g==", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-runtime/node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true, - "hasInstallScript": true, - "license": "MIT" - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true, - "license": "MIT" - }, - "node_modules/badge-maker": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/badge-maker/-/badge-maker-3.3.1.tgz", - "integrity": "sha512-OO/PS7Zg2E6qaUWzHEHt21Q5VjcFBAJVA8ztgT/fIdSZFBUwoyeo0ZhA6V5tUM8Vcjq8DJl6jfGhpjESssyqMQ==", - "license": "CC0-1.0", - "dependencies": { - "anafanafo": "2.0.0", - "css-color-converter": "^2.0.0" - }, - "bin": { - "badge": "lib/badge-cli.js" - }, - "engines": { - "node": ">= 10", - "npm": ">= 5" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/bare-events": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", - "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", - "dev": true, - "license": "Apache-2.0", - "optional": true - }, - "node_modules/bare-fs": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz", - "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "bare-events": "^2.0.0", - "bare-path": "^2.0.0", - "bare-stream": "^2.0.0" - } - }, - "node_modules/bare-os": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", - "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", - "dev": true, - "license": "Apache-2.0", - "optional": true - }, - "node_modules/bare-path": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", - "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "bare-os": "^2.1.0" - } - }, - "node_modules/bare-stream": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.3.0.tgz", - "integrity": "sha512-pVRWciewGUeCyKEuRxwv06M079r+fRjAQjBEK2P6OYGrO43O+Z0LrPZZEjlc4mB6C2RpZ9AxJ1s7NLEtOHO6eA==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "b4a": "^1.6.6", - "streamx": "^2.20.0" - } - }, - "node_modules/barse": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/barse/-/barse-0.4.3.tgz", - "integrity": "sha512-UEpvriJqAn8zuVinYICuKoPttZy3XxXEoqX/V2uYAL4zzJRuNzCK3+20nAu3YUIa2U7G53kf90wfBIp9/A+Odw==", - "license": "MIT", - "dependencies": { - "readable-stream": "~1.0.2" - } - }, - "node_modules/barse/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "license": "MIT" - }, - "node_modules/barse/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/barse/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "license": "MIT", - "engines": { - "node": "^4.5.0 || >= 5.9" - } - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "license": "MIT", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bcryptjs": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", - "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", - "license": "MIT" - }, - "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/binary-search": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/binary-search/-/binary-search-1.3.6.tgz", - "integrity": "sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA==", - "license": "CC0-1.0" - }, - "node_modules/bintrees": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", - "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==", - "license": "MIT" - }, - "node_modules/birpc": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.17.tgz", - "integrity": "sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" - }, - "node_modules/bootstrap": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", - "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - }, - "peerDependencies": { - "@popperjs/core": "^2.10.2" - } - }, - "node_modules/bowser": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", - "license": "MIT", - "optional": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", - "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001663", - "electron-to-chromium": "^1.5.28", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bson": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", - "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", - "license": "Apache-2.0", - "dependencies": { - "buffer": "^5.6.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", - "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "license": "BSD-3-Clause" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT" - }, - "node_modules/buildcheck": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz", - "integrity": "sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==", - "dev": true, - "optional": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bulk-write-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bulk-write-stream/-/bulk-write-stream-2.0.1.tgz", - "integrity": "sha512-XWOLjgHtpDasHfwM8oO4df1JoZwa7/OwTsXDzh4rUTo+9CowzeOFBZz43w+H14h1fyq+xl28tVIBrdjcjj4Gug==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/byline": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", - "integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "license": "ISC", - "optional": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "license": "ISC", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cacache/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC", - "optional": true - }, - "node_modules/cacheable-lookup": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.0.4.tgz", - "integrity": "sha512-mbcDEZCkv2CZF4G01kr8eBd/5agkt9oCqz75tJMSIsquvRZ2sL6Hi5zGVKi/0OSC9oO1GHfJ2AV0ZIOY9vye0A==", - "license": "MIT", - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "license": "MIT", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-keys": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", - "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^6.3.0", - "map-obj": "^4.1.0", - "quick-lru": "^5.1.1", - "type-fest": "^1.2.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-keys/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001664", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz", - "integrity": "sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/char-width-table-consumer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/char-width-table-consumer/-/char-width-table-consumer-1.0.0.tgz", - "integrity": "sha512-Fz4UD0LBpxPgL9i29CJ5O4KANwaMnX/OhhbxzvNa332h+9+nRKyeuLw4wA51lt/ex67+/AdsoBQJF3kgX2feYQ==", - "license": "MIT", - "dependencies": { - "binary-search": "^1.3.5" - } - }, - "node_modules/chardet": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-1.4.0.tgz", - "integrity": "sha512-NpwMDdSIprbYx1CLnfbxEIarI0Z+s9MssEgggMNheGM+WD68yOhV7IEA/3r6tr0yTRgQD0HuZJDw32s99i6L+A==", - "license": "MIT" - }, - "node_modules/chart.js": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.2.1.tgz", - "integrity": "sha512-6YbpQ0nt3NovAgOzbkSSeeAQu/3za1319dPUQTXn9WcOpywM8rGKxJHrhS8V8xEkAlk8YhEfjbuAPfUyp6jIsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@kurkle/color": "^0.3.0" - }, - "engines": { - "pnpm": "^7.0.0" - } - }, - "node_modules/chartjs-adapter-dayjs-4": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chartjs-adapter-dayjs-4/-/chartjs-adapter-dayjs-4-1.0.4.tgz", - "integrity": "sha512-yy9BAYW4aNzPVrCWZetbILegTRb7HokhgospPoC3b5iZ5qdlqNmXts2KdSp6AqnjkPAp/YWyHDxLvIvwt5x81w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "chart.js": ">=4.0.1", - "dayjs": "^1.9.7" - } - }, - "node_modules/check-password-strength": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/check-password-strength/-/check-password-strength-2.0.10.tgz", - "integrity": "sha512-HRM5ICPmtnNtLnTv2QrfVkq1IxI9z3bzYpDJ1k5ixwD9HtJGHuv265R6JmHOV6r8wLhQMlULnIUVpkrC2yaiCw==", - "license": "MIT" - }, - "node_modules/cheerio": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", - "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", - "license": "MIT", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.1.0", - "encoding-sniffer": "^0.2.0", - "htmlparser2": "^9.1.0", - "parse5": "^7.1.2", - "parse5-htmlparser2-tree-adapter": "^7.0.0", - "parse5-parser-stream": "^7.1.2", - "undici": "^6.19.5", - "whatwg-mimetype": "^4.0.0" - }, - "engines": { - "node": ">=18.17" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cheerio/node_modules/undici": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", - "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", - "license": "MIT", - "engines": { - "node": ">=18.17" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/chroma-js": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz", - "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==", - "license": "(BSD-3-Clause AND Apache-2.0)" - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cluster-key-slot": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.1.tgz", - "integrity": "sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw==", - "license": "Apache-2.0", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "license": "MIT" - }, - "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/comment-parser": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.0.tgz", - "integrity": "sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/commist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/commist/-/commist-1.1.0.tgz", - "integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==", - "license": "MIT", - "dependencies": { - "leven": "^2.1.0", - "minimist": "^1.1.0" - } - }, - "node_modules/commist/node_modules/leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", - "license": "MIT" - }, - "node_modules/compress-commons": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", - "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "crc-32": "^1.2.0", - "crc32-stream": "^6.0.0", - "is-stream": "^2.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/compress-commons/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/compress-commons/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "license": "MIT", - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "engines": [ - "node >= 6.0" - ], - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concurrently": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz", - "integrity": "sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "date-fns": "^2.29.1", - "lodash": "^4.17.21", - "rxjs": "^7.0.0", - "shell-quote": "^1.7.3", - "spawn-command": "^0.0.2-1", - "supports-color": "^8.1.0", - "tree-kill": "^1.2.2", - "yargs": "^17.3.1" - }, - "bin": { - "conc": "dist/bin/concurrently.js", - "concurrently": "dist/bin/concurrently.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/concurrently/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/concurrently/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/concurrently/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "license": "ISC" - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "license": "MIT" - }, - "node_modules/copy-anything": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", - "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-what": "^4.1.8" - }, - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/core-js": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz", - "integrity": "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "license": "MIT" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/cpu-features": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.10.tgz", - "integrity": "sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "dependencies": { - "buildcheck": "~0.0.6", - "nan": "^2.19.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/crc32-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", - "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", - "dev": true, - "license": "MIT", - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/crc32-stream/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/crc32-stream/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/croner": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/croner/-/croner-8.1.2.tgz", - "integrity": "sha512-ypfPFcAXHuAZRCzo3vJL6ltENzniTjwe/qsLleH1V2/7SRDjgvRQyrLmumFTLmjFax4IuSxfGXEn79fozXcJog==", - "license": "MIT", - "engines": { - "node": ">=18.0" - } - }, - "node_modules/cronstrue": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-2.24.0.tgz", - "integrity": "sha512-A1of24mAGz+OWrdGsxT9BOnDqn2ba182hie8Jx0UcEC2t+ZKtfAJxaFntKUgR7sIisU297fgHBSlNhMIfvAkSA==", - "dev": true, - "license": "MIT", - "bin": { - "cronstrue": "bin/cli.js" - } - }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-color-converter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/css-color-converter/-/css-color-converter-2.0.0.tgz", - "integrity": "sha512-oLIG2soZz3wcC3aAl/7Us5RS8Hvvc6I8G8LniF/qfMmrm7fIKQ8RIDDRZeKyGL2SrWfNqYspuLShbnjBMVWm8g==", - "license": "MIT", - "dependencies": { - "color-convert": "^0.5.2", - "color-name": "^1.1.4", - "css-unit-converter": "^1.1.2" - } - }, - "node_modules/css-color-converter/node_modules/color-convert": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", - "integrity": "sha512-RwBeO/B/vZR3dfKL1ye/vx8MHZ40ugzpyfeVG5GsiuGnrlMWe2o8wxBbLCpw9CsxV+wHuzYlCiWnybrIA0ling==" - }, - "node_modules/css-color-converter/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/css-functions-list": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", - "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12 || >=16" - } - }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/css-unit-converter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", - "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==", - "license": "MIT" - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, - "license": "MIT" - }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", - "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, - "license": "MIT", - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "license": "MIT", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/default-browser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", - "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", - "dev": true, - "license": "MIT", - "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", - "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delay": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", - "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "license": "MIT" - }, - "node_modules/denque": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", - "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", - "license": "Apache-2.0", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/dev-null": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dev-null/-/dev-null-0.1.1.tgz", - "integrity": "sha512-nMNZG0zfMgmdv8S5O0TM5cpwNbGKRGPCxVsr0SmA3NZZy9CYBbuNLL0PD3Acx9e5LIUgwONXtM9kM6RlawPxEQ==", - "license": "MIT" - }, - "node_modules/dijkstrajs": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", - "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==", - "dev": true, - "license": "MIT" - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/dns2/-/dns2-2.0.5.tgz", - "integrity": "sha512-dznYrQU+Txcz++klGLBY9YR3WLOGHTy2vAKAqF+yYw1KaKFm5f5Y4jbbFEvohJf8YtZ0J2SzZlZx2k6LV4zJqQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/docker-compose": { - "version": "0.24.8", - "resolved": "https://registry.npmjs.org/docker-compose/-/docker-compose-0.24.8.tgz", - "integrity": "sha512-plizRs/Vf15H+GCVxq2EUvyPK7ei9b/cVesHvjnX4xaXjM9spHe2Ytq0BitndFgvTJ3E3NljPNUEl7BAN43iZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "yaml": "^2.2.2" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/docker-modem": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-3.0.8.tgz", - "integrity": "sha512-f0ReSURdM3pcKPNS30mxOHSbaFLcknGmQjwSfmbcdOw1XWKXVhukM3NJHhr7NpY9BIyyWQb0EBo3KQvvuU5egQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "debug": "^4.1.1", - "readable-stream": "^3.5.0", - "split-ca": "^1.0.1", - "ssh2": "^1.11.0" - }, - "engines": { - "node": ">= 8.0" - } - }, - "node_modules/dockerode": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-3.3.5.tgz", - "integrity": "sha512-/0YNa3ZDNeLr/tSckmD69+Gq+qVNhvKfAHNeZJBnp7EOP6RGKV8ORrJHkUn20So5wU+xxT7+1n5u8PjHbfjbSA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@balena/dockerignore": "^1.0.2", - "docker-modem": "^3.0.0", - "tar-fs": "~2.0.1" - }, - "engines": { - "node": ">= 8.0" - } - }, - "node_modules/dockerode/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true, - "license": "ISC" - }, - "node_modules/dockerode/node_modules/tar-fs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", - "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.0.0" - } - }, - "node_modules/dockerode/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/dompurify": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.7.tgz", - "integrity": "sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==", - "dev": true, - "license": "(MPL-2.0 OR Apache-2.0)" - }, - "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/duplexify": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", - "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.2" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.29", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz", - "integrity": "sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw==", - "dev": true, - "license": "ISC" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding-sniffer": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", - "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", - "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.3", - "whatwg-encoding": "^3.1.1" - }, - "funding": { - "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/engine.io": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.1.tgz", - "integrity": "sha512-NEpDCw9hrvBW+hVEOK4T7v0jFJ++KgtPl4jKFwsZVfG1XhS0dCrSb3VMb9gPAd7VAdW52VT1EnaNiU2vM8C0og==", - "license": "MIT", - "dependencies": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.17.1" - }, - "engines": { - "node": ">=10.2.0" - } - }, - "node_modules/engine.io-client": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.1.tgz", - "integrity": "sha512-aYuoak7I+R83M/BBPIOs2to51BmFIpC1wZe6zZzMrT2llVsHy5cvcmdsJgP2Qz6smHu+sD9oexiSUAVd8OfBPw==", - "license": "MIT", - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.17.1", - "xmlhttprequest-ssl": "~2.1.1" - } - }, - "node_modules/engine.io-client/node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/engine.io-parser": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", - "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/engine.io/node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/engine.io/node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "license": "MIT", - "optional": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/error-stack-parser-es": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-0.1.5.tgz", - "integrity": "sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", - "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.2", - "@esbuild/android-arm": "0.20.2", - "@esbuild/android-arm64": "0.20.2", - "@esbuild/android-x64": "0.20.2", - "@esbuild/darwin-arm64": "0.20.2", - "@esbuild/darwin-x64": "0.20.2", - "@esbuild/freebsd-arm64": "0.20.2", - "@esbuild/freebsd-x64": "0.20.2", - "@esbuild/linux-arm": "0.20.2", - "@esbuild/linux-arm64": "0.20.2", - "@esbuild/linux-ia32": "0.20.2", - "@esbuild/linux-loong64": "0.20.2", - "@esbuild/linux-mips64el": "0.20.2", - "@esbuild/linux-ppc64": "0.20.2", - "@esbuild/linux-riscv64": "0.20.2", - "@esbuild/linux-s390x": "0.20.2", - "@esbuild/linux-x64": "0.20.2", - "@esbuild/netbsd-x64": "0.20.2", - "@esbuild/openbsd-x64": "0.20.2", - "@esbuild/sunos-x64": "0.20.2", - "@esbuild/win32-arm64": "0.20.2", - "@esbuild/win32-ia32": "0.20.2", - "@esbuild/win32-x64": "0.20.2" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.14.0.tgz", - "integrity": "sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint/eslintrc": "^1.2.2", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-jsdoc": { - "version": "46.4.6", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.4.6.tgz", - "integrity": "sha512-z4SWYnJfOqftZI+b3RM9AtWL1vF/sLWE/LlO9yOKDof9yN2+n3zOdOJTGX/pRE/xnPsooOLG2Rq6e4d+XW3lNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@es-joy/jsdoccomment": "~0.40.1", - "are-docs-informative": "^0.0.2", - "comment-parser": "1.4.0", - "debug": "^4.3.4", - "escape-string-regexp": "^4.0.0", - "esquery": "^1.5.0", - "is-builtin-module": "^3.2.1", - "semver": "^7.5.4", - "spdx-expression-parse": "^3.0.1" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-plugin-vue": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz", - "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-utils": "^3.0.0", - "natural-compare": "^1.4.0", - "nth-check": "^2.0.1", - "postcss-selector-parser": "^6.0.9", - "semver": "^7.3.5", - "vue-eslint-parser": "^8.0.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/event-to-promise": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.7.0.tgz", - "integrity": "sha512-VOBBfyaADfe378ZzG0tgkzmsvzUyeU5arehrFzNRt5yaASUDshgctTwSrPI17ocAwR3+YftsxRClHF+GBKFByQ==", - "deprecated": "Use promise-toolbox/fromEvent instead", - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/express": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", - "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", - "license": "MIT", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.6.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express-basic-auth": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/express-basic-auth/-/express-basic-auth-1.2.1.tgz", - "integrity": "sha512-L6YQ1wQ/mNjVLAmK3AG1RK6VkokA1BIY6wmiH304Xtt/cLTps40EusZsU1Uop+v9lTDPxdtzbFmdXfFO3KEnwA==", - "license": "MIT", - "dependencies": { - "basic-auth": "^2.0.1" - } - }, - "node_modules/express-static-gzip": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/express-static-gzip/-/express-static-gzip-2.1.8.tgz", - "integrity": "sha512-g8tiJuI9Y9Ffy59ehVXvqb0hhP83JwZiLxzanobPaMbkB5qBWA8nuVgd+rcd5qzH3GkgogTALlc0BaADYwnMbQ==", - "license": "MIT", - "dependencies": { - "serve-static": "^1.16.2" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/express/node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz", - "integrity": "sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-xml-parser": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "license": "MIT", - "optional": true, - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastfall": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/fastfall/-/fastfall-1.5.1.tgz", - "integrity": "sha512-KH6p+Z8AKPXnmA7+Iz2Lh8ARCMr+8WNPVludm1LGkZoD2MjY6LVnRMtTKhkdzI+jr0RzQWXKzKyBJm1zoHEL4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "reusify": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fastparallel": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/fastparallel/-/fastparallel-2.4.1.tgz", - "integrity": "sha512-qUmhxPgNHmvRjZKBFUNI0oZuuH9OlSIOXmJ98lhKPxMZZ7zS/Fi0wRHOihDSz0R1YiIOjxzOY4bq65YTcdBi2Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4", - "xtend": "^4.0.2" - } - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fastseries": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fastseries/-/fastseries-2.0.0.tgz", - "integrity": "sha512-XBU9RXeoYc2/VnvMhplAxEmZLfIk7cvTBu+xwoBuTI8pL19E03cmca17QQycKIdxgwCeFA/a4u27gv1h3ya5LQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/favico.js": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/favico.js/-/favico.js-0.3.10.tgz", - "integrity": "sha512-S5KvqAOczRjlyjQPPZPSlUEybBkfBgKosY/pzTIxkvKgigB+DkITvIEI70dxQarbv4PZ+UD77QzquCAcU/6LHQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/feed": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", - "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", - "license": "MIT", - "dependencies": { - "xml-js": "^1.6.11" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true, - "license": "ISC" - }, - "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/form-data-encoder": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", - "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==", - "license": "MIT" - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/from2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/from2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/from2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true, - "license": "MIT" - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gamedig": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/gamedig/-/gamedig-4.3.2.tgz", - "integrity": "sha512-TjYwybvy8HNAhkv2EJccd5HROIiMeMriWmeX8vT8m5Ibat5JMzVpugzsD8L8XZVrOfiXnVg/9DhWYM8k/VG/vw==", - "license": "MIT", - "dependencies": { - "cheerio": "1.0.0-rc.10", - "gbxremote": "0.2.1", - "got": "12.1.0", - "iconv-lite": "0.6.3", - "long": "5.2.0", - "minimist": "1.2.6", - "punycode": "2.1.1", - "seek-bzip": "2.0.0", - "varint": "6.0.0" - }, - "bin": { - "gamedig": "bin/gamedig.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/gamedig/node_modules/cheerio": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", - "license": "MIT", - "dependencies": { - "cheerio-select": "^1.5.0", - "dom-serializer": "^1.3.2", - "domhandler": "^4.2.0", - "htmlparser2": "^6.1.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/gamedig/node_modules/cheerio-select": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz", - "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==", - "license": "BSD-2-Clause", - "dependencies": { - "css-select": "^4.3.0", - "css-what": "^6.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.3.1", - "domutils": "^2.8.0" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/gamedig/node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/gamedig/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/gamedig/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/gamedig/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/gamedig/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/gamedig/node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/gamedig/node_modules/long": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz", - "integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==", - "license": "Apache-2.0" - }, - "node_modules/gamedig/node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "license": "MIT" - }, - "node_modules/gamedig/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "license": "MIT" - }, - "node_modules/gamedig/node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "license": "MIT", - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gbxremote": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/gbxremote/-/gbxremote-0.2.1.tgz", - "integrity": "sha512-SMehu6Y6ndq2Qgp9VxAb8Np3f+UUD+RWoW2SAMaxzGS96rWXyr4T1GGkecO0HHtxeH1m7pEh4FJWB8a/6aM2XQ==", - "dependencies": { - "any-promise": "^1.1.0", - "barse": "~0.4.2", - "event-to-promise": "^0.7.0", - "string-to-stream": "^1.0.1", - "xmlrpc": "^1.3.1" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/generate-function": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", - "license": "MIT", - "dependencies": { - "is-property": "^1.0.2" - } - }, - "node_modules/generic-pool": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", - "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-port-please": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.2.tgz", - "integrity": "sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/getopts": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz", - "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==", - "license": "MIT" - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC" - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", - "dev": true, - "license": "MIT" - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/got": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-12.1.0.tgz", - "integrity": "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==", - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^4.6.0", - "@szmarczak/http-timer": "^5.0.1", - "@types/cacheable-request": "^6.0.2", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^6.0.4", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "form-data-encoder": "1.7.1", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/got/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "devOptional": true, - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "license": "ISC" - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/help-me": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/help-me/-/help-me-3.0.0.tgz", - "integrity": "sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==", - "license": "MIT", - "dependencies": { - "glob": "^7.1.6", - "readable-stream": "^3.6.0" - } - }, - "node_modules/hoek": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==", - "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", - "license": "BSD-3-Clause" - }, - "node_modules/hookable": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", - "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, - "node_modules/html-escaper": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", - "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", - "license": "MIT" - }, - "node_modules/html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/htmlparser2": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", - "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.1.0", - "entities": "^4.5.0" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "license": "BSD-2-Clause" - }, - "node_modules/http-cookie-agent": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/http-cookie-agent/-/http-cookie-agent-5.0.4.tgz", - "integrity": "sha512-OtvikW69RvfyP6Lsequ0fN5R49S+8QcS9zwd58k6VSr6r57T8G29BkPdyrBcSwLq6ExLs9V+rBlfxu7gDstJag==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0" - }, - "engines": { - "node": ">=14.18.0 <15.0.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/3846masa" - }, - "peerDependencies": { - "deasync": "^0.1.26", - "tough-cookie": "^4.0.0", - "undici": "^5.11.0" - }, - "peerDependenciesMeta": { - "deasync": { - "optional": true - }, - "undici": { - "optional": true - } - } - }, - "node_modules/http-cookie-agent/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-graceful-shutdown": { - "version": "3.1.13", - "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.13.tgz", - "integrity": "sha512-Ci5LRufQ8AtrQ1U26AevS8QoMXDOhnAHCJI3eZu1com7mZGHxREmw3dNj85ftpQokQCvak8nI2pnFS8zyM1M+Q==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http2-wrapper": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", - "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", - "license": "MIT", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "ms": "^2.0.0" - } - }, - "node_modules/hyperid": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.3.0.tgz", - "integrity": "sha512-7qhCVT4MJIoEsNcbhglhdmBKb09QtcmJNiIQGq7js/Khf5FtQQ9bzcAuloeqBeee7XD7JqDeve9KNlQya5tSGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.2.1", - "uuid": "^8.3.2", - "uuid-parse": "^1.1.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "license": "ISC", - "optional": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "license": "MIT", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "license": "MIT", - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-inside-container/node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "license": "MIT", - "optional": true - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-what": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", - "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isemail": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", - "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", - "license": "BSD-3-Clause", - "dependencies": { - "punycode": "2.x.x" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/isomorphic-ws": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", - "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", - "license": "MIT", - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/joi": { - "version": "14.3.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-14.3.1.tgz", - "integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==", - "deprecated": "This module has moved and is now available at @hapi/joi. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", - "license": "BSD-3-Clause", - "dependencies": { - "hoek": "6.x.x", - "isemail": "3.x.x", - "topo": "3.x.x" - } - }, - "node_modules/jose": { - "version": "4.15.9", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", - "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, - "node_modules/js-md4": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", - "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", - "license": "MIT" - }, - "node_modules/js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "license": "MIT" - }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", - "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonata": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-2.0.5.tgz", - "integrity": "sha512-wEse9+QLIIU5IaCgtJCPsFi/H4F3qcikWzF4bAELZiRz08ohfx3Q6CjDRf4ZPF5P/92RI3KIHtb7u3jqPaHXdQ==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", - "license": "MIT", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/just-performance": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/just-performance/-/just-performance-4.3.0.tgz", - "integrity": "sha512-L7RjvtJsL0QO8xFs5wEoDDzzJwoiowRw6Rn/GnvldlchS2JQr9wFYPiwZcDfrbbujEKqKN0tvENdbjXdYhDp5Q==", - "license": "MIT" - }, - "node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "license": "MIT", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", - "license": "MIT" - }, - "node_modules/kafkajs": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/kafkajs/-/kafkajs-2.2.4.tgz", - "integrity": "sha512-j/YeapB1vfPT2iOIUn/vxdyKEuhuY2PxMBvf5JWux6iSaukAccrMtXEY/Lb7OvavDhOWME589bpLrEdnVHjfjA==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/knex": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/knex/-/knex-2.4.2.tgz", - "integrity": "sha512-tMI1M7a+xwHhPxjbl/H9K1kHX+VncEYcvCx5K00M16bWvpYPKAZd6QrCu68PtHAdIZNQPWZn0GVhqVBEthGWCg==", - "license": "MIT", - "dependencies": { - "colorette": "2.0.19", - "commander": "^9.1.0", - "debug": "4.3.4", - "escalade": "^3.1.1", - "esm": "^3.2.25", - "get-package-type": "^0.1.0", - "getopts": "2.3.0", - "interpret": "^2.2.0", - "lodash": "^4.17.21", - "pg-connection-string": "2.5.0", - "rechoir": "^0.8.0", - "resolve-from": "^5.0.0", - "tarn": "^3.0.2", - "tildify": "2.0.0" - }, - "bin": { - "knex": "bin/cli.js" - }, - "engines": { - "node": ">=12" - }, - "peerDependenciesMeta": { - "better-sqlite3": { - "optional": true - }, - "mysql": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-native": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "tedious": { - "optional": true - } - } - }, - "node_modules/knex/node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "license": "MIT" - }, - "node_modules/knex/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/knex/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/knex/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "license": "MIT" - }, - "node_modules/knex/node_modules/pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==", - "license": "MIT" - }, - "node_modules/knex/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/known-css-properties": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", - "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/kolorist": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", - "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lazystream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/lazystream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/limiter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-2.1.0.tgz", - "integrity": "sha512-361TYz6iay6n+9KvUUImqdLuFigK+K79qrUtBsXhJTLdH4rIt/r1y8r1iozwh8KbZNpujbFTSh74mJ7bwbAMOw==", - "license": "MIT", - "dependencies": { - "just-performance": "4.3.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "license": "MIT" - }, - "node_modules/liquidjs": { - "version": "10.17.0", - "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.17.0.tgz", - "integrity": "sha512-M4MC5/nencttIJHirl5jFTkl7Yu+grIDLn3Qgl7BPAD3BsbTCQknDxlG5VXWRwslWIjk8lSZZjVq9LioILDk1Q==", - "license": "MIT", - "dependencies": { - "commander": "^10.0.0" - }, - "bin": { - "liquid": "bin/liquid.js", - "liquidjs": "bin/liquid.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/liquidjs" - } - }, - "node_modules/liquidjs/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "license": "MIT" - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "license": "MIT" - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", - "license": "MIT" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", - "license": "MIT" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", - "license": "MIT" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "license": "MIT" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "license": "MIT" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true, - "license": "MIT" - }, - "node_modules/long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", - "license": "Apache-2.0" - }, - "node_modules/lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "license": "ISC", - "optional": true, - "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/make-fetch-happen/node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "license": "MIT", - "optional": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "license": "ISC", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-fetch-happen/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC", - "optional": true - }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/marked": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.2.tgz", - "integrity": "sha512-f3r0yqpz31VXiDB/wj9GaOB0a2PRLQl6vJmXiFrniNwjkKdvakqJRULhjFKJpxOchlCRiG5fcacoUZY5Xa6PEQ==", - "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/mathml-tag-names": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", - "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memory-pager": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", - "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", - "license": "MIT", - "optional": true - }, - "node_modules/meow": { - "version": "10.1.5", - "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", - "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/minimist": "^1.2.2", - "camelcase-keys": "^7.0.0", - "decamelize": "^5.0.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.2", - "read-pkg-up": "^8.0.0", - "redent": "^4.0.0", - "trim-newlines": "^4.0.2", - "type-fest": "^1.2.2", - "yargs-parser": "^20.2.9" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", - "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz", - "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "license": "ISC", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "license": "MIT", - "optional": true, - "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "optionalDependencies": { - "encoding": "^0.1.12" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "license": "ISC", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "license": "ISC", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "license": "ISC", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, - "node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "license": "MIT" - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true, - "license": "MIT" - }, - "node_modules/mongodb": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.2.tgz", - "integrity": "sha512-mLV7SEiov2LHleRJPMPrK2PMyhXFZt2UQLC4VD4pnth3jMjYKHhtqfwwkkvS/NXuo/Fp3vbhaNcXrIDaLRb9Tg==", - "license": "Apache-2.0", - "dependencies": { - "bson": "^4.7.2", - "mongodb-connection-string-url": "^2.6.0", - "socks": "^2.7.1" - }, - "engines": { - "node": ">=12.9.0" - }, - "optionalDependencies": { - "@aws-sdk/credential-providers": "^3.186.0", - "@mongodb-js/saslprep": "^1.1.0" - } - }, - "node_modules/mongodb-connection-string-url": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", - "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", - "license": "Apache-2.0", - "dependencies": { - "@types/whatwg-url": "^8.2.1", - "whatwg-url": "^11.0.0" - } - }, - "node_modules/mongodb-connection-string-url/node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "license": "MIT", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "license": "MIT", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mqemitter": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/mqemitter/-/mqemitter-4.5.0.tgz", - "integrity": "sha512-Mp/zytFeIv6piJQkEKnncHcP4R/ErJc5C7dfonkhkNUT2LA/nTayrfNxbipp3M5iCJUTQSUtzfQAQA3XVcKz6w==", - "dev": true, - "license": "ISC", - "dependencies": { - "fastparallel": "^2.3.0", - "qlobber": "^5.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mqtt": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.8.tgz", - "integrity": "sha512-2xT75uYa0kiPEF/PE0VPdavmEkoBzMT/UL9moid0rAvlCtV48qBwxD62m7Ld/4j8tSkIO1E/iqRl/S72SEOhOw==", - "license": "MIT", - "dependencies": { - "commist": "^1.0.0", - "concat-stream": "^2.0.0", - "debug": "^4.1.1", - "duplexify": "^4.1.1", - "help-me": "^3.0.0", - "inherits": "^2.0.3", - "lru-cache": "^6.0.0", - "minimist": "^1.2.5", - "mqtt-packet": "^6.8.0", - "number-allocator": "^1.0.9", - "pump": "^3.0.0", - "readable-stream": "^3.6.0", - "reinterval": "^1.1.0", - "rfdc": "^1.3.0", - "split2": "^3.1.0", - "ws": "^7.5.5", - "xtend": "^4.0.2" - }, - "bin": { - "mqtt": "bin/mqtt.js", - "mqtt_pub": "bin/pub.js", - "mqtt_sub": "bin/sub.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/mqtt-packet": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-7.1.2.tgz", - "integrity": "sha512-FFZbcZ2omsf4c5TxEQfcX9hI+JzDpDKPT46OmeIBpVA7+t32ey25UNqlqNXTmeZOr5BLsSIERpQQLsFWJS94SQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bl": "^4.0.2", - "debug": "^4.1.1", - "process-nextick-args": "^2.0.1" - } - }, - "node_modules/mqtt/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mqtt/node_modules/mqtt-packet": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz", - "integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==", - "license": "MIT", - "dependencies": { - "bl": "^4.0.2", - "debug": "^4.1.1", - "process-nextick-args": "^2.0.1" - } - }, - "node_modules/mqtt/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/mqtt/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, - "node_modules/mrmime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", - "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/mssql": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/mssql/-/mssql-11.0.1.tgz", - "integrity": "sha512-KlGNsugoT90enKlR8/G36H0kTxPthDhmtNUCwEHvgRza5Cjpjoj+P2X6eMpFUDN7pFrJZsKadL4x990G8RBE1w==", - "license": "MIT", - "dependencies": { - "@tediousjs/connection-string": "^0.5.0", - "commander": "^11.0.0", - "debug": "^4.3.3", - "rfdc": "^1.3.0", - "tarn": "^3.0.2", - "tedious": "^18.2.1" - }, - "bin": { - "mssql": "bin/mssql" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/mssql/node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", - "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "node_modules/mysql2": { - "version": "3.9.9", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.9.tgz", - "integrity": "sha512-Qtb2RUxwWMFkWXqF7Rd/7ySkupbQnNY7O0zQuQYgPcuJZ06M36JG3HIDEh/pEeq7LImcvA6O3lOVQ9XQK+HEZg==", - "license": "MIT", - "dependencies": { - "denque": "^2.1.0", - "generate-function": "^2.3.1", - "iconv-lite": "^0.6.3", - "long": "^5.2.1", - "lru-cache": "^8.0.0", - "named-placeholders": "^1.1.3", - "seq-queue": "^0.0.5", - "sqlstring": "^2.3.2" - }, - "engines": { - "node": ">= 8.0" - } - }, - "node_modules/mysql2/node_modules/lru-cache": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", - "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", - "license": "ISC", - "engines": { - "node": ">=16.14" - } - }, - "node_modules/named-placeholders": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", - "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", - "license": "MIT", - "dependencies": { - "lru-cache": "^7.14.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/named-placeholders/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/nan": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", - "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/native-duplexpair": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/native-duplexpair/-/native-duplexpair-1.0.0.tgz", - "integrity": "sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==", - "license": "MIT" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/net-snmp": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/net-snmp/-/net-snmp-3.15.0.tgz", - "integrity": "sha512-5XBpAxhumpweYgAvdIjo3RiM5HOwl2YhGlV86z/xghy+iHsIC0SQoE4i65zc/upCMNsUYluqkKG8ctaCrTK+Tg==", - "license": "MIT", - "dependencies": { - "asn1-ber": "^1.2.1", - "smart-buffer": "^4.1.0" - } - }, - "node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "license": "MIT" - }, - "node_modules/node-cloudflared-tunnel": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/node-cloudflared-tunnel/-/node-cloudflared-tunnel-1.0.10.tgz", - "integrity": "sha512-QBTH4bcTePgiwYdK5vYZhZl7GNr3Pqnj5V3Tg1w5HvnK4VhLZe5BUuhqKvzzCA604yhoD2I1ATdnOl6axSJu/w==", - "license": "MIT", - "dependencies": { - "command-exists": "^1.2.9" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "license": "MIT", - "optional": true, - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": ">= 10.12.0" - } - }, - "node_modules/node-gyp/node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "optional": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "optional": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "optional": true, - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-radius-client": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-radius-client/-/node-radius-client-1.0.0.tgz", - "integrity": "sha512-FkR9cMV5hNoX+kKDUTzuagvEixlLiaEJQ1/ywOdhahsihKrGDhVZmnCvmrCStA589MT3yuC/J2eKc6z68IGdBw==", - "license": "MIT", - "dependencies": { - "joi": "^14.3.1", - "node-radius-utils": "^1.2.0", - "radius": "^1.1.4" - } - }, - "node_modules/node-radius-utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/node-radius-utils/-/node-radius-utils-1.2.0.tgz", - "integrity": "sha512-i3Sf6khnenl0aXumo0whAlfPWTaBqHxEnVBBxpu3dZ7q69NkPPv71rvPjlDZ5wkeKCTNNUTECljerS5kcYQxRw==", - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-ssh": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/node-ssh/-/node-ssh-13.1.0.tgz", - "integrity": "sha512-GLcw49yFd9+rUpP+FgX6wrF/N90cmuDl2n0i8d3L828b6riRjkb9w3SS+XvviRWbrAhLxuMKywFqxvQDZQ1bug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/ssh2": "^1.11.9", - "is-stream": "^2.0.0", - "make-dir": "^3.1.0", - "sb-promise-queue": "^2.1.0", - "sb-scandir": "^3.1.0", - "shell-escape": "^0.2.0", - "ssh2": "^1.11.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/nodemailer": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.15.tgz", - "integrity": "sha512-AHf04ySLC6CIfuRtRiEYtGEXgRfa6INgWGluDhnxTZhHSKvrBu7lc1VVchQ0d8nPc4cFaZoPq8vkyNoZr0TpGQ==", - "license": "MIT-0", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "license": "ISC", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nostr-tools": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.17.0.tgz", - "integrity": "sha512-LZmR8GEWKZeElbFV5Xte75dOeE9EFUW/QLI1Ncn3JKn0kFddDKEfBbFN8Mu4TMs+L4HR/WTPha2l+PPuRnJcMw==", - "license": "Unlicense", - "dependencies": { - "@noble/ciphers": "0.2.0", - "@noble/curves": "1.1.0", - "@noble/hashes": "1.3.1", - "@scure/base": "1.1.1", - "@scure/bip32": "1.3.1", - "@scure/bip39": "1.2.1" - }, - "peerDependencies": { - "typescript": ">=5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/notp": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/notp/-/notp-2.0.3.tgz", - "integrity": "sha512-oBig/2uqkjQ5AkBuw4QJYwkEWa/q+zHxI5/I5z6IeP2NT0alpJFsP/trrfCC+9xOAgQSZXssNi962kp5KBmypQ==", - "engines": { - "node": "> v0.6.0" - } - }, - "node_modules/npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/number-allocator": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz", - "integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.1", - "js-sdsl": "4.3.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/oidc-token-hash": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz", - "integrity": "sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==", - "license": "MIT", - "engines": { - "node": "^10.13.0 || >=12.0.0" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/openid-client": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.7.0.tgz", - "integrity": "sha512-4GCCGZt1i2kTHpwvaC/sCpTpQqDnBzDzuJcJMbH+y1Q5qI8U8RBvoSh28svarXszZHR5BAMXbJPX1PGPRE3VOA==", - "license": "MIT", - "dependencies": { - "jose": "^4.15.9", - "lru-cache": "^6.0.0", - "object-hash": "^2.2.0", - "oidc-token-hash": "^5.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, - "node_modules/openid-client/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/openid-client/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", - "license": "MIT", - "engines": { - "node": ">=12.20" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "license": "MIT", - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "license": "MIT", - "dependencies": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-parser-stream": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", - "license": "MIT", - "dependencies": { - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/password-hash": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/password-hash/-/password-hash-1.2.2.tgz", - "integrity": "sha512-Dy/5+Srojwv+1XnMrK2bn7f2jN3k2p90DfBVA0Zd6PrjWF7lXHOTWgKT4uBp1gIsqV7/llYqm+hj+gwDBF/Fmg==", - "bin": { - "nodepw": "bin/nodepw" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/perfect-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", - "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/pg": { - "version": "8.11.6", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.6.tgz", - "integrity": "sha512-6CyL4F0j3vPmakU9rWdeRY8qF5Cjc3OE86y6YpgDI6YtKHhNyCjGEIE8U5ZRfBjKTZikwolKIFWh3I22MeRnoA==", - "license": "MIT", - "dependencies": { - "pg-connection-string": "^2.6.4", - "pg-pool": "^3.6.2", - "pg-protocol": "^1.6.1", - "pg-types": "^2.1.0", - "pgpass": "1.x" - }, - "engines": { - "node": ">= 8.0.0" - }, - "optionalDependencies": { - "pg-cloudflare": "^1.1.1" - }, - "peerDependencies": { - "pg-native": ">=3.0.1" - }, - "peerDependenciesMeta": { - "pg-native": { - "optional": true - } - } - }, - "node_modules/pg-cloudflare": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", - "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", - "license": "MIT", - "optional": true - }, - "node_modules/pg-connection-string": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.4.tgz", - "integrity": "sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==", - "license": "MIT" - }, - "node_modules/pg-int8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", - "license": "ISC", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/pg-pool": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.7.0.tgz", - "integrity": "sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g==", - "license": "MIT", - "peerDependencies": { - "pg": ">=8.0" - } - }, - "node_modules/pg-protocol": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", - "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==", - "license": "MIT" - }, - "node_modules/pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "license": "MIT", - "dependencies": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pgpass": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", - "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", - "license": "MIT", - "dependencies": { - "split2": "^4.1.0" - } - }, - "node_modules/pgpass/node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "license": "ISC", - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkginfo": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", - "integrity": "sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/playwright": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.39.0.tgz", - "integrity": "sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright-core": "1.39.0" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=16" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.39.0.tgz", - "integrity": "sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==", - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/playwright/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/pngjs": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", - "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.0", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-html": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-1.5.0.tgz", - "integrity": "sha512-kCMRWJRHKicpA166kc2lAVUGxDZL324bkj/pVOb6RhjB0Z5Krl7mN0AsVkBhVIRZZirY0lyQXG38HCVaoKVNoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "htmlparser2": "^8.0.0", - "js-tokens": "^8.0.0", - "postcss": "^8.4.0", - "postcss-safe-parser": "^6.0.0" - }, - "engines": { - "node": "^12 || >=14" - } - }, - "node_modules/postcss-html/node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, - "node_modules/postcss-html/node_modules/js-tokens": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.3.tgz", - "integrity": "sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", - "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", - "dev": true, - "license": "MIT" - }, - "node_modules/postcss-rtlcss": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/postcss-rtlcss/-/postcss-rtlcss-3.7.2.tgz", - "integrity": "sha512-GurrGedCKvOTe1QrifI+XpDKXA3bJky1v8KiOa/TYYHs1bfJOxI53GIRvVSqLJLly7e1WcNMz8KMESTN01vbZQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "rtlcss": "^3.5.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-safe-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", - "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.3.3" - } - }, - "node_modules/postcss-scss": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", - "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss-scss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.4.29" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "license": "MIT", - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "license": "MIT" - }, - "node_modules/prom-client": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-13.2.0.tgz", - "integrity": "sha512-wGr5mlNNdRNzEhRYXgboUU2LxHWIojxscJKmtG3R8f4/KiWqyYgXTLHs0+Ted7tG3zFT7pgHJbtomzZ1L0ARaQ==", - "license": "Apache-2.0", - "dependencies": { - "tdigest": "^0.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prometheus-api-metrics": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/prometheus-api-metrics/-/prometheus-api-metrics-3.2.2.tgz", - "integrity": "sha512-5hT17HAjflPkrHSYQ7lorsKygo0PhLau/FQ6SQhw0XWAm10GwKfLQmIVP6b3LJBnc4WNOf/QKHce2RfcZMLjJQ==", - "license": "Apache-2.0", - "dependencies": { - "@types/express": "^4.17.13", - "@types/express-serve-static-core": "^4.17.28", - "@types/koa": "^2.13.4", - "debug": "^3.2.6", - "lodash.get": "^4.4.2", - "pkginfo": "^0.4.1" - }, - "peerDependencies": { - "prom-client": ">=12 <15" - } - }, - "node_modules/prometheus-api-metrics/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "license": "ISC", - "optional": true - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "license": "MIT", - "optional": true, - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/promisify-child-process": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/promisify-child-process/-/promisify-child-process-4.1.2.tgz", - "integrity": "sha512-APnkIgmaHNJpkAn7k+CrJSi9WMuff5ctYFbD0CO2XIPkM8yO7d/ShouU2clywbpHV/DUsyc4bpJCsNgddNtx4g==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/proper-lockfile": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", - "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "retry": "^0.12.0", - "signal-exit": "^3.0.2" - } - }, - "node_modules/properties-reader": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/properties-reader/-/properties-reader-2.3.0.tgz", - "integrity": "sha512-z597WicA7nDZxK12kZqHr2TcvwNU1GCfA5UwfDY/HDp3hXPoPlb5rlEx9bwGTiJnc0OqbBTkU975jDToth8Gxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mkdirp": "^1.0.4" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/steveukx/properties?sponsor=1" - } - }, - "node_modules/protobufjs": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", - "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "license": "MIT" - }, - "node_modules/pump": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/qlobber": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/qlobber/-/qlobber-5.0.3.tgz", - "integrity": "sha512-wW4GTZPePyh0RgOsM18oDyOUlXfurVRgoNyJfS+y7VWPyd0GYhQp5T2tycZFZjonH+hngxIfklGJhTP/ghidgQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/qrcode": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", - "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "dijkstrajs": "^1.0.1", - "pngjs": "^5.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "qrcode": "bin/qrcode" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/qrcode/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/qrcode/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/qrcode/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/qrcode/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/qrcode/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/qrcode/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/qrcode/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/qrcode/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/qrcode/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", - "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "license": "MIT" - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true, - "license": "MIT" - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/radius": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/radius/-/radius-1.1.4.tgz", - "integrity": "sha512-UWuzdF6xf3NpsXFZZmUEkxtEalDXj8hdmMXgbGzn7vOk6zXNsiIY2I6SJ1euHt7PTQuMoz2qDEJB+AfJDJgQYw==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", - "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^3.0.2", - "parse-json": "^5.2.0", - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", - "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^5.0.0", - "read-pkg": "^6.0.0", - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdir-glob": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", - "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.1.0" - } - }, - "node_modules/readdir-glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "license": "MIT", - "dependencies": { - "resolve": "^1.20.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/redbean-node": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/redbean-node/-/redbean-node-0.3.3.tgz", - "integrity": "sha512-0J59/QlShdWs1h0lsFHRfb8NwjvgIYTQKwYrvq6FykRmeX1cG2u8AgHEIRVBrm56mtKLRASVy/8ykk6fSntLdw==", - "license": "MIT", - "dependencies": { - "@types/node": "~20.3.1", - "await-lock": "~2.2.2", - "dayjs": "~1.11.8", - "glob": "~10.3.0", - "knex": "~2.4.2", - "lodash": "~4.17.21" - } - }, - "node_modules/redbean-node/node_modules/@types/node": { - "version": "20.3.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.3.tgz", - "integrity": "sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==", - "license": "MIT" - }, - "node_modules/redbean-node/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/redbean-node/node_modules/glob": { - "version": "10.3.16", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.16.tgz", - "integrity": "sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.11.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/redbean-node/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/redbean-node/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/redent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", - "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", - "dev": true, - "license": "MIT", - "dependencies": { - "indent-string": "^5.0.0", - "strip-indent": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/redent/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/redis": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/redis/-/redis-4.5.1.tgz", - "integrity": "sha512-oxXSoIqMJCQVBTfxP6BNTCtDMyh9G6Vi5wjdPdV/sRKkufyZslDqCScSGcOr6XGR/reAWZefz7E4leM31RgdBA==", - "license": "MIT", - "workspaces": [ - "./packages/*" - ], - "dependencies": { - "@redis/bloom": "1.1.0", - "@redis/client": "1.4.2", - "@redis/graph": "1.1.0", - "@redis/json": "1.0.4", - "@redis/search": "1.1.0", - "@redis/time-series": "1.0.4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true, - "license": "MIT" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/reinterval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz", - "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==", - "license": "MIT" - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true, - "license": "ISC" - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "license": "MIT" - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "license": "MIT" - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "license": "MIT", - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/responselike/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/retimer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz", - "integrity": "sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "devOptional": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "license": "MIT" - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "4.22.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.5.tgz", - "integrity": "sha512-WoinX7GeQOFMGznEcWA1WrTQCd/tpEbMkc3nuMs9BT0CPjMdSjPMTVClwWd4pgSQwJdP65SK9mTCNvItlr5o7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.6" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.22.5", - "@rollup/rollup-android-arm64": "4.22.5", - "@rollup/rollup-darwin-arm64": "4.22.5", - "@rollup/rollup-darwin-x64": "4.22.5", - "@rollup/rollup-linux-arm-gnueabihf": "4.22.5", - "@rollup/rollup-linux-arm-musleabihf": "4.22.5", - "@rollup/rollup-linux-arm64-gnu": "4.22.5", - "@rollup/rollup-linux-arm64-musl": "4.22.5", - "@rollup/rollup-linux-powerpc64le-gnu": "4.22.5", - "@rollup/rollup-linux-riscv64-gnu": "4.22.5", - "@rollup/rollup-linux-s390x-gnu": "4.22.5", - "@rollup/rollup-linux-x64-gnu": "4.22.5", - "@rollup/rollup-linux-x64-musl": "4.22.5", - "@rollup/rollup-win32-arm64-msvc": "4.22.5", - "@rollup/rollup-win32-ia32-msvc": "4.22.5", - "@rollup/rollup-win32-x64-msvc": "4.22.5", - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup-plugin-visualizer": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz", - "integrity": "sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "open": "^8.4.0", - "picomatch": "^2.3.1", - "source-map": "^0.7.4", - "yargs": "^17.5.1" - }, - "bin": { - "rollup-plugin-visualizer": "dist/bin/cli.js" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "rollup": "2.x || 3.x || 4.x" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/rollup-plugin-visualizer/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, - "node_modules/rtlcss": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz", - "integrity": "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^5.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.3.11", - "strip-json-comments": "^3.1.1" - }, - "bin": { - "rtlcss": "bin/rtlcss.js" - } - }, - "node_modules/rtlcss/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rtlcss/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rtlcss/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", - "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/sass": { - "version": "1.42.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz", - "integrity": "sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "license": "ISC" - }, - "node_modules/sb-promise-queue": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sb-promise-queue/-/sb-promise-queue-2.1.0.tgz", - "integrity": "sha512-zwq4YuP1FQFkGx2Q7GIkZYZ6PqWpV+bg0nIO1sJhWOyGyhqbj0MsTvK6lCFo5TQwX5pZr6SCQ75e8PCDCuNvkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/sb-scandir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/sb-scandir/-/sb-scandir-3.1.0.tgz", - "integrity": "sha512-70BVm2xz9jn94zSQdpvYrEG101/UV9TVGcfWr9T5iob3QhCK4lYXeculfBqPGFv3XTeKgx4dpWyYIDeZUqo4kg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sb-promise-queue": "^2.1.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/seek-bzip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-2.0.0.tgz", - "integrity": "sha512-SMguiTnYrhpLdk3PwfzHeotrcwi8bNV4iemL9tx9poR/yeaMYwB9VzR1w7b57DuWpuqR8n6oZboi0hj3AxZxQg==", - "license": "MIT", - "dependencies": { - "commander": "^6.0.0" - }, - "bin": { - "seek-bunzip": "bin/seek-bunzip", - "seek-table": "bin/seek-bzip-table" - } - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, - "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/seq-queue": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", - "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" - }, - "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "license": "MIT", - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "license": "ISC" - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-escape": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/shell-escape/-/shell-escape-0.2.0.tgz", - "integrity": "sha512-uRRBT2MfEOyxuECseCZd28jC1AJ8hmqqneWQ4VWUTgCAFvb3wKU1jLqj6egC4Exrr88ogg3dp+zroH4wJuaXzw==", - "dev": true, - "license": "MIT" - }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, - "node_modules/sirv": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", - "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socket.io": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.0.tgz", - "integrity": "sha512-8U6BEgGjQOfGz3HHTYaC/L1GaxDCJ/KM0XTkJly0EhZ5U/du9uNEZy4ZgYzEzIqlx2CMm25CrCqr1ck899eLNA==", - "license": "MIT", - "dependencies": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "cors": "~2.8.5", - "debug": "~4.3.2", - "engine.io": "~6.6.0", - "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.4" - }, - "engines": { - "node": ">=10.2.0" - } - }, - "node_modules/socket.io-adapter": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", - "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", - "license": "MIT", - "dependencies": { - "debug": "~4.3.4", - "ws": "~8.17.1" - } - }, - "node_modules/socket.io-adapter/node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/socket.io-client": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.0.tgz", - "integrity": "sha512-C0jdhD5yQahMws9alf/yvtsMGTaIDBnZ8Rb5HU56svyq0l5LIrGzIDZZD5pHQlmzxLuU91Gz+VpQMKgCTNYtkw==", - "license": "MIT", - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.6.1", - "socket.io-parser": "~4.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", - "license": "MIT", - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socks": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", - "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", - "license": "MIT", - "dependencies": { - "ip-address": "^9.0.5", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", - "license": "MIT", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/sortablejs": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz", - "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sparse-bitfield": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", - "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "memory-pager": "^1.0.2" - } - }, - "node_modules/spawn-command": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", - "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", - "dev": true - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", - "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/speakingurl": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", - "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-ca": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", - "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "license": "ISC", - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "license": "BSD-3-Clause" - }, - "node_modules/sqlstring": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", - "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/ssh-remote-port-forward": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/ssh-remote-port-forward/-/ssh-remote-port-forward-1.0.4.tgz", - "integrity": "sha512-x0LV1eVDwjf1gmG7TTnfqIzf+3VPRz7vrNIjX6oYLbeCrf/PeVY6hkT68Mg+q02qXxQhrLjB0jfgvhevoCRmLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/ssh2": "^0.5.48", - "ssh2": "^1.4.0" - } - }, - "node_modules/ssh-remote-port-forward/node_modules/@types/ssh2": { - "version": "0.5.52", - "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.52.tgz", - "integrity": "sha512-lbLLlXxdCZOSJMCInKH2+9V/77ET2J6NPQHpFI0kda61Dd1KglJs+fPQBchizmzYSOJBgdTajhPqBO1xxLywvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/ssh2-streams": "*" - } - }, - "node_modules/ssh2": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.16.0.tgz", - "integrity": "sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "asn1": "^0.2.6", - "bcrypt-pbkdf": "^1.0.2" - }, - "engines": { - "node": ">=10.16.0" - }, - "optionalDependencies": { - "cpu-features": "~0.0.10", - "nan": "^2.20.0" - } - }, - "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "license": "ISC", - "optional": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stoppable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", - "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", - "license": "MIT", - "engines": { - "node": ">=4", - "npm": ">=6" - } - }, - "node_modules/stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "license": "MIT" - }, - "node_modules/streamx": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", - "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-fifo": "^1.3.2", - "queue-tick": "^1.0.1", - "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/string-to-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string-to-stream/-/string-to-stream-1.1.1.tgz", - "integrity": "sha512-QySF2+3Rwq0SdO3s7BAp4x+c3qsClpPQ6abAmb0DGViiSBAkT5kL6JT2iyzEVP+T1SmzHrQD1TwlP9QAHCc+Sw==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.1.0" - } - }, - "node_modules/string-to-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "node_modules/string-to-stream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/string-to-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.replaceall": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/string.prototype.replaceall/-/string.prototype.replaceall-1.0.10.tgz", - "integrity": "sha512-PKLapcZUZmXUdfIM6rTTTMYOxaj4JiQrgl0SKEeCFug1CdMAuJq8hVZd4eek9yMXAW4ldGUq+TiZRtjLJRU96g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", - "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "license": "MIT", - "optional": true - }, - "node_modules/style-search": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", - "dev": true, - "license": "ISC" - }, - "node_modules/stylelint": { - "version": "15.11.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz", - "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@csstools/css-parser-algorithms": "^2.3.1", - "@csstools/css-tokenizer": "^2.2.0", - "@csstools/media-query-list-parser": "^2.1.4", - "@csstools/selector-specificity": "^3.0.0", - "balanced-match": "^2.0.0", - "colord": "^2.9.3", - "cosmiconfig": "^8.2.0", - "css-functions-list": "^3.2.1", - "css-tree": "^2.3.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.1", - "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^7.0.0", - "global-modules": "^2.0.0", - "globby": "^11.1.0", - "globjoin": "^0.1.4", - "html-tags": "^3.3.1", - "ignore": "^5.2.4", - "import-lazy": "^4.0.0", - "imurmurhash": "^0.1.4", - "is-plain-object": "^5.0.0", - "known-css-properties": "^0.29.0", - "mathml-tag-names": "^2.1.3", - "meow": "^10.1.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.28", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.0.13", - "postcss-value-parser": "^4.2.0", - "resolve-from": "^5.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "style-search": "^0.1.0", - "supports-hyperlinks": "^3.0.0", - "svg-tags": "^1.0.0", - "table": "^6.8.1", - "write-file-atomic": "^5.0.1" - }, - "bin": { - "stylelint": "bin/stylelint.mjs" - }, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" - } - }, - "node_modules/stylelint-config-recommended": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-7.0.0.tgz", - "integrity": "sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "stylelint": "^14.4.0" - } - }, - "node_modules/stylelint-config-standard": { - "version": "25.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-25.0.0.tgz", - "integrity": "sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "stylelint-config-recommended": "^7.0.0" - }, - "peerDependencies": { - "stylelint": "^14.4.0" - } - }, - "node_modules/stylelint/node_modules/balanced-match": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "dev": true, - "license": "MIT" - }, - "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.2.tgz", - "integrity": "sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/stylelint/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/stylelint/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/stylelint/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/superjson": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.1.tgz", - "integrity": "sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "copy-anything": "^3.0.2" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-hyperlinks": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", - "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", - "dev": true - }, - "node_modules/table": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", - "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/table/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/table/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/table/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar-fs": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", - "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" - } - }, - "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/tar/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "license": "ISC" - }, - "node_modules/tarn": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", - "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/tcp-ping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/tcp-ping/-/tcp-ping-0.1.1.tgz", - "integrity": "sha512-7Ed10Ds0hYnF+O1lfiZ2iSZ1bCAj+96Madctebmq7Y1ALPWlBY4YI8C6pCL+UTlshFY5YogixKLpgDP/4BlHrw==", - "license": "MIT" - }, - "node_modules/tdigest": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", - "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", - "license": "MIT", - "dependencies": { - "bintrees": "1.0.2" - } - }, - "node_modules/tedious": { - "version": "18.6.1", - "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.6.1.tgz", - "integrity": "sha512-9AvErXXQTd6l7TDd5EmM+nxbOGyhnmdbp/8c3pw+tjaiSXW9usME90ET/CRG1LN1Y9tPMtz/p83z4Q97B4DDpw==", - "license": "MIT", - "dependencies": { - "@azure/core-auth": "^1.7.2", - "@azure/identity": "^4.2.1", - "@azure/keyvault-keys": "^4.4.0", - "@js-joda/core": "^5.6.1", - "@types/node": ">=18", - "bl": "^6.0.11", - "iconv-lite": "^0.6.3", - "js-md4": "^0.3.2", - "native-duplexpair": "^1.0.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/tedious/node_modules/bl": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/bl/-/bl-6.0.16.tgz", - "integrity": "sha512-V/kz+z2Mx5/6qDfRCilmrukUXcXuCoXKg3/3hDvzKKoSUx8CJKudfIoT29XZc3UE9xBvxs5qictiHdprwtteEg==", - "license": "MIT", - "dependencies": { - "@types/readable-stream": "^4.0.0", - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^4.2.0" - } - }, - "node_modules/tedious/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/tedious/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/terser/node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/test": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/test/-/test-3.3.0.tgz", - "integrity": "sha512-JKlEohxDIJRjwBH/+BrTcAPHljBALrAHw3Zs99RqZlaC605f6BggqXhxkdqZThbSHgaYPwpNJlf9bTSWkb/1rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6", - "readable-stream": "^4.3.0", - "string.prototype.replaceall": "^1.0.6" - }, - "bin": { - "node--test": "bin/node--test.js", - "node--test-name-pattern": "bin/node--test-name-pattern.js", - "node--test-only": "bin/node--test-only.js", - "test": "bin/node-core-test.js" - } - }, - "node_modules/test/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/test/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/testcontainers": { - "version": "10.13.1", - "resolved": "https://registry.npmjs.org/testcontainers/-/testcontainers-10.13.1.tgz", - "integrity": "sha512-JBbOhxmygj/ouH/47GnoVNt+c55Telh/45IjVxEbDoswsLchVmJiuKiw/eF6lE5i7LN+/99xsrSCttI3YRtirg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@balena/dockerignore": "^1.0.2", - "@types/dockerode": "^3.3.29", - "archiver": "^7.0.1", - "async-lock": "^1.4.1", - "byline": "^5.0.0", - "debug": "^4.3.5", - "docker-compose": "^0.24.8", - "dockerode": "^3.3.5", - "get-port": "^5.1.1", - "proper-lockfile": "^4.1.2", - "properties-reader": "^2.3.0", - "ssh-remote-port-forward": "^1.0.4", - "tar-fs": "^3.0.6", - "tmp": "^0.2.3", - "undici": "^5.28.4" - } - }, - "node_modules/text-decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.0.tgz", - "integrity": "sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/thirty-two": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz", - "integrity": "sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA==", - "engines": { - "node": ">=0.2.6" - } - }, - "node_modules/tildify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", - "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/topo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", - "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", - "deprecated": "This module has moved and is now available at @hapi/topo. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", - "license": "BSD-3-Clause", - "dependencies": { - "hoek": "6.x.x" - } - }, - "node_modules/totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/tr46/node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "license": "MIT", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/trim-newlines": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", - "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "license": "0BSD" - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true, - "license": "Unlicense" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "license": "MIT" - }, - "node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/underscore": { - "version": "1.13.7", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", - "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", - "license": "MIT" - }, - "node_modules/undici": { - "version": "5.28.4", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", - "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "license": "MIT" - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "license": "ISC", - "optional": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "license": "ISC", - "optional": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/universal-user-agent": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", - "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/uuid-parse": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/uuid-parse/-/uuid-parse-1.1.0.tgz", - "integrity": "sha512-OdmXxA8rDsQ7YpNVbKSJkNzTw2I+S5WsbMDnCtIWSQaosNAcWtFuI/YK1TjzUI6nbkgiqEyh8gWngfcv8Asd9A==", - "dev": true, - "license": "MIT" - }, - "node_modules/v-pagination-3": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/v-pagination-3/-/v-pagination-3-0.1.7.tgz", - "integrity": "sha512-b5H+SdL+yIhkqyWI+Uj5lGk1VK3Q/hjqN44okerMa9smtk55DJX3Jg+ecU/vJAFrEhNCqgNzLsJ8pLRcHrbjrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-add-module-exports": "^0.2.1", - "merge": "^2.1.1", - "vue": ">=3.0.0" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "dev": true, - "license": "MIT" - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "license": "MIT" - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vite": { - "version": "5.2.14", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.14.tgz", - "integrity": "sha512-TFQLuwWLPms+NBNlh0D9LZQ+HXW471COABxw/9TEUBrjuHMo9BrYBPrN/SYAwIuVL+rLerycxiLT41t4f5MZpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.20.1", - "postcss": "^8.4.38", - "rollup": "^4.13.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite-hot-client": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-0.2.3.tgz", - "integrity": "sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0" - } - }, - "node_modules/vite-plugin-compression": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz", - "integrity": "sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "debug": "^4.3.3", - "fs-extra": "^10.0.0" - }, - "peerDependencies": { - "vite": ">=2.0.0" - } - }, - "node_modules/vite-plugin-compression/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/vite-plugin-compression/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/vite-plugin-compression/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/vite-plugin-compression/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/vite-plugin-compression/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-plugin-compression/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/vite-plugin-compression/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/vite-plugin-inspect": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.7.tgz", - "integrity": "sha512-/XXou3MVc13A5O9/2Nd6xczjrUwt7ZyI9h8pTnUMkr5SshLcb0PJUOVq2V+XVkdeU4njsqAtmK87THZuO2coGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@antfu/utils": "^0.7.10", - "@rollup/pluginutils": "^5.1.0", - "debug": "^4.3.6", - "error-stack-parser-es": "^0.1.5", - "fs-extra": "^11.2.0", - "open": "^10.1.0", - "perfect-debounce": "^1.0.0", - "picocolors": "^1.0.1", - "sirv": "^2.0.4" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0" - }, - "peerDependenciesMeta": { - "@nuxt/kit": { - "optional": true - } - } - }, - "node_modules/vite-plugin-inspect/node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vite-plugin-inspect/node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/vite-plugin-inspect/node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vite-plugin-inspect/node_modules/open": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", - "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^3.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vite-plugin-vue-devtools": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-7.4.6.tgz", - "integrity": "sha512-lOKur3qovCB3BQStL0qfHEoIusqya1ngfxfWuqn9DTa6h9rlw6+S3PV4geOP5YBGYQ4NW1hRX70OD8I+sYr1dA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/devtools-core": "^7.4.6", - "@vue/devtools-kit": "^7.4.6", - "@vue/devtools-shared": "^7.4.6", - "execa": "^8.0.1", - "sirv": "^2.0.4", - "vite-plugin-inspect": "^0.8.7", - "vite-plugin-vue-inspector": "^5.2.0" - }, - "engines": { - "node": ">=v14.21.3" - }, - "peerDependencies": { - "vite": "^3.1.0 || ^4.0.0-0 || ^5.0.0-0" - } - }, - "node_modules/vite-plugin-vue-devtools/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/vite-plugin-vue-devtools/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vite-plugin-vue-devtools/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/vite-plugin-vue-devtools/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vite-plugin-vue-devtools/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vite-plugin-vue-devtools/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vite-plugin-vue-devtools/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vite-plugin-vue-devtools/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vite-plugin-vue-devtools/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/vite-plugin-vue-devtools/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/vite-plugin-vue-inspector": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.2.0.tgz", - "integrity": "sha512-wWxyb9XAtaIvV/Lr7cqB1HIzmHZFVUJsTNm3yAxkS87dgh/Ky4qr2wDEWNxF23fdhVa3jQ8MZREpr4XyiuaRqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.23.0", - "@babel/plugin-proposal-decorators": "^7.23.0", - "@babel/plugin-syntax-import-attributes": "^7.22.5", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-transform-typescript": "^7.22.15", - "@vue/babel-plugin-jsx": "^1.1.5", - "@vue/compiler-dom": "^3.3.4", - "kolorist": "^1.8.0", - "magic-string": "^0.30.4" - }, - "peerDependencies": { - "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0" - } - }, - "node_modules/vue": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.38.tgz", - "integrity": "sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.4.38", - "@vue/compiler-sfc": "3.4.38", - "@vue/runtime-dom": "3.4.38", - "@vue/server-renderer": "3.4.38", - "@vue/shared": "3.4.38" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/vue-chartjs": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.2.0.tgz", - "integrity": "sha512-d3zpKmGZr2OWHQ1xmxBcAn5ShTG917+/UCLaSpaCDDqT0U7DBsvFzTs69ZnHCgKoXT55GZDW8YEj9Av+dlONLA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "chart.js": "^4.1.1", - "vue": "^3.0.0-0 || ^2.7.0" - } - }, - "node_modules/vue-confirm-dialog": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/vue-confirm-dialog/-/vue-confirm-dialog-1.0.2.tgz", - "integrity": "sha512-gTo1bMDWOLd/6ihmWv8VlPxhc9QaKoE5YqlsKydUOfrrQ3Q3taljF6yI+1TMtAtJLrvZ8DYrePhgBhY1VCJzbQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "vue": "^2.6.10" - } - }, - "node_modules/vue-contenteditable": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/vue-contenteditable/-/vue-contenteditable-3.0.4.tgz", - "integrity": "sha512-CmtqT4zHQwLoJEyNVaXUjjUFPUVYlXXBHfSbRCHCUjODMqrn6L293LM1nc1ELx8epitZZvecTfIqOLlSzB3d+w==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/vue-demi": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.12.5.tgz", - "integrity": "sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/vue-eslint-parser": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", - "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.2", - "eslint-scope": "^7.0.0", - "eslint-visitor-keys": "^3.1.0", - "espree": "^9.0.0", - "esquery": "^1.4.0", - "lodash": "^4.17.21", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, - "node_modules/vue-eslint-parser/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/vue-eslint-parser/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/vue-i18n": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz", - "integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@intlify/core-base": "9.2.2", - "@intlify/shared": "9.2.2", - "@intlify/vue-devtools": "9.2.2", - "@vue/devtools-api": "^6.2.1" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/vue-image-crop-upload": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vue-image-crop-upload/-/vue-image-crop-upload-3.0.3.tgz", - "integrity": "sha512-VeBsU0oI1hXeCvdpnu19DM/r3KTlI8SUXTxsHsU4MhDXR0ahRziiL9tf4FbILGx+gRVNZhGbl32yuM6TiaGNhA==", - "dev": true, - "license": "ISC", - "dependencies": { - "babel-runtime": "^6.11.6" - } - }, - "node_modules/vue-multiselect": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-3.0.0.tgz", - "integrity": "sha512-uupKdINgz7j83lQToCL7KkgQQxvG43el++hsR39YT9pCe1DwzUGmKzPxjVP6rqskXed5P6DtUASYAlCliW740Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.1", - "npm": ">= 6.14.15" - } - }, - "node_modules/vue-prism-editor": { - "version": "2.0.0-alpha.2", - "resolved": "https://registry.npmjs.org/vue-prism-editor/-/vue-prism-editor-2.0.0-alpha.2.tgz", - "integrity": "sha512-Gu42ba9nosrE+gJpnAEuEkDMqG9zSUysIR8SdXUw8MQKDjBnnNR9lHC18uOr/ICz7yrA/5c7jHJr9lpElODC7w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/vue-qrcode": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vue-qrcode/-/vue-qrcode-1.0.1.tgz", - "integrity": "sha512-LHEsHA8mVR+mL8REKeLrvP0h0lelwzkJjFe3ToygKjQS9Mo85m9I7/axdCnRl9ZiZIFjTWkAW1dCK+f8rq0wIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.2.0", - "vue-demi": "^0.12.5" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0", - "qrcode": "^1.0.0", - "vue": "^2.0.0 || ^3.0.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/vue-router": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz", - "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vue/devtools-api": "^6.5.0" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/vue-toastification": { - "version": "2.0.0-rc.5", - "resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-2.0.0-rc.5.tgz", - "integrity": "sha512-q73e5jy6gucEO/U+P48hqX+/qyXDozAGmaGgLFm5tXX4wJBcVsnGp4e/iJqlm9xzHETYOilUuwOUje2Qg1JdwA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "vue": "^3.0.2" - } - }, - "node_modules/vuedraggable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz", - "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", - "dev": true, - "license": "MIT", - "dependencies": { - "sortablejs": "1.14.0" - }, - "peerDependencies": { - "vue": "^3.0.1" - } - }, - "node_modules/wait-on": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz", - "integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "axios": "^1.6.1", - "joi": "^17.11.0", - "lodash": "^4.17.21", - "minimist": "^1.2.8", - "rxjs": "^7.8.1" - }, - "bin": { - "wait-on": "bin/wait-on" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/wait-on/node_modules/axios": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", - "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/wait-on/node_modules/joi": { - "version": "17.13.3", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", - "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/hoek": "^9.3.0", - "@hapi/topo": "^5.1.0", - "@sideway/address": "^4.1.5", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-url": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", - "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^4.1.1", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - }, - "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-js": { - "version": "1.6.11", - "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", - "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", - "license": "MIT", - "dependencies": { - "sax": "^1.2.4" - }, - "bin": { - "xml-js": "bin/cli.js" - } - }, - "node_modules/xmlbuilder": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", - "integrity": "sha512-eKRAFz04jghooy8muekqzo8uCSVNeyRedbuJrp0fovbLIi7wlsYtdUn3vBAAPq2Y3/0xMz2WMEUQ8yhVVO9Stw==", - "license": "MIT", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xmlhttprequest-ssl": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.1.tgz", - "integrity": "sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/xmlrpc": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/xmlrpc/-/xmlrpc-1.3.2.tgz", - "integrity": "sha512-jQf5gbrP6wvzN71fgkcPPkF4bF/Wyovd7Xdff8d6/ihxYmgETQYSuTc+Hl+tsh/jmgPLro/Aro48LMFlIyEKKQ==", - "license": "MIT", - "dependencies": { - "sax": "1.2.x", - "xmlbuilder": "8.2.x" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.0.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yaml": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", - "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", - "dev": true, - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zip-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", - "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "archiver-utils": "^5.0.0", - "compress-commons": "^6.0.2", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/zip-stream/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/zip-stream/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - } - } -} +{ + "name": "uptime-kuma", + "version": "2.0.0-dev", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "uptime-kuma", + "version": "2.0.0-dev", + "license": "MIT", + "dependencies": { + "@grpc/grpc-js": "~1.8.22", + "@louislam/ping": "~0.4.4-mod.1", + "@louislam/sqlite3": "15.1.6", + "@vvo/tzdb": "^6.125.0", + "args-parser": "~1.3.0", + "axios": "~0.28.1", + "badge-maker": "~3.3.1", + "bcryptjs": "~2.4.3", + "chardet": "~1.4.0", + "check-password-strength": "^2.0.5", + "cheerio": "~1.0.0-rc.12", + "chroma-js": "~2.4.2", + "command-exists": "~1.2.9", + "compare-versions": "~3.6.0", + "compression": "~1.7.4", + "croner": "~8.1.0", + "dayjs": "~1.11.5", + "dev-null": "^0.1.1", + "dotenv": "~16.0.3", + "express": "~4.21.0", + "express-basic-auth": "~1.2.1", + "express-static-gzip": "~2.1.7", + "feed": "^4.2.2", + "form-data": "~4.0.0", + "gamedig": "^4.2.0", + "html-escaper": "^3.0.3", + "http-cookie-agent": "~5.0.4", + "http-graceful-shutdown": "~3.1.7", + "http-proxy-agent": "~5.0.0", + "https-proxy-agent": "~5.0.1", + "iconv-lite": "~0.6.3", + "isomorphic-ws": "^5.0.0", + "jsesc": "~3.0.2", + "jsonata": "^2.0.3", + "jsonwebtoken": "~9.0.0", + "jwt-decode": "~3.1.2", + "kafkajs": "^2.2.4", + "knex": "^2.4.2", + "limiter": "~2.1.0", + "liquidjs": "^10.7.0", + "marked": "^14.0.0", + "mitt": "~3.0.1", + "mongodb": "~4.17.1", + "mqtt": "~4.3.7", + "mssql": "~11.0.0", + "mysql2": "~3.9.6", + "nanoid": "~3.3.4", + "net-snmp": "^3.11.2", + "node-cloudflared-tunnel": "~1.0.9", + "node-radius-client": "~1.0.0", + "nodemailer": "~6.9.13", + "nostr-tools": "^1.13.1", + "notp": "~2.0.3", + "openid-client": "^5.4.2", + "password-hash": "~1.2.2", + "pg": "~8.11.3", + "pg-connection-string": "~2.6.2", + "playwright-core": "~1.39.0", + "prom-client": "~13.2.0", + "prometheus-api-metrics": "~3.2.1", + "promisify-child-process": "~4.1.2", + "protobufjs": "~7.2.4", + "qs": "~6.10.4", + "redbean-node": "~0.3.0", + "redis": "~4.5.1", + "semver": "~7.5.4", + "socket.io": "~4.8.0", + "socket.io-client": "~4.8.0", + "socks-proxy-agent": "6.1.1", + "tar": "~6.2.1", + "tcp-ping": "~0.1.1", + "thirty-two": "~1.0.2", + "tough-cookie": "~4.1.3", + "ws": "^8.13.0" + }, + "devDependencies": { + "@actions/github": "~5.1.1", + "@fortawesome/fontawesome-svg-core": "~1.2.36", + "@fortawesome/free-regular-svg-icons": "~5.15.4", + "@fortawesome/free-solid-svg-icons": "~5.15.4", + "@fortawesome/vue-fontawesome": "~3.0.0-5", + "@playwright/test": "~1.39.0", + "@popperjs/core": "~2.10.2", + "@testcontainers/hivemq": "^10.13.1", + "@types/bootstrap": "~5.1.9", + "@types/node": "^20.8.6", + "@typescript-eslint/eslint-plugin": "^6.7.5", + "@typescript-eslint/parser": "^6.7.5", + "@vitejs/plugin-vue": "~5.0.1", + "@vue/compiler-sfc": "~3.4.2", + "@vuepic/vue-datepicker": "~3.4.8", + "aedes": "^0.46.3", + "bootstrap": "5.1.3", + "chart.js": "~4.2.1", + "chartjs-adapter-dayjs-4": "~1.0.4", + "concurrently": "^7.1.0", + "core-js": "~3.26.1", + "cronstrue": "~2.24.0", + "cross-env": "~7.0.3", + "delay": "^5.0.0", + "dns2": "~2.0.1", + "dompurify": "~3.1.7", + "eslint": "~8.14.0", + "eslint-plugin-jsdoc": "~46.4.6", + "eslint-plugin-vue": "~8.7.1", + "favico.js": "~0.3.10", + "get-port-please": "^3.1.1", + "node-ssh": "~13.1.0", + "postcss-html": "~1.5.0", + "postcss-rtlcss": "~3.7.2", + "postcss-scss": "~4.0.4", + "prismjs": "~1.29.0", + "qrcode": "~1.5.0", + "rollup-plugin-visualizer": "^5.6.0", + "sass": "~1.42.1", + "stylelint": "^15.10.1", + "stylelint-config-standard": "~25.0.0", + "terser": "~5.15.0", + "test": "~3.3.0", + "testcontainers": "^10.13.1", + "typescript": "~4.4.4", + "v-pagination-3": "~0.1.7", + "vite": "~5.2.8", + "vite-plugin-compression": "^0.5.1", + "vite-plugin-vue-devtools": "^7.0.15", + "vue": "~3.4.2", + "vue-chartjs": "~5.2.0", + "vue-confirm-dialog": "~1.0.2", + "vue-contenteditable": "~3.0.4", + "vue-i18n": "~9.2.2", + "vue-image-crop-upload": "~3.0.3", + "vue-multiselect": "~3.0.0-alpha.2", + "vue-prism-editor": "~2.0.0-alpha.2", + "vue-qrcode": "~1.0.0", + "vue-router": "~4.2.5", + "vue-toastification": "~2.0.0-rc.5", + "vuedraggable": "~4.1.0", + "wait-on": "^7.2.0", + "whatwg-url": "~12.0.1" + }, + "engines": { + "node": "18 || >= 20.4.0" + } + }, + "node_modules/@actions/github": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.1.1.tgz", + "integrity": "sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/http-client": "^2.0.1", + "@octokit/core": "^3.6.0", + "@octokit/plugin-paginate-rest": "^2.17.0", + "@octokit/plugin-rest-endpoint-methods": "^5.13.0" + } + }, + "node_modules/@actions/http-client": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", + "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tunnel": "^0.0.6", + "undici": "^5.25.4" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@antfu/utils": { + "version": "0.7.10", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", + "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.658.1.tgz", + "integrity": "sha512-MCYLKmNy0FlNT9TvXfOxj0jh+ZQq+G9qEy/VZqu3JsQSgiFvFRdzgzcbQ9gQx7fZrDC/TPdABOTh483zI4cu9g==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.658.1", + "@aws-sdk/client-sts": "3.658.1", + "@aws-sdk/core": "3.658.1", + "@aws-sdk/credential-provider-node": "3.658.1", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.6", + "@smithy/fetch-http-handler": "^3.2.8", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.21", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.3", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.21", + "@smithy/util-defaults-mode-node": "^3.0.21", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.658.1.tgz", + "integrity": "sha512-lOuaBtqPTYGn6xpXlQF4LsNDsQ8Ij2kOdnk+i69Kp6yS76TYvtUuukyLL5kx8zE1c8WbYtxj9y8VNw9/6uKl7Q==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.658.1", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.6", + "@smithy/fetch-http-handler": "^3.2.8", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.21", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.3", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.21", + "@smithy/util-defaults-mode-node": "^3.0.21", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.658.1.tgz", + "integrity": "sha512-RGcZAI3qEA05JszPKwa0cAyp8rnS1nUvs0Sqw4hqLNQ1kD7b7V6CPjRXe7EFQqCOMvM4kGqx0+cEEVTOmBsFLw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.658.1", + "@aws-sdk/credential-provider-node": "3.658.1", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.6", + "@smithy/fetch-http-handler": "^3.2.8", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.21", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.3", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.21", + "@smithy/util-defaults-mode-node": "^3.0.21", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.658.1" + } + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.658.1.tgz", + "integrity": "sha512-yw9hc5blTnbT1V6mR7Cx9HGc9KQpcLQ1QXj8rntiJi6tIYu3aFNVEyy81JHL7NsuBSeQulJTvHO3y6r3O0sfRg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.658.1", + "@aws-sdk/core": "3.658.1", + "@aws-sdk/credential-provider-node": "3.658.1", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.6", + "@smithy/fetch-http-handler": "^3.2.8", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.21", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.3", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.21", + "@smithy/util-defaults-mode-node": "^3.0.21", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.658.1.tgz", + "integrity": "sha512-vJVMoMcSKXK2gBRSu9Ywwv6wQ7tXH8VL1fqB1uVxgCqBZ3IHfqNn4zvpMPWrwgO2/3wv7XFyikGQ5ypPTCw4jA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/core": "^2.4.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.4", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", + "fast-xml-parser": "4.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-cognito-identity": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.658.1.tgz", + "integrity": "sha512-JY4rZ4e2emL7PNHCU7F/BQV8PpQGEBZLkEoPD55RO4CitaIhlVZRpUCGLih+0Hw4MOnTUqJdfQBM+qZk6G+Now==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.658.1", + "@aws-sdk/types": "3.654.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.654.0.tgz", + "integrity": "sha512-kogsx3Ql81JouHS7DkheCDU9MYAvK0AokxjcshDveGmf7BbgbWCA8Fnb9wjQyNDaOXNvkZu8Z8rgkX91z324/w==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.658.1.tgz", + "integrity": "sha512-4ubkJjEVCZflxkZnV1JDQv8P2pburxk1LrEp55telfJRzXrnowzBKwuV2ED0QMNC448g2B3VCaffS+Ct7c4IWQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/fetch-http-handler": "^3.2.8", + "@smithy/node-http-handler": "^3.2.3", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "@smithy/util-stream": "^3.1.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.658.1.tgz", + "integrity": "sha512-2uwOamQg5ppwfegwen1ddPu5HM3/IBSnaGlaKLFhltkdtZ0jiqTZWUtX2V+4Q+buLnT0hQvLS/frQ+7QUam+0Q==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.654.0", + "@aws-sdk/credential-provider-http": "3.658.1", + "@aws-sdk/credential-provider-process": "3.654.0", + "@aws-sdk/credential-provider-sso": "3.658.1", + "@aws-sdk/credential-provider-web-identity": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@smithy/credential-provider-imds": "^3.2.3", + "@smithy/property-provider": "^3.1.6", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.658.1" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.658.1.tgz", + "integrity": "sha512-XwxW6N+uPXPYAuyq+GfOEdfL/MZGAlCSfB5gEWtLBFmFbikhmEuqfWtI6CD60OwudCUOh6argd21BsJf8o1SJA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.654.0", + "@aws-sdk/credential-provider-http": "3.658.1", + "@aws-sdk/credential-provider-ini": "3.658.1", + "@aws-sdk/credential-provider-process": "3.654.0", + "@aws-sdk/credential-provider-sso": "3.658.1", + "@aws-sdk/credential-provider-web-identity": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@smithy/credential-provider-imds": "^3.2.3", + "@smithy/property-provider": "^3.1.6", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.654.0.tgz", + "integrity": "sha512-PmQoo8sZ9Q2Ow8OMzK++Z9lI7MsRUG7sNq3E72DVA215dhtTICTDQwGlXH2AAmIp7n+G9LLRds+4wo2ehG4mkg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.658.1.tgz", + "integrity": "sha512-YOagVEsZEk9DmgJEBg+4MBXrPcw/tYas0VQ5OVBqC5XHNbi2OBGJqgmjVPesuu393E7W0VQxtJFDS00O1ewQgA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/client-sso": "3.658.1", + "@aws-sdk/token-providers": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.654.0.tgz", + "integrity": "sha512-6a2g9gMtZToqSu+CusjNK5zvbLJahQ9di7buO3iXgbizXpLXU1rnawCpWxwslMpT5fLgMSKDnKDrr6wdEk7jSw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.654.0" + } + }, + "node_modules/@aws-sdk/credential-providers": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.658.1.tgz", + "integrity": "sha512-lfXA6kZS6GHyi/67EbfrKdLoqHR6j7G35eFwaqxyNkfMhNBpAF0eZK3SYiwnzdR9+Wb/enTFawYiFbG5R+dQzA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/client-cognito-identity": "3.658.1", + "@aws-sdk/client-sso": "3.658.1", + "@aws-sdk/client-sts": "3.658.1", + "@aws-sdk/credential-provider-cognito-identity": "3.658.1", + "@aws-sdk/credential-provider-env": "3.654.0", + "@aws-sdk/credential-provider-http": "3.658.1", + "@aws-sdk/credential-provider-ini": "3.658.1", + "@aws-sdk/credential-provider-node": "3.658.1", + "@aws-sdk/credential-provider-process": "3.654.0", + "@aws-sdk/credential-provider-sso": "3.658.1", + "@aws-sdk/credential-provider-web-identity": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@smithy/credential-provider-imds": "^3.2.3", + "@smithy/property-provider": "^3.1.6", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.6", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.654.0.tgz", + "integrity": "sha512-D8GeJYmvbfWkQDtTB4owmIobSMexZel0fOoetwvgCQ/7L8VPph3Q2bn1TRRIXvH7wdt6DcDxA3tKMHPBkT3GlA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.654.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.568.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz", + "integrity": "sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.8.0.tgz", + "integrity": "sha512-YvFMowkXzLbXNM11yZtVLhUCmuG0ex7JKOH366ipjmHBhL3vpDcPAeWF+jf0X+jVXwFqo3UhsWUq4kH0ZPdu/g==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", + "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-http-compat": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-2.1.2.tgz", + "integrity": "sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-client": "^1.3.0", + "@azure/core-rest-pipeline": "^1.3.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-lro": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz", + "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.2.0", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-paging": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", + "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.17.0.tgz", + "integrity": "sha512-62Vv8nC+uPId3j86XJ0WI+sBf0jlqTqPUFCBNrGtlaUeQUIXWV/D8GE5A1d+Qx8H7OQojn2WguC8kChD6v0shA==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.8.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.9.0", + "@azure/logger": "^1.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.1.2.tgz", + "integrity": "sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.10.0.tgz", + "integrity": "sha512-dqLWQsh9Nro1YQU+405POVtXnwrIVqPyfUzc4zXCbThTg7+vNNaiMkwbX9AMXKyoFYFClxmB3s25ZFr3+jZkww==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/identity": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.4.1.tgz", + "integrity": "sha512-DwnG4cKFEM7S3T+9u05NstXU/HN0dk45kPOinUyNKsn5VWwpXd9sbPKEg6kgJzGbm1lMuhx9o31PVbCtM5sfBA==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.5.0", + "@azure/core-client": "^1.9.2", + "@azure/core-rest-pipeline": "^1.1.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.3.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^3.14.0", + "@azure/msal-node": "^2.9.2", + "events": "^3.0.0", + "jws": "^4.0.0", + "open": "^8.0.0", + "stoppable": "^1.1.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/identity/node_modules/@azure/abort-controller": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@azure/identity/node_modules/jwa": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz", + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@azure/identity/node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@azure/keyvault-keys": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@azure/keyvault-keys/-/keyvault-keys-4.8.0.tgz", + "integrity": "sha512-jkuYxgkw0aaRfk40OQhFqDIupqblIOIlYESWB6DKCVDxQet1pyv86Tfk9M+5uFM0+mCs6+MUHU+Hxh3joiUn4Q==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.3.0", + "@azure/core-client": "^1.5.0", + "@azure/core-http-compat": "^2.0.1", + "@azure/core-lro": "^2.2.0", + "@azure/core-paging": "^1.1.1", + "@azure/core-rest-pipeline": "^1.8.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.0.0", + "@azure/logger": "^1.0.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/keyvault-keys/node_modules/@azure/abort-controller": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@azure/logger": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.4.tgz", + "integrity": "sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/msal-browser": { + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.24.0.tgz", + "integrity": "sha512-JGNV9hTYAa7lsum9IMIibn2kKczAojNihGo1hi7pG0kNrcKej530Fl6jxwM05A44/6I079CSn6WxYxbVhKUmWg==", + "license": "MIT", + "dependencies": { + "@azure/msal-common": "14.15.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "14.15.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.15.0.tgz", + "integrity": "sha512-ImAQHxmpMneJ/4S8BRFhjt1MZ3bppmpRPYYNyzeQPeFN288YKbb8TmmISQEbtfkQ1BPASvYZU5doIZOPBAqENQ==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.14.0.tgz", + "integrity": "sha512-rrfzIpG3Q1rHjVYZmHAEDidWAZZ2cgkxlIcMQ8dHebRISaZ2KCV33Q8Vs+uaV6lxweROabNxKFlR2lIKagZqYg==", + "license": "MIT", + "dependencies": { + "@azure/msal-common": "14.15.0", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", + "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.25.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", + "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz", + "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.4", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", + "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", + "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", + "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", + "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz", + "integrity": "sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.7.tgz", + "integrity": "sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-decorators": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz", + "integrity": "sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", + "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", + "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz", + "integrity": "sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-typescript": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz", + "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", + "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", + "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz", + "integrity": "sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@balena/dockerignore": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", + "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", + "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^2.4.1" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz", + "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz", + "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.7.1", + "@csstools/css-tokenizer": "^2.4.1" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", + "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.13" + } + }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.40.1.tgz", + "integrity": "sha512-YORCdZSusAlBrFpZ77pJjc5r1bQs5caPWtAu+WWmiSo+8XaUzseapVrfAtiRFbQWnrBxxLLEwF6f6ZG/UgCQCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "comment-parser": "1.4.0", + "esquery": "^1.5.0", + "jsdoc-type-pratt-parser": "~4.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz", + "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz", + "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz", + "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz", + "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz", + "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz", + "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz", + "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz", + "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz", + "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz", + "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz", + "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz", + "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz", + "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz", + "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz", + "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", + "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", + "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz", + "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz", + "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz", + "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz", + "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "0.2.36", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz", + "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "1.2.36", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz", + "integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-regular-svg-icons": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.15.4.tgz", + "integrity": "sha512-9VNNnU3CXHy9XednJ3wzQp6SwNwT3XaM26oS4Rp391GsxVYA+0oDR2J194YCIWf7jNRCYKjUCOduxdceLrx+xw==", + "dev": true, + "hasInstallScript": true, + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4.tgz", + "integrity": "sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==", + "dev": true, + "hasInstallScript": true, + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "^0.2.36" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/vue-fontawesome": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.8.tgz", + "integrity": "sha512-yyHHAj4G8pQIDfaIsMvQpwKMboIZtcHTUvPqXjOHyldh1O1vZfH4W03VDPv5RvI9P6DLTzJQlmVgj9wCf7c2Fw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "vue": ">= 3.0.0 < 4" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "license": "MIT", + "optional": true + }, + "node_modules/@grpc/grpc-js": { + "version": "1.8.22", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.22.tgz", + "integrity": "sha512-oAjDdN7fzbUi+4hZjKG96MR6KTEubAeMpQEb+77qy+3r0Ua5xTFuie6JOLr4ZZgl5g+W5/uRTS2M1V8mVAFPuA==", + "license": "Apache-2.0", + "dependencies": { + "@grpc/proto-loader": "^0.7.0", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", + "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", + "license": "Apache-2.0", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.5", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@intlify/core-base": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.2.tgz", + "integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@intlify/devtools-if": "9.2.2", + "@intlify/message-compiler": "9.2.2", + "@intlify/shared": "9.2.2", + "@intlify/vue-devtools": "9.2.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@intlify/devtools-if": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.2.tgz", + "integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@intlify/shared": "9.2.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@intlify/message-compiler": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.2.tgz", + "integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@intlify/shared": "9.2.2", + "source-map": "0.6.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@intlify/shared": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.2.tgz", + "integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@intlify/vue-devtools": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz", + "integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@intlify/core-base": "9.2.2", + "@intlify/shared": "9.2.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@js-joda/core": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@js-joda/core/-/core-5.6.3.tgz", + "integrity": "sha512-T1rRxzdqkEXcou0ZprN1q9yDRlvzCPLqmlNt5IIsGBzoEVgLCCYrKEwc84+TvsXuAc95VAZwtWD2zVsKPY4bcA==", + "license": "BSD-3-Clause" + }, + "node_modules/@kurkle/color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@louislam/ping": { + "version": "0.4.4-mod.1", + "resolved": "https://registry.npmjs.org/@louislam/ping/-/ping-0.4.4-mod.1.tgz", + "integrity": "sha512-uMq6qwL9/VYh2YBbDEhM7ZzJ8YON+juw/3k+28P3s9ue3uDMQ56MNPfywXoRpsxkU8RgjN0TDzEhQDzO1WisMw==", + "license": "MIT", + "dependencies": { + "command-exists": "~1.2.9", + "underscore": "~1.13.6" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@louislam/sqlite3": { + "version": "15.1.6", + "resolved": "https://registry.npmjs.org/@louislam/sqlite3/-/sqlite3-15.1.6.tgz", + "integrity": "sha512-cVf7hcMrfywYnycatLvorngTFpL3BSWvEy7/NrEfcTyQX8xxj9fdeD553oCTv5fIAk85fluo6mzPq89V3YzrVA==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.0", + "node-addon-api": "^4.2.0", + "tar": "^6.1.11" + }, + "optionalDependencies": { + "node-gyp": "8.x" + }, + "peerDependencies": { + "node-gyp": "8.x" + }, + "peerDependenciesMeta": { + "node-gyp": { + "optional": true + } + } + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "license": "BSD-3-Clause", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", + "integrity": "sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==", + "license": "MIT", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, + "node_modules/@noble/ciphers": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.2.0.tgz", + "integrity": "sha512-6YBxJDAapHSdd3bLDv6x2wRPwq4QFMUaB3HvljNBUTThDd12eSm7/3F+2lnfzx2jvM+S6Nsy0jEt9QbPqSwqRw==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz", + "integrity": "sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.3.1" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", + "integrity": "sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "license": "MIT", + "optional": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.0.3" + } + }, + "node_modules/@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", + "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.40.0" + }, + "peerDependencies": { + "@octokit/core": ">=2" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", + "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.39.0", + "deprecation": "^2.3.1" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@playwright/test": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.39.0.tgz", + "integrity": "sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ==", + "deprecated": "Please update to the latest version of Playwright to test up-to-date browsers.", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.39.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.28", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@popperjs/core": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", + "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, + "node_modules/@redis/bloom": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-1.1.0.tgz", + "integrity": "sha512-9QovlxmpRtvxVbN0UBcv8WfdSMudNZZTFqCsnBszcQXqaZb/TVe30ScgGEO7u1EAIacTPAo7/oCYjYAxiHLanQ==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/client": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@redis/client/-/client-1.4.2.tgz", + "integrity": "sha512-oUdEjE0I7JS5AyaAjkD3aOXn9NhO7XKyPyXEyrgFDu++VrVBHUPnV6dgEya9TcMuj5nIJRuCzCm8ZP+c9zCHPw==", + "license": "MIT", + "dependencies": { + "cluster-key-slot": "1.1.1", + "generic-pool": "3.9.0", + "yallist": "4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@redis/client/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/@redis/graph": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/graph/-/graph-1.1.0.tgz", + "integrity": "sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/json": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@redis/json/-/json-1.0.4.tgz", + "integrity": "sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/search": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@redis/search/-/search-1.1.0.tgz", + "integrity": "sha512-NyFZEVnxIJEybpy+YskjgOJRNsfTYqaPbK/Buv6W2kmFNaRk85JiqjJZA5QkRmWvGbyQYwoO5QfDi2wHskKrQQ==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@redis/time-series": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-1.0.4.tgz", + "integrity": "sha512-ThUIgo2U/g7cCuZavucQTQzA9g9JbDDY2f64u3AbAoz/8vE2lt2U37LamDUVChhaDA3IRT9R6VvJwqnUfTJzng==", + "license": "MIT", + "peerDependencies": { + "@redis/client": "^1.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.2.tgz", + "integrity": "sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.5.tgz", + "integrity": "sha512-SU5cvamg0Eyu/F+kLeMXS7GoahL+OoizlclVFX3l5Ql6yNlywJJ0OuqTzUx0v+aHhPHEB/56CT06GQrRrGNYww==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.5.tgz", + "integrity": "sha512-S4pit5BP6E5R5C8S6tgU/drvgjtYW76FBuG6+ibG3tMvlD1h9LHVF9KmlmaUBQ8Obou7hEyS+0w+IR/VtxwNMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.5.tgz", + "integrity": "sha512-250ZGg4ipTL0TGvLlfACkIxS9+KLtIbn7BCZjsZj88zSg2Lvu3Xdw6dhAhfe/FjjXPVNCtcSp+WZjVsD3a/Zlw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.5.tgz", + "integrity": "sha512-D8brJEFg5D+QxFcW6jYANu+Rr9SlKtTenmsX5hOSzNYVrK5oLAEMTUgKWYJP+wdKyCdeSwnapLsn+OVRFycuQg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.5.tgz", + "integrity": "sha512-PNqXYmdNFyWNg0ma5LdY8wP+eQfdvyaBAojAXgO7/gs0Q/6TQJVXAXe8gwW9URjbS0YAammur0fynYGiWsKlXw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.5.tgz", + "integrity": "sha512-kSSCZOKz3HqlrEuwKd9TYv7vxPYD77vHSUvM2y0YaTGnFc8AdI5TTQRrM1yIp3tXCKrSL9A7JLoILjtad5t8pQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.5.tgz", + "integrity": "sha512-oTXQeJHRbOnwRnRffb6bmqmUugz0glXaPyspp4gbQOPVApdpRrY/j7KP3lr7M8kTfQTyrBUzFjj5EuHAhqH4/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.5.tgz", + "integrity": "sha512-qnOTIIs6tIGFKCHdhYitgC2XQ2X25InIbZFor5wh+mALH84qnFHvc+vmWUpyX97B0hNvwNUL4B+MB8vJvH65Fw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.5.tgz", + "integrity": "sha512-TMYu+DUdNlgBXING13rHSfUc3Ky5nLPbWs4bFnT+R6Vu3OvXkTkixvvBKk8uO4MT5Ab6lC3U7x8S8El2q5o56w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.5.tgz", + "integrity": "sha512-PTQq1Kz22ZRvuhr3uURH+U/Q/a0pbxJoICGSprNLAoBEkyD3Sh9qP5I0Asn0y0wejXQBbsVMRZRxlbGFD9OK4A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.5.tgz", + "integrity": "sha512-bR5nCojtpuMss6TDEmf/jnBnzlo+6n1UhgwqUvRoe4VIotC7FG1IKkyJbwsT7JDsF2jxR+NTnuOwiGv0hLyDoQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.5.tgz", + "integrity": "sha512-N0jPPhHjGShcB9/XXZQWuWBKZQnC1F36Ce3sDqWpujsGjDz/CQtOL9LgTrJ+rJC8MJeesMWrMWVLKKNR/tMOCA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.5.tgz", + "integrity": "sha512-uBa2e28ohzNNwjr6Uxm4XyaA1M/8aTgfF2T7UIlElLaeXkgpmIJ2EitVNQxjO9xLLLy60YqAgKn/AqSpCUkE9g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.5.tgz", + "integrity": "sha512-RXT8S1HP8AFN/Kr3tg4fuYrNxZ/pZf1HemC5Tsddc6HzgGnJm0+Lh5rAHJkDuW3StI0ynNXukidROMXYl6ew8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.5.tgz", + "integrity": "sha512-ElTYOh50InL8kzyUD6XsnPit7jYCKrphmddKAe1/Ytt74apOxDq5YEcbsiKs0fR3vff3jEneMM+3I7jbqaMyBg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.5.tgz", + "integrity": "sha512-+lvL/4mQxSV8MukpkKyyvfwhH266COcWlXE/1qxwN08ajovta3459zrjLghYMgDerlzNwLAcFpvU+WWE5y6nAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/@scure/bip32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz", + "integrity": "sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.1.0", + "@noble/hashes": "~1.3.1", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", + "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.3.0", + "@scure/base": "~1.1.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@smithy/abort-controller": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.4.tgz", + "integrity": "sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.8.tgz", + "integrity": "sha512-Tv1obAC18XOd2OnDAjSWmmthzx6Pdeh63FbLin8MlPiuJ2ATpKkq0NcNOJFr0dO+JmZXnwu8FQxKJ3TKJ3Hulw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.6", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.4.6.tgz", + "integrity": "sha512-6lQQp99hnyuNNIzeTYSzCUXJHwvvFLY7hfdFGSJM95tjRDJGfzWYFRBXPaM9766LiiTsQ561KErtbufzUFSYUg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.21", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.3.tgz", + "integrity": "sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.8.tgz", + "integrity": "sha512-Lqe0B8F5RM7zkw//6avq1SJ8AfaRd3ubFUS1eVp5WszV7p6Ne5hQ4dSuMHDpNRPhgTvj4va9Kd/pcVigHEHRow==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/protocol-http": "^4.1.3", + "@smithy/querystring-builder": "^3.0.6", + "@smithy/types": "^3.4.2", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/hash-node": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.6.tgz", + "integrity": "sha512-c/FHEdKK/7DU2z6ZE91L36ahyXWayR3B+FzELjnYq7wH5YqIseM24V+pWCS9kFn1Ln8OFGTf+pyYPiHZuX0s/Q==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^3.4.2", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.6.tgz", + "integrity": "sha512-czM7Ioq3s8pIXht7oD+vmgy4Wfb4XavU/k/irO8NdXFFOx7YAlsCCcKOh/lJD1mJSYQqiR7NmpZ9JviryD/7AQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.8.tgz", + "integrity": "sha512-VuyszlSO49WKh3H9/kIO2kf07VUwGV80QRiaDxUfP8P8UKlokz381ETJvwLhwuypBYhLymCYyNhB3fLAGBX2og==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.3.tgz", + "integrity": "sha512-KeM/OrK8MVFUsoJsmCN0MZMVPjKKLudn13xpgwIMpGTYpA8QZB2Xq5tJ+RE6iu3A6NhOI4VajDTwBsm8pwwrhg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/middleware-serde": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", + "@smithy/util-middleware": "^3.0.6", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.21.tgz", + "integrity": "sha512-/h0fElV95LekVVEJuSw+aI11S1Y3zIUwBc6h9ZbUv43Gl2weXsbQwjLoet6j/Qtb0phfrSxS6pNg6FqgJOWZkA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/node-config-provider": "^3.1.7", + "@smithy/protocol-http": "^4.1.3", + "@smithy/service-error-classification": "^3.0.6", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-retry/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.6.tgz", + "integrity": "sha512-KKTUSl1MzOM0MAjGbudeaVNtIDo+PpekTBkCNwvfZlKndodrnvRo+00USatiyLOc0ujjO9UydMRu3O9dYML7ag==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.6.tgz", + "integrity": "sha512-2c0eSYhTQ8xQqHMcRxLMpadFbTXg6Zla5l0mwNftFCZMQmuhI7EbAJMx6R5eqfuV3YbJ3QGyS3d5uSmrHV8Khg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.7.tgz", + "integrity": "sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/property-provider": "^3.1.6", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.2.3.tgz", + "integrity": "sha512-/gcm5DJ3k1b1zEInzBGAZC8ntJ+jwrz1NcSIu+9dSXd1FfG0G6QgkDI40tt8/WYUbHtLyo8fEqtm2v29koWo/w==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/abort-controller": "^3.1.4", + "@smithy/protocol-http": "^4.1.3", + "@smithy/querystring-builder": "^3.0.6", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.6.tgz", + "integrity": "sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.3.tgz", + "integrity": "sha512-GcbMmOYpH9iRqtC05RbRnc/0FssxSTHlmaNhYBTgSgNCYpdR3Kt88u5GAZTBmouzv+Zlj/VRv92J9ruuDeJuEw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.6.tgz", + "integrity": "sha512-sQe08RunoObe+Usujn9+R2zrLuQERi3CWvRO3BvnoWSYUaIrLKuAIeY7cMeDax6xGyfIP3x/yFWbEKSXvOnvVg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^3.4.2", + "@smithy/util-uri-escape": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.6.tgz", + "integrity": "sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.6.tgz", + "integrity": "sha512-53SpchU3+DUZrN7J6sBx9tBiCVGzsib2e4sc512Q7K9fpC5zkJKs6Z9s+qbMxSYrkEkle6hnMtrts7XNkMJJMg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^3.4.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.7.tgz", + "integrity": "sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.4.tgz", + "integrity": "sha512-72MiK7xYukNsnLJI9NqvUHqTu0ziEsfMsYNlWpiJfuGQnCTFKpckThlEatirvcA/LmT1h7rRO+pJD06PYsPu9Q==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.3.5.tgz", + "integrity": "sha512-7IZi8J3Dr9n3tX+lcpmJ/5tCYIqoXdblFBaPuv0SEKZFRpCxE+TqIWL6I3t7jLlk9TWu3JSvEZAhtjB9yvB+zA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", + "@smithy/util-stream": "^3.1.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.4.2.tgz", + "integrity": "sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.6.tgz", + "integrity": "sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/querystring-parser": "^3.0.6", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/util-base64": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", + "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", + "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", + "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.21.tgz", + "integrity": "sha512-M/FhTBk4c/SsB91dD/M4gMGfJO7z/qJaM9+XQQIqBOf4qzZYMExnP7R4VdGwxxH8IKMGW+8F0I4rNtVRrcfPoA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/property-provider": "^3.1.6", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.21.tgz", + "integrity": "sha512-NiLinPvF86U3S2Pdx/ycqd4bnY5dmFSPNL5KYRwbNjqQFS09M5Wzqk8BNk61/47xCYz1X/6KeiSk9qgYPTtuDw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/config-resolver": "^3.0.8", + "@smithy/credential-provider-imds": "^3.2.3", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.2.tgz", + "integrity": "sha512-FEISzffb4H8DLzGq1g4MuDpcv6CIG15fXoQzDH9SjpRJv6h7J++1STFWWinilG0tQh9H1v2UKWG19Jjr2B16zQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", + "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.6.tgz", + "integrity": "sha512-BxbX4aBhI1O9p87/xM+zWy0GzT3CEVcXFPBRDoHAM+pV0eSW156pR+PSYEz0DQHDMYDsYAflC2bQNz2uaDBUZQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.6.tgz", + "integrity": "sha512-BRZiuF7IwDntAbevqMco67an0Sr9oLQJqqRCsSPZZHYRnehS0LHDAkJk/pSmI7Z8c/1Vet294H7fY2fWUgB+Rg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/service-error-classification": "^3.0.6", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.8.tgz", + "integrity": "sha512-hoKOqSmb8FD3WLObuB5hwbM7bNIWgcnvkThokTvVq7J5PKjlLUK5qQQcB9zWLHIoSaIlf3VIv2OxZY2wtQjcRQ==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/fetch-http-handler": "^3.2.8", + "@smithy/node-http-handler": "^3.2.3", + "@smithy/types": "^3.4.2", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", + "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "license": "MIT" + }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@tediousjs/connection-string": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@tediousjs/connection-string/-/connection-string-0.5.0.tgz", + "integrity": "sha512-7qSgZbincDDDFyRweCIEvZULFAw5iz/DeunhvuxpL31nfntX3P4Yd4HkHBRg9H8CdqY1e5WFN1PZIz/REL9MVQ==", + "license": "MIT" + }, + "node_modules/@testcontainers/hivemq": { + "version": "10.13.1", + "resolved": "https://registry.npmjs.org/@testcontainers/hivemq/-/hivemq-10.13.1.tgz", + "integrity": "sha512-LvXx+l6XEOckAX9GwD4+WQgo/Y5jITDAfyultLd9jMl/OlzBU6sLfHl/vYFjG17xZObiXznGDrKVQYIp70wxZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "testcontainers": "^10.13.1" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bootstrap": { + "version": "5.1.13", + "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-5.1.13.tgz", + "integrity": "sha512-1hIIOgfkMlyQCQz/3ae53xr6ZN2d6EDj/n3G+Sh/LBsBUVigyDmnCbLwsaXJJ1GBGlkjgfXVoyIvEPowQw25xQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@popperjs/core": "^2.9.2" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/content-disposition": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.8.tgz", + "integrity": "sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==", + "license": "MIT" + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "license": "MIT" + }, + "node_modules/@types/cookies": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.9.0.tgz", + "integrity": "sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==", + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/express": "*", + "@types/keygrip": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/docker-modem": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.6.tgz", + "integrity": "sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/ssh2": "*" + } + }, + "node_modules/@types/dockerode": { + "version": "3.3.31", + "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.3.31.tgz", + "integrity": "sha512-42R9eoVqJDSvVspV89g7RwRqfNExgievLNWoHkg7NoWIqAmavIbgQBb4oc0qRtHkxE+I3Xxvqv7qVXFABKPBTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/docker-modem": "*", + "@types/node": "*", + "@types/ssh2": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", + "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-assert": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.5.tgz", + "integrity": "sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g==", + "license": "MIT" + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/keygrip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.6.tgz", + "integrity": "sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==", + "license": "MIT" + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/koa": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.15.0.tgz", + "integrity": "sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==", + "license": "MIT", + "dependencies": { + "@types/accepts": "*", + "@types/content-disposition": "*", + "@types/cookies": "*", + "@types/http-assert": "*", + "@types/http-errors": "*", + "@types/keygrip": "*", + "@types/koa-compose": "*", + "@types/node": "*" + } + }, + "node_modules/@types/koa-compose": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.8.tgz", + "integrity": "sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==", + "license": "MIT", + "dependencies": { + "@types/koa": "*" + } + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.16.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.10.tgz", + "integrity": "sha512-vQUKgWTjEIRFCvK6CyriPH3MZYiYlNy0fKiEYHWbcoWLEgs4opurGGKlebrTLqdSMIbXImH6XExNiIyNUv3WpA==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.9.16", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", + "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" + }, + "node_modules/@types/readable-stream": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.15.tgz", + "integrity": "sha512-oAZ3kw+kJFkEqyh7xORZOku1YAKvsFTogRY8kVl4vHpEKiDkfnSA/My8haRE7fvmix5Zyy+1pwzOi7yycGLBJw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/ssh2": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.15.1.tgz", + "integrity": "sha512-ZIbEqKAsi5gj35y4P4vkJYly642wIbY6PqoN0xiyQGshKUGXR9WQjF/iF9mXBQ8uBKy3ezfsCkcoHKhd0BzuDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "^18.11.18" + } + }, + "node_modules/@types/ssh2-streams": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/@types/ssh2-streams/-/ssh2-streams-0.1.12.tgz", + "integrity": "sha512-Sy8tpEmCce4Tq0oSOYdfqaBpA3hDM8SoxoFh5vzFsu2oL+znzGz8oVWW7xb4K920yYMUY+PIG31qZnFMfPWNCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ssh2/node_modules/@types/node": { + "version": "18.19.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.54.tgz", + "integrity": "sha512-+BRgt0G5gYjTvdLac9sIeE0iZcJxi4Jc4PV5EUzqi+88jmQLr+fRZdv2tCTV7IHKSGxM6SaLoOXQWWUiLUItMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/ssh2/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", + "license": "MIT" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.5.tgz", + "integrity": "sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.5.tgz", + "integrity": "sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.5.tgz", + "integrity": "sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.6", + "@babel/types": "^7.25.6", + "@vue/babel-helper-vue-transform-on": "1.2.5", + "@vue/babel-plugin-resolve-type": "1.2.5", + "html-tags": "^3.3.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + } + } + }, + "node_modules/@vue/babel-plugin-resolve-type": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.5.tgz", + "integrity": "sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/parser": "^7.25.6", + "@vue/compiler-sfc": "^3.5.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-core": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.10.tgz", + "integrity": "sha512-iXWlk+Cg/ag7gLvY0SfVucU8Kh2CjysYZjhhP70w9qI4MvSox4frrP+vDGvtQuzIcgD8+sxM6lZvCtdxGunTAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.10", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-dom": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.10.tgz", + "integrity": "sha512-DyxHC6qPcktwYGKOIy3XqnHRrrXyWR2u91AjP+nLkADko380srsC2DC3s7Y1Rk6YfOlxOlvEQKa9XXmLI+W4ZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.10", + "@vue/shared": "3.5.10" + } + }, + "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-sfc": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.10.tgz", + "integrity": "sha512-to8E1BgpakV7224ZCm8gz1ZRSyjNCAWEplwFMWKlzCdP9DkMKhRRwt0WkCjY7jkzi/Vz3xgbpeig5Pnbly4Tow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.10", + "@vue/compiler-dom": "3.5.10", + "@vue/compiler-ssr": "3.5.10", + "@vue/shared": "3.5.10", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.47", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/compiler-ssr": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.10.tgz", + "integrity": "sha512-hxP4Y3KImqdtyUKXDRSxKSRkSm1H9fCvhojEYrnaoWhE4w/y8vwWhnosJoPPe2AXm5sU7CSbYYAgkt2ZPhDz+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.10", + "@vue/shared": "3.5.10" + } + }, + "node_modules/@vue/babel-plugin-resolve-type/node_modules/@vue/shared": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.10.tgz", + "integrity": "sha512-VkkBhU97Ki+XJ0xvl4C9YJsIZ2uIlQ7HqPpZOS3m9VCvmROPaChZU6DexdMJqvz9tbgG+4EtFVrSuailUq5KGQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz", + "integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.24.7", + "@vue/shared": "3.4.38", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz", + "integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.4.38", + "@vue/shared": "3.4.38" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz", + "integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.24.7", + "@vue/compiler-core": "3.4.38", + "@vue/compiler-dom": "3.4.38", + "@vue/compiler-ssr": "3.4.38", + "@vue/shared": "3.4.38", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.10", + "postcss": "^8.4.40", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz", + "integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.4.38", + "@vue/shared": "3.4.38" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/devtools-core": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.4.6.tgz", + "integrity": "sha512-7ATNPEbVqThOOAp2bg/YUIm9MqqgimbSk24D05hdXUp89JlXX12aTzdrWd9xZRwS78hDR+wCToHl1C/8sopBrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.4.6", + "@vue/devtools-shared": "^7.4.6", + "mitt": "^3.0.1", + "nanoid": "^3.3.4", + "pathe": "^1.1.2", + "vite-hot-client": "^0.2.3" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.4.6.tgz", + "integrity": "sha512-NbYBwPWgEic1AOd9bWExz9weBzFdjiIfov0yRn4DrRfR+EQJCI9dn4I0XS7IxYGdkmUJi8mFW42LLk18WsGqew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^7.4.6", + "birpc": "^0.2.17", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.1" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.4.6.tgz", + "integrity": "sha512-rPeSBzElnHYMB05Cc056BQiJpgocQjY8XVulgni+O9a9Gr9tNXgPteSzFFD+fT/iWMxNuUgGKs9CuW5DZewfIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.38.tgz", + "integrity": "sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/shared": "3.4.38" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.38.tgz", + "integrity": "sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.4.38", + "@vue/shared": "3.4.38" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.38.tgz", + "integrity": "sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.4.38", + "@vue/runtime-core": "3.4.38", + "@vue/shared": "3.4.38", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.38.tgz", + "integrity": "sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.4.38", + "@vue/shared": "3.4.38" + }, + "peerDependencies": { + "vue": "3.4.38" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.38.tgz", + "integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vuepic/vue-datepicker": { + "version": "3.4.8", + "resolved": "https://registry.npmjs.org/@vuepic/vue-datepicker/-/vue-datepicker-3.4.8.tgz", + "integrity": "sha512-nbuMA7IgjtT99LqcjSTSUcl7omTZSB+7vYSWQ9gQm31Frm/1wn54fT1Q0HaRD9nHXX982AACbqeND4K80SKONw==", + "dev": true, + "license": "MIT", + "dependencies": { + "date-fns": "^2.29.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "vue": ">=3.2.0" + } + }, + "node_modules/@vvo/tzdb": { + "version": "6.145.0", + "resolved": "https://registry.npmjs.org/@vvo/tzdb/-/tzdb-6.145.0.tgz", + "integrity": "sha512-X3DTmeEzsZi/ZkYXofW04t1bFInYUk6SJBuNWPvV9wjCp9fI2C2n6OTDT9+YLKCJTosolMx1YKZWMJQykJerPQ==", + "license": "MIT" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "license": "ISC" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/aedes": { + "version": "0.46.3", + "resolved": "https://registry.npmjs.org/aedes/-/aedes-0.46.3.tgz", + "integrity": "sha512-i3B+H74uNRhlqcs/JdrMp7e3daz4Cwls0x4yLcfjGXz2tIwnxhF6od4m86O6yyNdz/Gg3jfY3q0sc/Cz8qzg6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "aedes-packet": "^2.3.1", + "aedes-persistence": "^8.1.3", + "bulk-write-stream": "^2.0.1", + "end-of-stream": "^1.4.4", + "fastfall": "^1.5.1", + "fastparallel": "^2.4.1", + "fastseries": "^2.0.0", + "hyperid": "^3.0.0", + "mqemitter": "^4.5.0", + "mqtt-packet": "^7.1.2", + "readable-stream": "^3.6.0", + "retimer": "^3.0.0", + "reusify": "^1.0.4", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/aedes-packet": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/aedes-packet/-/aedes-packet-2.3.1.tgz", + "integrity": "sha512-LqBd57uc2rui2RbjycW17dylglejG26mM4ewVXGNDnVp/SUHFVEgm7d1HTmYrnSkSCNoHti042qgcTwv/F+BtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mqtt-packet": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/aedes-packet/node_modules/mqtt-packet": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz", + "integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.0.2", + "debug": "^4.1.1", + "process-nextick-args": "^2.0.1" + } + }, + "node_modules/aedes-persistence": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/aedes-persistence/-/aedes-persistence-8.1.3.tgz", + "integrity": "sha512-VMCjEV+2g1TNJb/IlDEUy6SP9crT+QUhe2xc6UjyqrFNBNgTvHmOefXY7FxWrwmR2QA02vwg3+5p/JXkyg/Dkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "aedes-packet": "^2.3.1", + "from2": "^2.3.0", + "qlobber": "^5.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "license": "MIT", + "optional": true, + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", + "optional": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/anafanafo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anafanafo/-/anafanafo-2.0.0.tgz", + "integrity": "sha512-Nlfq7NC4AOkTJerWRIZcOAiMNtIDVIGWGvQ98O7Jl6Kr2Dk0dX5u4MqN778kSRTy5KRqchpLdF2RtLFEz9FVkQ==", + "license": "MIT", + "dependencies": { + "char-width-table-consumer": "^1.0.0" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "license": "ISC" + }, + "node_modules/archiver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.2", + "async": "^3.2.4", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^10.0.0", + "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/archiver-utils/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/archiver-utils/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/archiver/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/archiver/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/args-parser": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/args-parser/-/args-parser-1.3.0.tgz", + "integrity": "sha512-If3Zi4BSjlQIJ9fgAhSiKi0oJtgMzSqh0H4wvl7XSeO16FKx7QqaHld8lZeEajPX7y1C5qKKeNgyrfyvmjmjUQ==", + "license": "Apache-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/asn1-ber": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/asn1-ber/-/asn1-ber-1.2.2.tgz", + "integrity": "sha512-CbNem/7hxrjSiOAOOTX4iZxu+0m3jiLqlsERQwwPM1IDR/22M8IPpA1VVndCLw5KtjRYyRODbvAEIfuTogNDng==", + "license": "MIT" + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-lock": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz", + "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/await-lock": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/await-lock/-/await-lock-2.2.2.tgz", + "integrity": "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.28.1.tgz", + "integrity": "sha512-iUcGA5a7p0mVb4Gm/sy+FSECNkPFT4y7wt6OM/CDpO/OnNCvSs3PoMG8ibrC9jRoGYU0gUK5pXVC4NPXq6lHRQ==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/babel-plugin-add-module-exports": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz", + "integrity": "sha512-3AN/9V/rKuv90NG65m4tTHsI04XrCKsWbztIcW7a8H5iIN7WlvWucRtVV0V/rT4QvtA11n5Vmp20fLwfMWqp6g==", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "dev": true, + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/badge-maker": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/badge-maker/-/badge-maker-3.3.1.tgz", + "integrity": "sha512-OO/PS7Zg2E6qaUWzHEHt21Q5VjcFBAJVA8ztgT/fIdSZFBUwoyeo0ZhA6V5tUM8Vcjq8DJl6jfGhpjESssyqMQ==", + "license": "CC0-1.0", + "dependencies": { + "anafanafo": "2.0.0", + "css-color-converter": "^2.0.0" + }, + "bin": { + "badge": "lib/badge-cli.js" + }, + "engines": { + "node": ">= 10", + "npm": ">= 5" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", + "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, + "node_modules/bare-fs": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz", + "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-events": "^2.0.0", + "bare-path": "^2.0.0", + "bare-stream": "^2.0.0" + } + }, + "node_modules/bare-os": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", + "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, + "node_modules/bare-path": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", + "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-os": "^2.1.0" + } + }, + "node_modules/bare-stream": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.3.0.tgz", + "integrity": "sha512-pVRWciewGUeCyKEuRxwv06M079r+fRjAQjBEK2P6OYGrO43O+Z0LrPZZEjlc4mB6C2RpZ9AxJ1s7NLEtOHO6eA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "b4a": "^1.6.6", + "streamx": "^2.20.0" + } + }, + "node_modules/barse": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/barse/-/barse-0.4.3.tgz", + "integrity": "sha512-UEpvriJqAn8zuVinYICuKoPttZy3XxXEoqX/V2uYAL4zzJRuNzCK3+20nAu3YUIa2U7G53kf90wfBIp9/A+Odw==", + "license": "MIT", + "dependencies": { + "readable-stream": "~1.0.2" + } + }, + "node_modules/barse/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" + }, + "node_modules/barse/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/barse/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "license": "MIT", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", + "license": "MIT" + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/binary-search": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/binary-search/-/binary-search-1.3.6.tgz", + "integrity": "sha512-nbE1WxOTTrUWIfsfZ4aHGYu5DOuNkbxGokjV6Z2kxfJK3uaAb8zNK1muzOeipoLHZjInT4Br88BHpzevc681xA==", + "license": "CC0-1.0" + }, + "node_modules/bintrees": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", + "integrity": "sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==", + "license": "MIT" + }, + "node_modules/birpc": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.17.tgz", + "integrity": "sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/bootstrap": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + }, + "peerDependencies": { + "@popperjs/core": "^2.10.2" + } + }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "license": "MIT", + "optional": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", + "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001663", + "electron-to-chromium": "^1.5.28", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bson": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", + "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", + "license": "Apache-2.0", + "dependencies": { + "buffer": "^5.6.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/buildcheck": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz", + "integrity": "sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bulk-write-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bulk-write-stream/-/bulk-write-stream-2.0.1.tgz", + "integrity": "sha512-XWOLjgHtpDasHfwM8oO4df1JoZwa7/OwTsXDzh4rUTo+9CowzeOFBZz43w+H14h1fyq+xl28tVIBrdjcjj4Gug==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/byline": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", + "integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC", + "optional": true + }, + "node_modules/cacheable-lookup": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.0.4.tgz", + "integrity": "sha512-mbcDEZCkv2CZF4G01kr8eBd/5agkt9oCqz75tJMSIsquvRZ2sL6Hi5zGVKi/0OSC9oO1GHfJ2AV0ZIOY9vye0A==", + "license": "MIT", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001664", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz", + "integrity": "sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/char-width-table-consumer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/char-width-table-consumer/-/char-width-table-consumer-1.0.0.tgz", + "integrity": "sha512-Fz4UD0LBpxPgL9i29CJ5O4KANwaMnX/OhhbxzvNa332h+9+nRKyeuLw4wA51lt/ex67+/AdsoBQJF3kgX2feYQ==", + "license": "MIT", + "dependencies": { + "binary-search": "^1.3.5" + } + }, + "node_modules/chardet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-1.4.0.tgz", + "integrity": "sha512-NpwMDdSIprbYx1CLnfbxEIarI0Z+s9MssEgggMNheGM+WD68yOhV7IEA/3r6tr0yTRgQD0HuZJDw32s99i6L+A==", + "license": "MIT" + }, + "node_modules/chart.js": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.2.1.tgz", + "integrity": "sha512-6YbpQ0nt3NovAgOzbkSSeeAQu/3za1319dPUQTXn9WcOpywM8rGKxJHrhS8V8xEkAlk8YhEfjbuAPfUyp6jIsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": "^7.0.0" + } + }, + "node_modules/chartjs-adapter-dayjs-4": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chartjs-adapter-dayjs-4/-/chartjs-adapter-dayjs-4-1.0.4.tgz", + "integrity": "sha512-yy9BAYW4aNzPVrCWZetbILegTRb7HokhgospPoC3b5iZ5qdlqNmXts2KdSp6AqnjkPAp/YWyHDxLvIvwt5x81w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "chart.js": ">=4.0.1", + "dayjs": "^1.9.7" + } + }, + "node_modules/check-password-strength": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/check-password-strength/-/check-password-strength-2.0.10.tgz", + "integrity": "sha512-HRM5ICPmtnNtLnTv2QrfVkq1IxI9z3bzYpDJ1k5ixwD9HtJGHuv265R6JmHOV6r8wLhQMlULnIUVpkrC2yaiCw==", + "license": "MIT" + }, + "node_modules/cheerio": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", + "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "encoding-sniffer": "^0.2.0", + "htmlparser2": "^9.1.0", + "parse5": "^7.1.2", + "parse5-htmlparser2-tree-adapter": "^7.0.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^6.19.5", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=18.17" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cheerio/node_modules/undici": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", + "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", + "license": "MIT", + "engines": { + "node": ">=18.17" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/chroma-js": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz", + "integrity": "sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==", + "license": "(BSD-3-Clause AND Apache-2.0)" + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cluster-key-slot": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.1.tgz", + "integrity": "sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/comment-parser": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.0.tgz", + "integrity": "sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/commist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/commist/-/commist-1.1.0.tgz", + "integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==", + "license": "MIT", + "dependencies": { + "leven": "^2.1.0", + "minimist": "^1.1.0" + } + }, + "node_modules/commist/node_modules/leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "license": "MIT" + }, + "node_modules/compress-commons": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/compress-commons/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/compress-commons/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "engines": [ + "node >= 6.0" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concurrently": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz", + "integrity": "sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "date-fns": "^2.29.1", + "lodash": "^4.17.21", + "rxjs": "^7.0.0", + "shell-quote": "^1.7.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^17.3.1" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/concurrently/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concurrently/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "license": "ISC" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/copy-anything": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", + "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/core-js": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.1.tgz", + "integrity": "sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cpu-features": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.10.tgz", + "integrity": "sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "buildcheck": "~0.0.6", + "nan": "^2.19.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "dev": true, + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/crc32-stream/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/crc32-stream/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/croner": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/croner/-/croner-8.1.2.tgz", + "integrity": "sha512-ypfPFcAXHuAZRCzo3vJL6ltENzniTjwe/qsLleH1V2/7SRDjgvRQyrLmumFTLmjFax4IuSxfGXEn79fozXcJog==", + "license": "MIT", + "engines": { + "node": ">=18.0" + } + }, + "node_modules/cronstrue": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-2.24.0.tgz", + "integrity": "sha512-A1of24mAGz+OWrdGsxT9BOnDqn2ba182hie8Jx0UcEC2t+ZKtfAJxaFntKUgR7sIisU297fgHBSlNhMIfvAkSA==", + "dev": true, + "license": "MIT", + "bin": { + "cronstrue": "bin/cli.js" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-color-converter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-color-converter/-/css-color-converter-2.0.0.tgz", + "integrity": "sha512-oLIG2soZz3wcC3aAl/7Us5RS8Hvvc6I8G8LniF/qfMmrm7fIKQ8RIDDRZeKyGL2SrWfNqYspuLShbnjBMVWm8g==", + "license": "MIT", + "dependencies": { + "color-convert": "^0.5.2", + "color-name": "^1.1.4", + "css-unit-converter": "^1.1.2" + } + }, + "node_modules/css-color-converter/node_modules/color-convert": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", + "integrity": "sha512-RwBeO/B/vZR3dfKL1ye/vx8MHZ40ugzpyfeVG5GsiuGnrlMWe2o8wxBbLCpw9CsxV+wHuzYlCiWnybrIA0ling==" + }, + "node_modules/css-color-converter/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/css-functions-list": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", + "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12 || >=16" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-unit-converter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", + "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==", + "license": "MIT" + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT" + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/dev-null": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dev-null/-/dev-null-0.1.1.tgz", + "integrity": "sha512-nMNZG0zfMgmdv8S5O0TM5cpwNbGKRGPCxVsr0SmA3NZZy9CYBbuNLL0PD3Acx9e5LIUgwONXtM9kM6RlawPxEQ==", + "license": "MIT" + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==", + "dev": true, + "license": "MIT" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/dns2/-/dns2-2.0.5.tgz", + "integrity": "sha512-dznYrQU+Txcz++klGLBY9YR3WLOGHTy2vAKAqF+yYw1KaKFm5f5Y4jbbFEvohJf8YtZ0J2SzZlZx2k6LV4zJqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/docker-compose": { + "version": "0.24.8", + "resolved": "https://registry.npmjs.org/docker-compose/-/docker-compose-0.24.8.tgz", + "integrity": "sha512-plizRs/Vf15H+GCVxq2EUvyPK7ei9b/cVesHvjnX4xaXjM9spHe2Ytq0BitndFgvTJ3E3NljPNUEl7BAN43iZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "yaml": "^2.2.2" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/docker-modem": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-3.0.8.tgz", + "integrity": "sha512-f0ReSURdM3pcKPNS30mxOHSbaFLcknGmQjwSfmbcdOw1XWKXVhukM3NJHhr7NpY9BIyyWQb0EBo3KQvvuU5egQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.1.1", + "readable-stream": "^3.5.0", + "split-ca": "^1.0.1", + "ssh2": "^1.11.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/dockerode": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-3.3.5.tgz", + "integrity": "sha512-/0YNa3ZDNeLr/tSckmD69+Gq+qVNhvKfAHNeZJBnp7EOP6RGKV8ORrJHkUn20So5wU+xxT7+1n5u8PjHbfjbSA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@balena/dockerignore": "^1.0.2", + "docker-modem": "^3.0.0", + "tar-fs": "~2.0.1" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/dockerode/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "license": "ISC" + }, + "node_modules/dockerode/node_modules/tar-fs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", + "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + }, + "node_modules/dockerode/node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dompurify": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.7.tgz", + "integrity": "sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==", + "dev": true, + "license": "(MPL-2.0 OR Apache-2.0)" + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/duplexify": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.29", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz", + "integrity": "sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding-sniffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", + "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/engine.io": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.1.tgz", + "integrity": "sha512-NEpDCw9hrvBW+hVEOK4T7v0jFJ++KgtPl4jKFwsZVfG1XhS0dCrSb3VMb9gPAd7VAdW52VT1EnaNiU2vM8C0og==", + "license": "MIT", + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-client": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.1.tgz", + "integrity": "sha512-aYuoak7I+R83M/BBPIOs2to51BmFIpC1wZe6zZzMrT2llVsHy5cvcmdsJgP2Qz6smHu+sD9oexiSUAVd8OfBPw==", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1", + "xmlhttprequest-ssl": "~2.1.1" + } + }, + "node_modules/engine.io-client/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "license": "MIT", + "optional": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser-es": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-0.1.5.tgz", + "integrity": "sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.14.0.tgz", + "integrity": "sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint/eslintrc": "^1.2.2", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "46.4.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.4.6.tgz", + "integrity": "sha512-z4SWYnJfOqftZI+b3RM9AtWL1vF/sLWE/LlO9yOKDof9yN2+n3zOdOJTGX/pRE/xnPsooOLG2Rq6e4d+XW3lNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@es-joy/jsdoccomment": "~0.40.1", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.0", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "is-builtin-module": "^3.2.1", + "semver": "^7.5.4", + "spdx-expression-parse": "^3.0.1" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-vue": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.7.1.tgz", + "integrity": "sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-utils": "^3.0.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^8.0.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/event-to-promise": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/event-to-promise/-/event-to-promise-0.7.0.tgz", + "integrity": "sha512-VOBBfyaADfe378ZzG0tgkzmsvzUyeU5arehrFzNRt5yaASUDshgctTwSrPI17ocAwR3+YftsxRClHF+GBKFByQ==", + "deprecated": "Use promise-toolbox/fromEvent instead", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/express": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.10", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-basic-auth": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/express-basic-auth/-/express-basic-auth-1.2.1.tgz", + "integrity": "sha512-L6YQ1wQ/mNjVLAmK3AG1RK6VkokA1BIY6wmiH304Xtt/cLTps40EusZsU1Uop+v9lTDPxdtzbFmdXfFO3KEnwA==", + "license": "MIT", + "dependencies": { + "basic-auth": "^2.0.1" + } + }, + "node_modules/express-static-gzip": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/express-static-gzip/-/express-static-gzip-2.1.8.tgz", + "integrity": "sha512-g8tiJuI9Y9Ffy59ehVXvqb0hhP83JwZiLxzanobPaMbkB5qBWA8nuVgd+rcd5qzH3GkgogTALlc0BaADYwnMbQ==", + "license": "MIT", + "dependencies": { + "serve-static": "^1.16.2" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/express/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz", + "integrity": "sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastfall": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/fastfall/-/fastfall-1.5.1.tgz", + "integrity": "sha512-KH6p+Z8AKPXnmA7+Iz2Lh8ARCMr+8WNPVludm1LGkZoD2MjY6LVnRMtTKhkdzI+jr0RzQWXKzKyBJm1zoHEL4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "reusify": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fastparallel": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/fastparallel/-/fastparallel-2.4.1.tgz", + "integrity": "sha512-qUmhxPgNHmvRjZKBFUNI0oZuuH9OlSIOXmJ98lhKPxMZZ7zS/Fi0wRHOihDSz0R1YiIOjxzOY4bq65YTcdBi2Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4", + "xtend": "^4.0.2" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fastseries": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fastseries/-/fastseries-2.0.0.tgz", + "integrity": "sha512-XBU9RXeoYc2/VnvMhplAxEmZLfIk7cvTBu+xwoBuTI8pL19E03cmca17QQycKIdxgwCeFA/a4u27gv1h3ya5LQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/favico.js": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/favico.js/-/favico.js-0.3.10.tgz", + "integrity": "sha512-S5KvqAOczRjlyjQPPZPSlUEybBkfBgKosY/pzTIxkvKgigB+DkITvIEI70dxQarbv4PZ+UD77QzquCAcU/6LHQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/feed": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", + "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "license": "MIT", + "dependencies": { + "xml-js": "^1.6.11" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data-encoder": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", + "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==", + "license": "MIT" + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/from2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/from2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/from2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "license": "MIT" + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gamedig": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/gamedig/-/gamedig-4.3.2.tgz", + "integrity": "sha512-TjYwybvy8HNAhkv2EJccd5HROIiMeMriWmeX8vT8m5Ibat5JMzVpugzsD8L8XZVrOfiXnVg/9DhWYM8k/VG/vw==", + "license": "MIT", + "dependencies": { + "cheerio": "1.0.0-rc.10", + "gbxremote": "0.2.1", + "got": "12.1.0", + "iconv-lite": "0.6.3", + "long": "5.2.0", + "minimist": "1.2.6", + "punycode": "2.1.1", + "seek-bzip": "2.0.0", + "varint": "6.0.0" + }, + "bin": { + "gamedig": "bin/gamedig.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/gamedig/node_modules/cheerio": { + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", + "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/gamedig/node_modules/cheerio-select": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz", + "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==", + "license": "BSD-2-Clause", + "dependencies": { + "css-select": "^4.3.0", + "css-what": "^6.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.3.1", + "domutils": "^2.8.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/gamedig/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/gamedig/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/gamedig/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/gamedig/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/gamedig/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/gamedig/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/gamedig/node_modules/long": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz", + "integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==", + "license": "Apache-2.0" + }, + "node_modules/gamedig/node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "license": "MIT" + }, + "node_modules/gamedig/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "license": "MIT" + }, + "node_modules/gamedig/node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "license": "MIT", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gbxremote": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/gbxremote/-/gbxremote-0.2.1.tgz", + "integrity": "sha512-SMehu6Y6ndq2Qgp9VxAb8Np3f+UUD+RWoW2SAMaxzGS96rWXyr4T1GGkecO0HHtxeH1m7pEh4FJWB8a/6aM2XQ==", + "dependencies": { + "any-promise": "^1.1.0", + "barse": "~0.4.2", + "event-to-promise": "^0.7.0", + "string-to-stream": "^1.0.1", + "xmlrpc": "^1.3.1" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "license": "MIT", + "dependencies": { + "is-property": "^1.0.2" + } + }, + "node_modules/generic-pool": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.9.0.tgz", + "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-port-please": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.2.tgz", + "integrity": "sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/getopts": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz", + "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==", + "license": "MIT" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", + "dev": true, + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-12.1.0.tgz", + "integrity": "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.6.0", + "@szmarczak/http-timer": "^5.0.1", + "@types/cacheable-request": "^6.0.2", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^6.0.4", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "form-data-encoder": "1.7.1", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/got/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "license": "ISC" + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/help-me": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-3.0.0.tgz", + "integrity": "sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==", + "license": "MIT", + "dependencies": { + "glob": "^7.1.6", + "readable-stream": "^3.6.0" + } + }, + "node_modules/hoek": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", + "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==", + "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", + "license": "BSD-3-Clause" + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/html-escaper": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", + "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==", + "license": "MIT" + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/htmlparser2": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "license": "BSD-2-Clause" + }, + "node_modules/http-cookie-agent": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/http-cookie-agent/-/http-cookie-agent-5.0.4.tgz", + "integrity": "sha512-OtvikW69RvfyP6Lsequ0fN5R49S+8QcS9zwd58k6VSr6r57T8G29BkPdyrBcSwLq6ExLs9V+rBlfxu7gDstJag==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0" + }, + "engines": { + "node": ">=14.18.0 <15.0.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/3846masa" + }, + "peerDependencies": { + "deasync": "^0.1.26", + "tough-cookie": "^4.0.0", + "undici": "^5.11.0" + }, + "peerDependenciesMeta": { + "deasync": { + "optional": true + }, + "undici": { + "optional": true + } + } + }, + "node_modules/http-cookie-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-graceful-shutdown": { + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.13.tgz", + "integrity": "sha512-Ci5LRufQ8AtrQ1U26AevS8QoMXDOhnAHCJI3eZu1com7mZGHxREmw3dNj85ftpQokQCvak8nI2pnFS8zyM1M+Q==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/hyperid": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/hyperid/-/hyperid-3.3.0.tgz", + "integrity": "sha512-7qhCVT4MJIoEsNcbhglhdmBKb09QtcmJNiIQGq7js/Khf5FtQQ9bzcAuloeqBeee7XD7JqDeve9KNlQya5tSGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.2.1", + "uuid": "^8.3.2", + "uuid-parse": "^1.1.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "license": "ISC", + "optional": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "license": "MIT", + "optional": true + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-what": { + "version": "4.1.16", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isemail": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz", + "integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==", + "license": "BSD-3-Clause", + "dependencies": { + "punycode": "2.x.x" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/joi": { + "version": "14.3.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-14.3.1.tgz", + "integrity": "sha512-LQDdM+pkOrpAn4Lp+neNIFV3axv1Vna3j38bisbQhETPMANYRbFJFUyOZcOClYvM/hppMhGWuKSFEK9vjrB+bQ==", + "deprecated": "This module has moved and is now available at @hapi/joi. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", + "license": "BSD-3-Clause", + "dependencies": { + "hoek": "6.x.x", + "isemail": "3.x.x", + "topo": "3.x.x" + } + }, + "node_modules/jose": { + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-md4": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", + "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", + "license": "MIT" + }, + "node_modules/js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "license": "MIT" + }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", + "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonata": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-2.0.5.tgz", + "integrity": "sha512-wEse9+QLIIU5IaCgtJCPsFi/H4F3qcikWzF4bAELZiRz08ohfx3Q6CjDRf4ZPF5P/92RI3KIHtb7u3jqPaHXdQ==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/just-performance": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/just-performance/-/just-performance-4.3.0.tgz", + "integrity": "sha512-L7RjvtJsL0QO8xFs5wEoDDzzJwoiowRw6Rn/GnvldlchS2JQr9wFYPiwZcDfrbbujEKqKN0tvENdbjXdYhDp5Q==", + "license": "MIT" + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", + "license": "MIT" + }, + "node_modules/kafkajs": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/kafkajs/-/kafkajs-2.2.4.tgz", + "integrity": "sha512-j/YeapB1vfPT2iOIUn/vxdyKEuhuY2PxMBvf5JWux6iSaukAccrMtXEY/Lb7OvavDhOWME589bpLrEdnVHjfjA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/knex": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/knex/-/knex-2.4.2.tgz", + "integrity": "sha512-tMI1M7a+xwHhPxjbl/H9K1kHX+VncEYcvCx5K00M16bWvpYPKAZd6QrCu68PtHAdIZNQPWZn0GVhqVBEthGWCg==", + "license": "MIT", + "dependencies": { + "colorette": "2.0.19", + "commander": "^9.1.0", + "debug": "4.3.4", + "escalade": "^3.1.1", + "esm": "^3.2.25", + "get-package-type": "^0.1.0", + "getopts": "2.3.0", + "interpret": "^2.2.0", + "lodash": "^4.17.21", + "pg-connection-string": "2.5.0", + "rechoir": "^0.8.0", + "resolve-from": "^5.0.0", + "tarn": "^3.0.2", + "tildify": "2.0.0" + }, + "bin": { + "knex": "bin/cli.js" + }, + "engines": { + "node": ">=12" + }, + "peerDependenciesMeta": { + "better-sqlite3": { + "optional": true + }, + "mysql": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-native": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "tedious": { + "optional": true + } + } + }, + "node_modules/knex/node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "license": "MIT" + }, + "node_modules/knex/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/knex/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/knex/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/knex/node_modules/pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==", + "license": "MIT" + }, + "node_modules/knex/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/known-css-properties": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", + "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/limiter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-2.1.0.tgz", + "integrity": "sha512-361TYz6iay6n+9KvUUImqdLuFigK+K79qrUtBsXhJTLdH4rIt/r1y8r1iozwh8KbZNpujbFTSh74mJ7bwbAMOw==", + "license": "MIT", + "dependencies": { + "just-performance": "4.3.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/liquidjs": { + "version": "10.17.0", + "resolved": "https://registry.npmjs.org/liquidjs/-/liquidjs-10.17.0.tgz", + "integrity": "sha512-M4MC5/nencttIJHirl5jFTkl7Yu+grIDLn3Qgl7BPAD3BsbTCQknDxlG5VXWRwslWIjk8lSZZjVq9LioILDk1Q==", + "license": "MIT", + "dependencies": { + "commander": "^10.0.0" + }, + "bin": { + "liquid": "bin/liquid.js", + "liquidjs": "bin/liquid.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/liquidjs" + } + }, + "node_modules/liquidjs/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "license": "MIT" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "license": "Apache-2.0" + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "license": "ISC", + "optional": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/make-fetch-happen/node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "license": "MIT", + "optional": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC", + "optional": true + }, + "node_modules/map-obj": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/marked": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.2.tgz", + "integrity": "sha512-f3r0yqpz31VXiDB/wj9GaOB0a2PRLQl6vJmXiFrniNwjkKdvakqJRULhjFKJpxOchlCRiG5fcacoUZY5Xa6PEQ==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "license": "MIT", + "optional": true + }, + "node_modules/meow": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", + "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.2", + "camelcase-keys": "^7.0.0", + "decamelize": "^5.0.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.2", + "read-pkg-up": "^8.0.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^1.2.2", + "yargs-parser": "^20.2.9" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", + "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz", + "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "license": "MIT", + "optional": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true, + "license": "MIT" + }, + "node_modules/mongodb": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.2.tgz", + "integrity": "sha512-mLV7SEiov2LHleRJPMPrK2PMyhXFZt2UQLC4VD4pnth3jMjYKHhtqfwwkkvS/NXuo/Fp3vbhaNcXrIDaLRb9Tg==", + "license": "Apache-2.0", + "dependencies": { + "bson": "^4.7.2", + "mongodb-connection-string-url": "^2.6.0", + "socks": "^2.7.1" + }, + "engines": { + "node": ">=12.9.0" + }, + "optionalDependencies": { + "@aws-sdk/credential-providers": "^3.186.0", + "@mongodb-js/saslprep": "^1.1.0" + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", + "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", + "license": "Apache-2.0", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mqemitter": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/mqemitter/-/mqemitter-4.5.0.tgz", + "integrity": "sha512-Mp/zytFeIv6piJQkEKnncHcP4R/ErJc5C7dfonkhkNUT2LA/nTayrfNxbipp3M5iCJUTQSUtzfQAQA3XVcKz6w==", + "dev": true, + "license": "ISC", + "dependencies": { + "fastparallel": "^2.3.0", + "qlobber": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mqtt": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.8.tgz", + "integrity": "sha512-2xT75uYa0kiPEF/PE0VPdavmEkoBzMT/UL9moid0rAvlCtV48qBwxD62m7Ld/4j8tSkIO1E/iqRl/S72SEOhOw==", + "license": "MIT", + "dependencies": { + "commist": "^1.0.0", + "concat-stream": "^2.0.0", + "debug": "^4.1.1", + "duplexify": "^4.1.1", + "help-me": "^3.0.0", + "inherits": "^2.0.3", + "lru-cache": "^6.0.0", + "minimist": "^1.2.5", + "mqtt-packet": "^6.8.0", + "number-allocator": "^1.0.9", + "pump": "^3.0.0", + "readable-stream": "^3.6.0", + "reinterval": "^1.1.0", + "rfdc": "^1.3.0", + "split2": "^3.1.0", + "ws": "^7.5.5", + "xtend": "^4.0.2" + }, + "bin": { + "mqtt": "bin/mqtt.js", + "mqtt_pub": "bin/pub.js", + "mqtt_sub": "bin/sub.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mqtt-packet": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-7.1.2.tgz", + "integrity": "sha512-FFZbcZ2omsf4c5TxEQfcX9hI+JzDpDKPT46OmeIBpVA7+t32ey25UNqlqNXTmeZOr5BLsSIERpQQLsFWJS94SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.0.2", + "debug": "^4.1.1", + "process-nextick-args": "^2.0.1" + } + }, + "node_modules/mqtt/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mqtt/node_modules/mqtt-packet": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz", + "integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.2", + "debug": "^4.1.1", + "process-nextick-args": "^2.0.1" + } + }, + "node_modules/mqtt/node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/mqtt/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mssql": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/mssql/-/mssql-11.0.1.tgz", + "integrity": "sha512-KlGNsugoT90enKlR8/G36H0kTxPthDhmtNUCwEHvgRza5Cjpjoj+P2X6eMpFUDN7pFrJZsKadL4x990G8RBE1w==", + "license": "MIT", + "dependencies": { + "@tediousjs/connection-string": "^0.5.0", + "commander": "^11.0.0", + "debug": "^4.3.3", + "rfdc": "^1.3.0", + "tarn": "^3.0.2", + "tedious": "^18.2.1" + }, + "bin": { + "mssql": "bin/mssql" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/mssql/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/mysql2": { + "version": "3.9.9", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.9.tgz", + "integrity": "sha512-Qtb2RUxwWMFkWXqF7Rd/7ySkupbQnNY7O0zQuQYgPcuJZ06M36JG3HIDEh/pEeq7LImcvA6O3lOVQ9XQK+HEZg==", + "license": "MIT", + "dependencies": { + "denque": "^2.1.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.6.3", + "long": "^5.2.1", + "lru-cache": "^8.0.0", + "named-placeholders": "^1.1.3", + "seq-queue": "^0.0.5", + "sqlstring": "^2.3.2" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/mysql2/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "license": "ISC", + "engines": { + "node": ">=16.14" + } + }, + "node_modules/named-placeholders": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", + "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", + "license": "MIT", + "dependencies": { + "lru-cache": "^7.14.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/named-placeholders/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/nan": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/native-duplexpair": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/native-duplexpair/-/native-duplexpair-1.0.0.tgz", + "integrity": "sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==", + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/net-snmp": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/net-snmp/-/net-snmp-3.15.0.tgz", + "integrity": "sha512-5XBpAxhumpweYgAvdIjo3RiM5HOwl2YhGlV86z/xghy+iHsIC0SQoE4i65zc/upCMNsUYluqkKG8ctaCrTK+Tg==", + "license": "MIT", + "dependencies": { + "asn1-ber": "^1.2.1", + "smart-buffer": "^4.1.0" + } + }, + "node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "license": "MIT" + }, + "node_modules/node-cloudflared-tunnel": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/node-cloudflared-tunnel/-/node-cloudflared-tunnel-1.0.10.tgz", + "integrity": "sha512-QBTH4bcTePgiwYdK5vYZhZl7GNr3Pqnj5V3Tg1w5HvnK4VhLZe5BUuhqKvzzCA604yhoD2I1ATdnOl6axSJu/w==", + "license": "MIT", + "dependencies": { + "command-exists": "^1.2.9" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "license": "MIT", + "optional": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/node-gyp/node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-radius-client": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-radius-client/-/node-radius-client-1.0.0.tgz", + "integrity": "sha512-FkR9cMV5hNoX+kKDUTzuagvEixlLiaEJQ1/ywOdhahsihKrGDhVZmnCvmrCStA589MT3yuC/J2eKc6z68IGdBw==", + "license": "MIT", + "dependencies": { + "joi": "^14.3.1", + "node-radius-utils": "^1.2.0", + "radius": "^1.1.4" + } + }, + "node_modules/node-radius-utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/node-radius-utils/-/node-radius-utils-1.2.0.tgz", + "integrity": "sha512-i3Sf6khnenl0aXumo0whAlfPWTaBqHxEnVBBxpu3dZ7q69NkPPv71rvPjlDZ5wkeKCTNNUTECljerS5kcYQxRw==", + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-ssh": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/node-ssh/-/node-ssh-13.1.0.tgz", + "integrity": "sha512-GLcw49yFd9+rUpP+FgX6wrF/N90cmuDl2n0i8d3L828b6riRjkb9w3SS+XvviRWbrAhLxuMKywFqxvQDZQ1bug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ssh2": "^1.11.9", + "is-stream": "^2.0.0", + "make-dir": "^3.1.0", + "sb-promise-queue": "^2.1.0", + "sb-scandir": "^3.1.0", + "shell-escape": "^0.2.0", + "ssh2": "^1.11.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/nodemailer": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.15.tgz", + "integrity": "sha512-AHf04ySLC6CIfuRtRiEYtGEXgRfa6INgWGluDhnxTZhHSKvrBu7lc1VVchQ0d8nPc4cFaZoPq8vkyNoZr0TpGQ==", + "license": "MIT-0", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nostr-tools": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.17.0.tgz", + "integrity": "sha512-LZmR8GEWKZeElbFV5Xte75dOeE9EFUW/QLI1Ncn3JKn0kFddDKEfBbFN8Mu4TMs+L4HR/WTPha2l+PPuRnJcMw==", + "license": "Unlicense", + "dependencies": { + "@noble/ciphers": "0.2.0", + "@noble/curves": "1.1.0", + "@noble/hashes": "1.3.1", + "@scure/base": "1.1.1", + "@scure/bip32": "1.3.1", + "@scure/bip39": "1.2.1" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/notp": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/notp/-/notp-2.0.3.tgz", + "integrity": "sha512-oBig/2uqkjQ5AkBuw4QJYwkEWa/q+zHxI5/I5z6IeP2NT0alpJFsP/trrfCC+9xOAgQSZXssNi962kp5KBmypQ==", + "engines": { + "node": "> v0.6.0" + } + }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/number-allocator": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz", + "integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.1", + "js-sdsl": "4.3.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/oidc-token-hash": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.3.tgz", + "integrity": "sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==", + "license": "MIT", + "engines": { + "node": "^10.13.0 || >=12.0.0" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/openid-client": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.7.0.tgz", + "integrity": "sha512-4GCCGZt1i2kTHpwvaC/sCpTpQqDnBzDzuJcJMbH+y1Q5qI8U8RBvoSh28svarXszZHR5BAMXbJPX1PGPRE3VOA==", + "license": "MIT", + "dependencies": { + "jose": "^4.15.9", + "lru-cache": "^6.0.0", + "object-hash": "^2.2.0", + "oidc-token-hash": "^5.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/openid-client/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/openid-client/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "license": "MIT", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/password-hash": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/password-hash/-/password-hash-1.2.2.tgz", + "integrity": "sha512-Dy/5+Srojwv+1XnMrK2bn7f2jN3k2p90DfBVA0Zd6PrjWF7lXHOTWgKT4uBp1gIsqV7/llYqm+hj+gwDBF/Fmg==", + "bin": { + "nodepw": "bin/nodepw" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/pg": { + "version": "8.11.6", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.6.tgz", + "integrity": "sha512-6CyL4F0j3vPmakU9rWdeRY8qF5Cjc3OE86y6YpgDI6YtKHhNyCjGEIE8U5ZRfBjKTZikwolKIFWh3I22MeRnoA==", + "license": "MIT", + "dependencies": { + "pg-connection-string": "^2.6.4", + "pg-pool": "^3.6.2", + "pg-protocol": "^1.6.1", + "pg-types": "^2.1.0", + "pgpass": "1.x" + }, + "engines": { + "node": ">= 8.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.1.1" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", + "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "license": "MIT", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.4.tgz", + "integrity": "sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==", + "license": "MIT" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.7.0.tgz", + "integrity": "sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g==", + "license": "MIT", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.7.0.tgz", + "integrity": "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==", + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "license": "MIT", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/pgpass/node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkginfo": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", + "integrity": "sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/playwright": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.39.0.tgz", + "integrity": "sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.39.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.39.0.tgz", + "integrity": "sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==", + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-html": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-1.5.0.tgz", + "integrity": "sha512-kCMRWJRHKicpA166kc2lAVUGxDZL324bkj/pVOb6RhjB0Z5Krl7mN0AsVkBhVIRZZirY0lyQXG38HCVaoKVNoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "htmlparser2": "^8.0.0", + "js-tokens": "^8.0.0", + "postcss": "^8.4.0", + "postcss-safe-parser": "^6.0.0" + }, + "engines": { + "node": "^12 || >=14" + } + }, + "node_modules/postcss-html/node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/postcss-html/node_modules/js-tokens": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.3.tgz", + "integrity": "sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-resolve-nested-selector": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", + "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-rtlcss": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/postcss-rtlcss/-/postcss-rtlcss-3.7.2.tgz", + "integrity": "sha512-GurrGedCKvOTe1QrifI+XpDKXA3bJky1v8KiOa/TYYHs1bfJOxI53GIRvVSqLJLly7e1WcNMz8KMESTN01vbZQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "rtlcss": "^3.5.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-scss": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-scss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.4.29" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/prom-client": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-13.2.0.tgz", + "integrity": "sha512-wGr5mlNNdRNzEhRYXgboUU2LxHWIojxscJKmtG3R8f4/KiWqyYgXTLHs0+Ted7tG3zFT7pgHJbtomzZ1L0ARaQ==", + "license": "Apache-2.0", + "dependencies": { + "tdigest": "^0.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prometheus-api-metrics": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/prometheus-api-metrics/-/prometheus-api-metrics-3.2.2.tgz", + "integrity": "sha512-5hT17HAjflPkrHSYQ7lorsKygo0PhLau/FQ6SQhw0XWAm10GwKfLQmIVP6b3LJBnc4WNOf/QKHce2RfcZMLjJQ==", + "license": "Apache-2.0", + "dependencies": { + "@types/express": "^4.17.13", + "@types/express-serve-static-core": "^4.17.28", + "@types/koa": "^2.13.4", + "debug": "^3.2.6", + "lodash.get": "^4.4.2", + "pkginfo": "^0.4.1" + }, + "peerDependencies": { + "prom-client": ">=12 <15" + } + }, + "node_modules/prometheus-api-metrics/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "license": "ISC", + "optional": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "license": "MIT", + "optional": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/promisify-child-process": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/promisify-child-process/-/promisify-child-process-4.1.2.tgz", + "integrity": "sha512-APnkIgmaHNJpkAn7k+CrJSi9WMuff5ctYFbD0CO2XIPkM8yO7d/ShouU2clywbpHV/DUsyc4bpJCsNgddNtx4g==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/properties-reader": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/properties-reader/-/properties-reader-2.3.0.tgz", + "integrity": "sha512-z597WicA7nDZxK12kZqHr2TcvwNU1GCfA5UwfDY/HDp3hXPoPlb5rlEx9bwGTiJnc0OqbBTkU975jDToth8Gxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/steveukx/properties?sponsor=1" + } + }, + "node_modules/protobufjs": { + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", + "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qlobber": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/qlobber/-/qlobber-5.0.3.tgz", + "integrity": "sha512-wW4GTZPePyh0RgOsM18oDyOUlXfurVRgoNyJfS+y7VWPyd0GYhQp5T2tycZFZjonH+hngxIfklGJhTP/ghidgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/qrcode": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", + "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "dijkstrajs": "^1.0.1", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/qrcode/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/qrcode/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/qrcode/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/qrcode/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/qrcode/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/qrcode/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/qrcode/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true, + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/radius": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/radius/-/radius-1.1.4.tgz", + "integrity": "sha512-UWuzdF6xf3NpsXFZZmUEkxtEalDXj8hdmMXgbGzn7vOk6zXNsiIY2I6SJ1euHt7PTQuMoz2qDEJB+AfJDJgQYw==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/redbean-node": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/redbean-node/-/redbean-node-0.3.3.tgz", + "integrity": "sha512-0J59/QlShdWs1h0lsFHRfb8NwjvgIYTQKwYrvq6FykRmeX1cG2u8AgHEIRVBrm56mtKLRASVy/8ykk6fSntLdw==", + "license": "MIT", + "dependencies": { + "@types/node": "~20.3.1", + "await-lock": "~2.2.2", + "dayjs": "~1.11.8", + "glob": "~10.3.0", + "knex": "~2.4.2", + "lodash": "~4.17.21" + } + }, + "node_modules/redbean-node/node_modules/@types/node": { + "version": "20.3.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.3.tgz", + "integrity": "sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==", + "license": "MIT" + }, + "node_modules/redbean-node/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/redbean-node/node_modules/glob": { + "version": "10.3.16", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.16.tgz", + "integrity": "sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/redbean-node/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/redbean-node/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/redent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/redent/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/redis": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/redis/-/redis-4.5.1.tgz", + "integrity": "sha512-oxXSoIqMJCQVBTfxP6BNTCtDMyh9G6Vi5wjdPdV/sRKkufyZslDqCScSGcOr6XGR/reAWZefz7E4leM31RgdBA==", + "license": "MIT", + "workspaces": [ + "./packages/*" + ], + "dependencies": { + "@redis/bloom": "1.1.0", + "@redis/client": "1.4.2", + "@redis/graph": "1.1.0", + "@redis/json": "1.0.4", + "@redis/search": "1.1.0", + "@redis/time-series": "1.0.4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true, + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/reinterval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz", + "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==", + "license": "MIT" + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true, + "license": "ISC" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "license": "MIT", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/responselike/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/retimer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/retimer/-/retimer-3.0.0.tgz", + "integrity": "sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "devOptional": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.5.tgz", + "integrity": "sha512-WoinX7GeQOFMGznEcWA1WrTQCd/tpEbMkc3nuMs9BT0CPjMdSjPMTVClwWd4pgSQwJdP65SK9mTCNvItlr5o7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.22.5", + "@rollup/rollup-android-arm64": "4.22.5", + "@rollup/rollup-darwin-arm64": "4.22.5", + "@rollup/rollup-darwin-x64": "4.22.5", + "@rollup/rollup-linux-arm-gnueabihf": "4.22.5", + "@rollup/rollup-linux-arm-musleabihf": "4.22.5", + "@rollup/rollup-linux-arm64-gnu": "4.22.5", + "@rollup/rollup-linux-arm64-musl": "4.22.5", + "@rollup/rollup-linux-powerpc64le-gnu": "4.22.5", + "@rollup/rollup-linux-riscv64-gnu": "4.22.5", + "@rollup/rollup-linux-s390x-gnu": "4.22.5", + "@rollup/rollup-linux-x64-gnu": "4.22.5", + "@rollup/rollup-linux-x64-musl": "4.22.5", + "@rollup/rollup-win32-arm64-msvc": "4.22.5", + "@rollup/rollup-win32-ia32-msvc": "4.22.5", + "@rollup/rollup-win32-x64-msvc": "4.22.5", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-visualizer": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz", + "integrity": "sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "open": "^8.4.0", + "picomatch": "^2.3.1", + "source-map": "^0.7.4", + "yargs": "^17.5.1" + }, + "bin": { + "rollup-plugin-visualizer": "dist/bin/cli.js" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "rollup": "2.x || 3.x || 4.x" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/rollup-plugin-visualizer/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/rtlcss": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz", + "integrity": "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^5.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.3.11", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + } + }, + "node_modules/rtlcss/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rtlcss/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rtlcss/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.42.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz", + "integrity": "sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "license": "ISC" + }, + "node_modules/sb-promise-queue": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sb-promise-queue/-/sb-promise-queue-2.1.0.tgz", + "integrity": "sha512-zwq4YuP1FQFkGx2Q7GIkZYZ6PqWpV+bg0nIO1sJhWOyGyhqbj0MsTvK6lCFo5TQwX5pZr6SCQ75e8PCDCuNvkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/sb-scandir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/sb-scandir/-/sb-scandir-3.1.0.tgz", + "integrity": "sha512-70BVm2xz9jn94zSQdpvYrEG101/UV9TVGcfWr9T5iob3QhCK4lYXeculfBqPGFv3XTeKgx4dpWyYIDeZUqo4kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sb-promise-queue": "^2.1.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/seek-bzip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-2.0.0.tgz", + "integrity": "sha512-SMguiTnYrhpLdk3PwfzHeotrcwi8bNV4iemL9tx9poR/yeaMYwB9VzR1w7b57DuWpuqR8n6oZboi0hj3AxZxQg==", + "license": "MIT", + "dependencies": { + "commander": "^6.0.0" + }, + "bin": { + "seek-bunzip": "bin/seek-bunzip", + "seek-table": "bin/seek-bzip-table" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/seq-queue": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-escape": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/shell-escape/-/shell-escape-0.2.0.tgz", + "integrity": "sha512-uRRBT2MfEOyxuECseCZd28jC1AJ8hmqqneWQ4VWUTgCAFvb3wKU1jLqj6egC4Exrr88ogg3dp+zroH4wJuaXzw==", + "dev": true, + "license": "MIT" + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socket.io": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.0.tgz", + "integrity": "sha512-8U6BEgGjQOfGz3HHTYaC/L1GaxDCJ/KM0XTkJly0EhZ5U/du9uNEZy4ZgYzEzIqlx2CMm25CrCqr1ck899eLNA==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.6.0", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", + "license": "MIT", + "dependencies": { + "debug": "~4.3.4", + "ws": "~8.17.1" + } + }, + "node_modules/socket.io-adapter/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/socket.io-client": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.0.tgz", + "integrity": "sha512-C0jdhD5yQahMws9alf/yvtsMGTaIDBnZ8Rb5HU56svyq0l5LIrGzIDZZD5pHQlmzxLuU91Gz+VpQMKgCTNYtkw==", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.6.1", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sortablejs": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz", + "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/spawn-command": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", + "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-ca": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", + "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "license": "ISC", + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause" + }, + "node_modules/sqlstring": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ssh-remote-port-forward": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/ssh-remote-port-forward/-/ssh-remote-port-forward-1.0.4.tgz", + "integrity": "sha512-x0LV1eVDwjf1gmG7TTnfqIzf+3VPRz7vrNIjX6oYLbeCrf/PeVY6hkT68Mg+q02qXxQhrLjB0jfgvhevoCRmLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ssh2": "^0.5.48", + "ssh2": "^1.4.0" + } + }, + "node_modules/ssh-remote-port-forward/node_modules/@types/ssh2": { + "version": "0.5.52", + "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.52.tgz", + "integrity": "sha512-lbLLlXxdCZOSJMCInKH2+9V/77ET2J6NPQHpFI0kda61Dd1KglJs+fPQBchizmzYSOJBgdTajhPqBO1xxLywvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/ssh2-streams": "*" + } + }, + "node_modules/ssh2": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.16.0.tgz", + "integrity": "sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "asn1": "^0.2.6", + "bcrypt-pbkdf": "^1.0.2" + }, + "engines": { + "node": ">=10.16.0" + }, + "optionalDependencies": { + "cpu-features": "~0.0.10", + "nan": "^2.20.0" + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stoppable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", + "license": "MIT", + "engines": { + "node": ">=4", + "npm": ">=6" + } + }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "license": "MIT" + }, + "node_modules/streamx": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", + "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/string-to-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string-to-stream/-/string-to-stream-1.1.1.tgz", + "integrity": "sha512-QySF2+3Rwq0SdO3s7BAp4x+c3qsClpPQ6abAmb0DGViiSBAkT5kL6JT2iyzEVP+T1SmzHrQD1TwlP9QAHCc+Sw==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.1.0" + } + }, + "node_modules/string-to-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/string-to-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/string-to-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.replaceall": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.replaceall/-/string.prototype.replaceall-1.0.10.tgz", + "integrity": "sha512-PKLapcZUZmXUdfIM6rTTTMYOxaj4JiQrgl0SKEeCFug1CdMAuJq8hVZd4eek9yMXAW4ldGUq+TiZRtjLJRU96g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "license": "MIT", + "optional": true + }, + "node_modules/style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", + "dev": true, + "license": "ISC" + }, + "node_modules/stylelint": { + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz", + "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-parser-algorithms": "^2.3.1", + "@csstools/css-tokenizer": "^2.2.0", + "@csstools/media-query-list-parser": "^2.1.4", + "@csstools/selector-specificity": "^3.0.0", + "balanced-match": "^2.0.0", + "colord": "^2.9.3", + "cosmiconfig": "^8.2.0", + "css-functions-list": "^3.2.1", + "css-tree": "^2.3.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.1", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^7.0.0", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.3.1", + "ignore": "^5.2.4", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.29.0", + "mathml-tag-names": "^2.1.3", + "meow": "^10.1.5", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.28", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.13", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "style-search": "^0.1.0", + "supports-hyperlinks": "^3.0.0", + "svg-tags": "^1.0.0", + "table": "^6.8.1", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "stylelint": "bin/stylelint.mjs" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + } + }, + "node_modules/stylelint-config-recommended": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-7.0.0.tgz", + "integrity": "sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "stylelint": "^14.4.0" + } + }, + "node_modules/stylelint-config-standard": { + "version": "25.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-25.0.0.tgz", + "integrity": "sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "stylelint-config-recommended": "^7.0.0" + }, + "peerDependencies": { + "stylelint": "^14.4.0" + } + }, + "node_modules/stylelint/node_modules/balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true, + "license": "MIT" + }, + "node_modules/stylelint/node_modules/file-entry-cache": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.2.tgz", + "integrity": "sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.2.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/stylelint/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/stylelint/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/superjson": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.1.tgz", + "integrity": "sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "copy-anything": "^3.0.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-hyperlinks": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", + "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/table": { + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/table/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/table/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/table/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-fs": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", + "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/tarn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tarn/-/tarn-3.0.2.tgz", + "integrity": "sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/tcp-ping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/tcp-ping/-/tcp-ping-0.1.1.tgz", + "integrity": "sha512-7Ed10Ds0hYnF+O1lfiZ2iSZ1bCAj+96Madctebmq7Y1ALPWlBY4YI8C6pCL+UTlshFY5YogixKLpgDP/4BlHrw==", + "license": "MIT" + }, + "node_modules/tdigest": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/tdigest/-/tdigest-0.1.2.tgz", + "integrity": "sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==", + "license": "MIT", + "dependencies": { + "bintrees": "1.0.2" + } + }, + "node_modules/tedious": { + "version": "18.6.1", + "resolved": "https://registry.npmjs.org/tedious/-/tedious-18.6.1.tgz", + "integrity": "sha512-9AvErXXQTd6l7TDd5EmM+nxbOGyhnmdbp/8c3pw+tjaiSXW9usME90ET/CRG1LN1Y9tPMtz/p83z4Q97B4DDpw==", + "license": "MIT", + "dependencies": { + "@azure/core-auth": "^1.7.2", + "@azure/identity": "^4.2.1", + "@azure/keyvault-keys": "^4.4.0", + "@js-joda/core": "^5.6.1", + "@types/node": ">=18", + "bl": "^6.0.11", + "iconv-lite": "^0.6.3", + "js-md4": "^0.3.2", + "native-duplexpair": "^1.0.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tedious/node_modules/bl": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/bl/-/bl-6.0.16.tgz", + "integrity": "sha512-V/kz+z2Mx5/6qDfRCilmrukUXcXuCoXKg3/3hDvzKKoSUx8CJKudfIoT29XZc3UE9xBvxs5qictiHdprwtteEg==", + "license": "MIT", + "dependencies": { + "@types/readable-stream": "^4.0.0", + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^4.2.0" + } + }, + "node_modules/tedious/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/tedious/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/terser": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", + "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/terser/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/test": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/test/-/test-3.3.0.tgz", + "integrity": "sha512-JKlEohxDIJRjwBH/+BrTcAPHljBALrAHw3Zs99RqZlaC605f6BggqXhxkdqZThbSHgaYPwpNJlf9bTSWkb/1rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6", + "readable-stream": "^4.3.0", + "string.prototype.replaceall": "^1.0.6" + }, + "bin": { + "node--test": "bin/node--test.js", + "node--test-name-pattern": "bin/node--test-name-pattern.js", + "node--test-only": "bin/node--test-only.js", + "test": "bin/node-core-test.js" + } + }, + "node_modules/test/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/test/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/testcontainers": { + "version": "10.13.1", + "resolved": "https://registry.npmjs.org/testcontainers/-/testcontainers-10.13.1.tgz", + "integrity": "sha512-JBbOhxmygj/ouH/47GnoVNt+c55Telh/45IjVxEbDoswsLchVmJiuKiw/eF6lE5i7LN+/99xsrSCttI3YRtirg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@balena/dockerignore": "^1.0.2", + "@types/dockerode": "^3.3.29", + "archiver": "^7.0.1", + "async-lock": "^1.4.1", + "byline": "^5.0.0", + "debug": "^4.3.5", + "docker-compose": "^0.24.8", + "dockerode": "^3.3.5", + "get-port": "^5.1.1", + "proper-lockfile": "^4.1.2", + "properties-reader": "^2.3.0", + "ssh-remote-port-forward": "^1.0.4", + "tar-fs": "^3.0.6", + "tmp": "^0.2.3", + "undici": "^5.28.4" + } + }, + "node_modules/text-decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.0.tgz", + "integrity": "sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/thirty-two": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz", + "integrity": "sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA==", + "engines": { + "node": ">=0.2.6" + } + }, + "node_modules/tildify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", + "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/topo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz", + "integrity": "sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==", + "deprecated": "This module has moved and is now available at @hapi/topo. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.", + "license": "BSD-3-Clause", + "dependencies": { + "hoek": "6.x.x" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/tr46/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/trim-newlines": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", + "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "license": "MIT" + }, + "node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "license": "MIT" + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "license": "ISC", + "optional": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/uuid-parse": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/uuid-parse/-/uuid-parse-1.1.0.tgz", + "integrity": "sha512-OdmXxA8rDsQ7YpNVbKSJkNzTw2I+S5WsbMDnCtIWSQaosNAcWtFuI/YK1TjzUI6nbkgiqEyh8gWngfcv8Asd9A==", + "dev": true, + "license": "MIT" + }, + "node_modules/v-pagination-3": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/v-pagination-3/-/v-pagination-3-0.1.7.tgz", + "integrity": "sha512-b5H+SdL+yIhkqyWI+Uj5lGk1VK3Q/hjqN44okerMa9smtk55DJX3Jg+ecU/vJAFrEhNCqgNzLsJ8pLRcHrbjrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-add-module-exports": "^0.2.1", + "merge": "^2.1.1", + "vue": ">=3.0.0" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", + "dev": true, + "license": "MIT" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.14.tgz", + "integrity": "sha512-TFQLuwWLPms+NBNlh0D9LZQ+HXW471COABxw/9TEUBrjuHMo9BrYBPrN/SYAwIuVL+rLerycxiLT41t4f5MZpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.20.1", + "postcss": "^8.4.38", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-hot-client": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-0.2.3.tgz", + "integrity": "sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "node_modules/vite-plugin-compression": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz", + "integrity": "sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "debug": "^4.3.3", + "fs-extra": "^10.0.0" + }, + "peerDependencies": { + "vite": ">=2.0.0" + } + }, + "node_modules/vite-plugin-compression/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/vite-plugin-compression/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/vite-plugin-compression/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/vite-plugin-compression/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite-plugin-compression/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-plugin-compression/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/vite-plugin-compression/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vite-plugin-inspect": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.7.tgz", + "integrity": "sha512-/XXou3MVc13A5O9/2Nd6xczjrUwt7ZyI9h8pTnUMkr5SshLcb0PJUOVq2V+XVkdeU4njsqAtmK87THZuO2coGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@antfu/utils": "^0.7.10", + "@rollup/pluginutils": "^5.1.0", + "debug": "^4.3.6", + "error-stack-parser-es": "^0.1.5", + "fs-extra": "^11.2.0", + "open": "^10.1.0", + "perfect-debounce": "^1.0.0", + "picocolors": "^1.0.1", + "sirv": "^2.0.4" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/vite-plugin-inspect/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-inspect/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/vite-plugin-inspect/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-inspect/node_modules/open": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-vue-devtools": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-7.4.6.tgz", + "integrity": "sha512-lOKur3qovCB3BQStL0qfHEoIusqya1ngfxfWuqn9DTa6h9rlw6+S3PV4geOP5YBGYQ4NW1hRX70OD8I+sYr1dA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-core": "^7.4.6", + "@vue/devtools-kit": "^7.4.6", + "@vue/devtools-shared": "^7.4.6", + "execa": "^8.0.1", + "sirv": "^2.0.4", + "vite-plugin-inspect": "^0.8.7", + "vite-plugin-vue-inspector": "^5.2.0" + }, + "engines": { + "node": ">=v14.21.3" + }, + "peerDependencies": { + "vite": "^3.1.0 || ^4.0.0-0 || ^5.0.0-0" + } + }, + "node_modules/vite-plugin-vue-devtools/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/vite-plugin-vue-devtools/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-vue-devtools/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/vite-plugin-vue-devtools/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-vue-devtools/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-vue-devtools/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-vue-devtools/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-vue-devtools/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-vue-devtools/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/vite-plugin-vue-devtools/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-vue-inspector": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.2.0.tgz", + "integrity": "sha512-wWxyb9XAtaIvV/Lr7cqB1HIzmHZFVUJsTNm3yAxkS87dgh/Ky4qr2wDEWNxF23fdhVa3jQ8MZREpr4XyiuaRqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.23.0", + "@babel/plugin-proposal-decorators": "^7.23.0", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-transform-typescript": "^7.22.15", + "@vue/babel-plugin-jsx": "^1.1.5", + "@vue/compiler-dom": "^3.3.4", + "kolorist": "^1.8.0", + "magic-string": "^0.30.4" + }, + "peerDependencies": { + "vite": "^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0" + } + }, + "node_modules/vue": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.38.tgz", + "integrity": "sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.4.38", + "@vue/compiler-sfc": "3.4.38", + "@vue/runtime-dom": "3.4.38", + "@vue/server-renderer": "3.4.38", + "@vue/shared": "3.4.38" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-chartjs": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.2.0.tgz", + "integrity": "sha512-d3zpKmGZr2OWHQ1xmxBcAn5ShTG917+/UCLaSpaCDDqT0U7DBsvFzTs69ZnHCgKoXT55GZDW8YEj9Av+dlONLA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "chart.js": "^4.1.1", + "vue": "^3.0.0-0 || ^2.7.0" + } + }, + "node_modules/vue-confirm-dialog": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/vue-confirm-dialog/-/vue-confirm-dialog-1.0.2.tgz", + "integrity": "sha512-gTo1bMDWOLd/6ihmWv8VlPxhc9QaKoE5YqlsKydUOfrrQ3Q3taljF6yI+1TMtAtJLrvZ8DYrePhgBhY1VCJzbQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "vue": "^2.6.10" + } + }, + "node_modules/vue-contenteditable": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/vue-contenteditable/-/vue-contenteditable-3.0.4.tgz", + "integrity": "sha512-CmtqT4zHQwLoJEyNVaXUjjUFPUVYlXXBHfSbRCHCUjODMqrn6L293LM1nc1ELx8epitZZvecTfIqOLlSzB3d+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-demi": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.12.5.tgz", + "integrity": "sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-eslint-parser": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", + "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.2", + "eslint-scope": "^7.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.0.0", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-eslint-parser/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/vue-i18n": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz", + "integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@intlify/core-base": "9.2.2", + "@intlify/shared": "9.2.2", + "@intlify/vue-devtools": "9.2.2", + "@vue/devtools-api": "^6.2.1" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-image-crop-upload": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vue-image-crop-upload/-/vue-image-crop-upload-3.0.3.tgz", + "integrity": "sha512-VeBsU0oI1hXeCvdpnu19DM/r3KTlI8SUXTxsHsU4MhDXR0ahRziiL9tf4FbILGx+gRVNZhGbl32yuM6TiaGNhA==", + "dev": true, + "license": "ISC", + "dependencies": { + "babel-runtime": "^6.11.6" + } + }, + "node_modules/vue-multiselect": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-3.0.0.tgz", + "integrity": "sha512-uupKdINgz7j83lQToCL7KkgQQxvG43el++hsR39YT9pCe1DwzUGmKzPxjVP6rqskXed5P6DtUASYAlCliW740Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.1", + "npm": ">= 6.14.15" + } + }, + "node_modules/vue-prism-editor": { + "version": "2.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/vue-prism-editor/-/vue-prism-editor-2.0.0-alpha.2.tgz", + "integrity": "sha512-Gu42ba9nosrE+gJpnAEuEkDMqG9zSUysIR8SdXUw8MQKDjBnnNR9lHC18uOr/ICz7yrA/5c7jHJr9lpElODC7w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-qrcode": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vue-qrcode/-/vue-qrcode-1.0.1.tgz", + "integrity": "sha512-LHEsHA8mVR+mL8REKeLrvP0h0lelwzkJjFe3ToygKjQS9Mo85m9I7/axdCnRl9ZiZIFjTWkAW1dCK+f8rq0wIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.2.0", + "vue-demi": "^0.12.5" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0", + "qrcode": "^1.0.0", + "vue": "^2.0.0 || ^3.0.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-router": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz", + "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-toastification": { + "version": "2.0.0-rc.5", + "resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-2.0.0-rc.5.tgz", + "integrity": "sha512-q73e5jy6gucEO/U+P48hqX+/qyXDozAGmaGgLFm5tXX4wJBcVsnGp4e/iJqlm9xzHETYOilUuwOUje2Qg1JdwA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.2" + } + }, + "node_modules/vuedraggable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz", + "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", + "dev": true, + "license": "MIT", + "dependencies": { + "sortablejs": "1.14.0" + }, + "peerDependencies": { + "vue": "^3.0.1" + } + }, + "node_modules/wait-on": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz", + "integrity": "sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "axios": "^1.6.1", + "joi": "^17.11.0", + "lodash": "^4.17.21", + "minimist": "^1.2.8", + "rxjs": "^7.8.1" + }, + "bin": { + "wait-on": "bin/wait-on" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/wait-on/node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/wait-on/node_modules/joi": { + "version": "17.13.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", + "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", + "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "license": "MIT", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "node_modules/xmlbuilder": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", + "integrity": "sha512-eKRAFz04jghooy8muekqzo8uCSVNeyRedbuJrp0fovbLIi7wlsYtdUn3vBAAPq2Y3/0xMz2WMEUQ8yhVVO9Stw==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.1.tgz", + "integrity": "sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xmlrpc": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/xmlrpc/-/xmlrpc-1.3.2.tgz", + "integrity": "sha512-jQf5gbrP6wvzN71fgkcPPkF4bF/Wyovd7Xdff8d6/ihxYmgETQYSuTc+Hl+tsh/jmgPLro/Aro48LMFlIyEKKQ==", + "license": "MIT", + "dependencies": { + "sax": "1.2.x", + "xmlbuilder": "8.2.x" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.0.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zip-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/zip-stream/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/zip-stream/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + } + } +} diff --git a/package.json b/package.json index c6bef90eb..d36bd3350 100644 --- a/package.json +++ b/package.json @@ -1,214 +1,214 @@ -{ - "name": "uptime-kuma", - "version": "2.0.0-dev", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/louislam/uptime-kuma.git" - }, - "engines": { - "node": "18 || >= 20.4.0" - }, - "scripts": { - "lint:js": "eslint --ext \".js,.vue\" --ignore-path .gitignore .", - "lint:js-prod": "npm run lint:js -- --max-warnings 0", - "lint-fix:js": "eslint --ext \".js,.vue\" --fix --ignore-path .gitignore .", - "lint:style": "stylelint \"**/*.{vue,css,scss}\" --ignore-path .gitignore", - "lint-fix:style": "stylelint \"**/*.{vue,css,scss}\" --fix --ignore-path .gitignore", - "lint": "npm run lint:js && npm run lint:style", - "lint:prod": "npm run lint:js-prod && npm run lint:style", - "dev": "concurrently -k -r \"wait-on tcp:3000 && npm run start-server-dev \" \"npm run start-frontend-dev\"", - "start-frontend-dev": "cross-env NODE_ENV=development vite --host --config ./config/vite.config.js", - "start-frontend-devcontainer": "cross-env NODE_ENV=development DEVCONTAINER=1 vite --host --config ./config/vite.config.js", - "start": "npm run start-server", - "start-server": "node server/server.js", - "start-server-dev": "cross-env NODE_ENV=development node server/server.js", - "start-server-dev:watch": "cross-env NODE_ENV=development node --watch server/server.js", - "build": "vite build --config ./config/vite.config.js", - "test": "npm run test-backend && npm run test-e2e", - "test-with-build": "npm run build && npm test", - "test-backend": "cross-env TEST_BACKEND=1 node --test test/backend-test", - "test-e2e": "playwright test --config ./config/playwright.config.js", - "test-e2e-ui": "playwright test --config ./config/playwright.config.js --ui --ui-port=51063", - "playwright-codegen": "playwright codegen localhost:3000 --save-storage=./private/e2e-auth.json", - "playwright-show-report": "playwright show-report ./private/playwright-report", - "tsc": "tsc", - "vite-preview-dist": "vite preview --host --config ./config/vite.config.js", - "build-docker": "npm run build && npm run build-docker-full && npm run build-docker-slim", - "build-docker-base": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base2 --target base2 . --push", - "build-docker-base-slim": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base2-slim --target base2-slim . --push", - "build-docker-builder-go": "docker buildx build -f docker/builder-go.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:builder-go . --push", - "build-docker-slim": "node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:2-slim -t louislam/uptime-kuma:$VERSION-slim --target release --build-arg BASE_IMAGE=louislam/uptime-kuma:base2-slim . --push", - "build-docker-full": "node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:2 -t louislam/uptime-kuma:$VERSION --target release . --push", - "build-docker-nightly": "node ./extra/test-docker.js && npm run build && docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly2 --target nightly . --push", - "build-docker-slim-rootless": "node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:2-slim-rootless -t louislam/uptime-kuma:$VERSION-slim-rootless --target rootless --build-arg BASE_IMAGE=louislam/uptime-kuma:base2-slim . --push", - "build-docker-full-rootless": "node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:2-rootless -t louislam/uptime-kuma:$VERSION-rootless --target rootless . --push", - "build-docker-nightly-rootless": "node ./extra/test-docker.js && npm run build && docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly2-rootless --target nightly-rootless . --push", - "build-docker-nightly-local": "npm run build && docker build -f docker/dockerfile -t louislam/uptime-kuma:nightly2 --target nightly .", - "build-docker-pr-test": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64 -t louislam/uptime-kuma:pr-test2 --target pr-test2 . --push", - "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg VERSION --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", - "setup": "git checkout 1.23.14 && npm ci --production && npm run download-dist", - "download-dist": "node extra/download-dist.js", - "mark-as-nightly": "node extra/mark-as-nightly.js", - "reset-password": "node extra/reset-password.js", - "remove-2fa": "node extra/remove-2fa.js", - "simple-dns-server": "node extra/simple-dns-server.js", - "simple-mqtt-server": "node extra/simple-mqtt-server.js", - "simple-mongo": "docker run --rm -p 27017:27017 mongo", - "simple-postgres": "docker run --rm -p 5432:5432 -e POSTGRES_PASSWORD=postgres postgres", - "simple-mariadb": "docker run --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mariadb# mariadb", - "update-language-files": "cd extra/update-language-files && node index.js && cross-env-shell eslint ../../src/languages/$npm_config_language.js --fix", - "release-final": "node ./extra/test-docker.js && node extra/update-version.js && npm run build-docker && node ./extra/press-any-key.js && npm run upload-artifacts && node ./extra/update-wiki-version.js", - "release-beta": "node ./extra/test-docker.js && node extra/beta/update-version.js && npm run build && node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:$VERSION -t louislam/uptime-kuma:beta . --target release --push && node ./extra/press-any-key.js && npm run upload-artifacts", - "git-remove-tag": "git tag -d", - "build-dist-and-restart": "npm run build && npm run start-server-dev", - "start-pr-test": "node extra/checkout-pr.js && npm install && npm run dev", - "build-healthcheck-armv7": "cross-env GOOS=linux GOARCH=arm GOARM=7 go build -x -o ./extra/healthcheck-armv7 ./extra/healthcheck.go", - "deploy-demo-server": "node extra/deploy-demo-server.js", - "sort-contributors": "node extra/sort-contributors.js", - "quick-run-nightly": "docker run --rm --env NODE_ENV=development -p 3001:3001 louislam/uptime-kuma:nightly2", - "start-dev-container": "cd docker && docker-compose -f docker-compose-dev.yml up --force-recreate", - "rebase-pr-to-1.23.X": "node extra/rebase-pr.js 1.23.X" - }, - "dependencies": { - "@grpc/grpc-js": "~1.8.22", - "@louislam/ping": "~0.4.4-mod.1", - "@louislam/sqlite3": "15.1.6", - "@vvo/tzdb": "^6.125.0", - "args-parser": "~1.3.0", - "axios": "~0.28.1", - "badge-maker": "~3.3.1", - "bcryptjs": "~2.4.3", - "chardet": "~1.4.0", - "check-password-strength": "^2.0.5", - "cheerio": "~1.0.0-rc.12", - "chroma-js": "~2.4.2", - "command-exists": "~1.2.9", - "compare-versions": "~3.6.0", - "compression": "~1.7.4", - "croner": "~8.1.0", - "dayjs": "~1.11.5", - "dev-null": "^0.1.1", - "dotenv": "~16.0.3", - "express": "~4.21.0", - "express-basic-auth": "~1.2.1", - "express-static-gzip": "~2.1.7", - "feed": "^4.2.2", - "form-data": "~4.0.0", - "gamedig": "^4.2.0", - "html-escaper": "^3.0.3", - "http-cookie-agent": "~5.0.4", - "http-graceful-shutdown": "~3.1.7", - "http-proxy-agent": "~5.0.0", - "https-proxy-agent": "~5.0.1", - "iconv-lite": "~0.6.3", - "isomorphic-ws": "^5.0.0", - "jsesc": "~3.0.2", - "jsonata": "^2.0.3", - "jsonwebtoken": "~9.0.0", - "jwt-decode": "~3.1.2", - "kafkajs": "^2.2.4", - "knex": "^2.4.2", - "limiter": "~2.1.0", - "liquidjs": "^10.7.0", - "marked": "^14.0.0", - "mitt": "~3.0.1", - "mongodb": "~4.17.1", - "mqtt": "~4.3.7", - "mssql": "~11.0.0", - "mysql2": "~3.9.6", - "nanoid": "~3.3.4", - "net-snmp": "^3.11.2", - "node-cloudflared-tunnel": "~1.0.9", - "node-radius-client": "~1.0.0", - "nodemailer": "~6.9.13", - "nostr-tools": "^1.13.1", - "notp": "~2.0.3", - "openid-client": "^5.4.2", - "password-hash": "~1.2.2", - "pg": "~8.11.3", - "pg-connection-string": "~2.6.2", - "playwright-core": "~1.39.0", - "prom-client": "~13.2.0", - "prometheus-api-metrics": "~3.2.1", - "promisify-child-process": "~4.1.2", - "protobufjs": "~7.2.4", - "qs": "~6.10.4", - "redbean-node": "~0.3.0", - "redis": "~4.5.1", - "semver": "~7.5.4", - "socket.io": "~4.8.0", - "socket.io-client": "~4.8.0", - "socks-proxy-agent": "6.1.1", - "tar": "~6.2.1", - "tcp-ping": "~0.1.1", - "thirty-two": "~1.0.2", - "tough-cookie": "~4.1.3", - "ws": "^8.13.0" - }, - "devDependencies": { - "@actions/github": "~5.1.1", - "@fortawesome/fontawesome-svg-core": "~1.2.36", - "@fortawesome/free-regular-svg-icons": "~5.15.4", - "@fortawesome/free-solid-svg-icons": "~5.15.4", - "@fortawesome/vue-fontawesome": "~3.0.0-5", - "@playwright/test": "~1.39.0", - "@popperjs/core": "~2.10.2", - "@testcontainers/hivemq": "^10.13.1", - "@types/bootstrap": "~5.1.9", - "@types/node": "^20.8.6", - "@typescript-eslint/eslint-plugin": "^6.7.5", - "@typescript-eslint/parser": "^6.7.5", - "@vitejs/plugin-vue": "~5.0.1", - "@vue/compiler-sfc": "~3.4.2", - "@vuepic/vue-datepicker": "~3.4.8", - "aedes": "^0.46.3", - "bootstrap": "5.1.3", - "chart.js": "~4.2.1", - "chartjs-adapter-dayjs-4": "~1.0.4", - "concurrently": "^7.1.0", - "core-js": "~3.26.1", - "cronstrue": "~2.24.0", - "cross-env": "~7.0.3", - "delay": "^5.0.0", - "dns2": "~2.0.1", - "dompurify": "~3.1.7", - "eslint": "~8.14.0", - "eslint-plugin-jsdoc": "~46.4.6", - "eslint-plugin-vue": "~8.7.1", - "favico.js": "~0.3.10", - "get-port-please": "^3.1.1", - "node-ssh": "~13.1.0", - "postcss-html": "~1.5.0", - "postcss-rtlcss": "~3.7.2", - "postcss-scss": "~4.0.4", - "prismjs": "~1.29.0", - "qrcode": "~1.5.0", - "rollup-plugin-visualizer": "^5.6.0", - "sass": "~1.42.1", - "stylelint": "^15.10.1", - "stylelint-config-standard": "~25.0.0", - "terser": "~5.15.0", - "test": "~3.3.0", - "testcontainers": "^10.13.1", - "typescript": "~4.4.4", - "v-pagination-3": "~0.1.7", - "vite": "~5.2.8", - "vite-plugin-compression": "^0.5.1", - "vite-plugin-vue-devtools": "^7.0.15", - "vue": "~3.4.2", - "vue-chartjs": "~5.2.0", - "vue-confirm-dialog": "~1.0.2", - "vue-contenteditable": "~3.0.4", - "vue-i18n": "~9.2.2", - "vue-image-crop-upload": "~3.0.3", - "vue-multiselect": "~3.0.0-alpha.2", - "vue-prism-editor": "~2.0.0-alpha.2", - "vue-qrcode": "~1.0.0", - "vue-router": "~4.2.5", - "vue-toastification": "~2.0.0-rc.5", - "vuedraggable": "~4.1.0", - "wait-on": "^7.2.0", - "whatwg-url": "~12.0.1" - } -} +{ + "name": "uptime-kuma", + "version": "2.0.0-dev", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/louislam/uptime-kuma.git" + }, + "engines": { + "node": "18 || >= 20.4.0" + }, + "scripts": { + "lint:js": "eslint --ext \".js,.vue\" --ignore-path .gitignore .", + "lint:js-prod": "npm run lint:js -- --max-warnings 0", + "lint-fix:js": "eslint --ext \".js,.vue\" --fix --ignore-path .gitignore .", + "lint:style": "stylelint \"**/*.{vue,css,scss}\" --ignore-path .gitignore", + "lint-fix:style": "stylelint \"**/*.{vue,css,scss}\" --fix --ignore-path .gitignore", + "lint": "npm run lint:js && npm run lint:style", + "lint:prod": "npm run lint:js-prod && npm run lint:style", + "dev": "concurrently -k -r \"wait-on tcp:3000 && npm run start-server-dev \" \"npm run start-frontend-dev\"", + "start-frontend-dev": "cross-env NODE_ENV=development vite --host --config ./config/vite.config.js", + "start-frontend-devcontainer": "cross-env NODE_ENV=development DEVCONTAINER=1 vite --host --config ./config/vite.config.js", + "start": "npm run start-server", + "start-server": "node server/server.js", + "start-server-dev": "cross-env NODE_ENV=development node server/server.js", + "start-server-dev:watch": "cross-env NODE_ENV=development node --watch server/server.js", + "build": "vite build --config ./config/vite.config.js", + "test": "npm run test-backend && npm run test-e2e", + "test-with-build": "npm run build && npm test", + "test-backend": "cross-env TEST_BACKEND=1 node --test test/backend-test", + "test-e2e": "playwright test --config ./config/playwright.config.js", + "test-e2e-ui": "playwright test --config ./config/playwright.config.js --ui --ui-port=51063", + "playwright-codegen": "playwright codegen localhost:3000 --save-storage=./private/e2e-auth.json", + "playwright-show-report": "playwright show-report ./private/playwright-report", + "tsc": "tsc", + "vite-preview-dist": "vite preview --host --config ./config/vite.config.js", + "build-docker": "npm run build && npm run build-docker-full && npm run build-docker-slim", + "build-docker-base": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base2 --target base2 . --push", + "build-docker-base-slim": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base2-slim --target base2-slim . --push", + "build-docker-builder-go": "docker buildx build -f docker/builder-go.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:builder-go . --push", + "build-docker-slim": "node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:2-slim -t louislam/uptime-kuma:$VERSION-slim --target release --build-arg BASE_IMAGE=louislam/uptime-kuma:base2-slim . --push", + "build-docker-full": "node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:2 -t louislam/uptime-kuma:$VERSION --target release . --push", + "build-docker-nightly": "node ./extra/test-docker.js && npm run build && docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly2 --target nightly . --push", + "build-docker-slim-rootless": "node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:2-slim-rootless -t louislam/uptime-kuma:$VERSION-slim-rootless --target rootless --build-arg BASE_IMAGE=louislam/uptime-kuma:base2-slim . --push", + "build-docker-full-rootless": "node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:2-rootless -t louislam/uptime-kuma:$VERSION-rootless --target rootless . --push", + "build-docker-nightly-rootless": "node ./extra/test-docker.js && npm run build && docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly2-rootless --target nightly-rootless . --push", + "build-docker-nightly-local": "npm run build && docker build -f docker/dockerfile -t louislam/uptime-kuma:nightly2 --target nightly .", + "build-docker-pr-test": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64 -t louislam/uptime-kuma:pr-test2 --target pr-test2 . --push", + "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg VERSION --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", + "setup": "git checkout 1.23.14 && npm ci --production && npm run download-dist", + "download-dist": "node extra/download-dist.js", + "mark-as-nightly": "node extra/mark-as-nightly.js", + "reset-password": "node extra/reset-password.js", + "remove-2fa": "node extra/remove-2fa.js", + "simple-dns-server": "node extra/simple-dns-server.js", + "simple-mqtt-server": "node extra/simple-mqtt-server.js", + "simple-mongo": "docker run --rm -p 27017:27017 mongo", + "simple-postgres": "docker run --rm -p 5432:5432 -e POSTGRES_PASSWORD=postgres postgres", + "simple-mariadb": "docker run --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mariadb# mariadb", + "update-language-files": "cd extra/update-language-files && node index.js && cross-env-shell eslint ../../src/languages/$npm_config_language.js --fix", + "release-final": "node ./extra/test-docker.js && node extra/update-version.js && npm run build-docker && node ./extra/press-any-key.js && npm run upload-artifacts && node ./extra/update-wiki-version.js", + "release-beta": "node ./extra/test-docker.js && node extra/beta/update-version.js && npm run build && node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:$VERSION -t louislam/uptime-kuma:beta . --target release --push && node ./extra/press-any-key.js && npm run upload-artifacts", + "git-remove-tag": "git tag -d", + "build-dist-and-restart": "npm run build && npm run start-server-dev", + "start-pr-test": "node extra/checkout-pr.js && npm install && npm run dev", + "build-healthcheck-armv7": "cross-env GOOS=linux GOARCH=arm GOARM=7 go build -x -o ./extra/healthcheck-armv7 ./extra/healthcheck.go", + "deploy-demo-server": "node extra/deploy-demo-server.js", + "sort-contributors": "node extra/sort-contributors.js", + "quick-run-nightly": "docker run --rm --env NODE_ENV=development -p 3001:3001 louislam/uptime-kuma:nightly2", + "start-dev-container": "cd docker && docker-compose -f docker-compose-dev.yml up --force-recreate", + "rebase-pr-to-1.23.X": "node extra/rebase-pr.js 1.23.X" + }, + "dependencies": { + "@grpc/grpc-js": "~1.8.22", + "@louislam/ping": "~0.4.4-mod.1", + "@louislam/sqlite3": "15.1.6", + "@vvo/tzdb": "^6.125.0", + "args-parser": "~1.3.0", + "axios": "~0.28.1", + "badge-maker": "~3.3.1", + "bcryptjs": "~2.4.3", + "chardet": "~1.4.0", + "check-password-strength": "^2.0.5", + "cheerio": "~1.0.0-rc.12", + "chroma-js": "~2.4.2", + "command-exists": "~1.2.9", + "compare-versions": "~3.6.0", + "compression": "~1.7.4", + "croner": "~8.1.0", + "dayjs": "~1.11.5", + "dev-null": "^0.1.1", + "dotenv": "~16.0.3", + "express": "~4.21.0", + "express-basic-auth": "~1.2.1", + "express-static-gzip": "~2.1.7", + "feed": "^4.2.2", + "form-data": "~4.0.0", + "gamedig": "^4.2.0", + "html-escaper": "^3.0.3", + "http-cookie-agent": "~5.0.4", + "http-graceful-shutdown": "~3.1.7", + "http-proxy-agent": "~5.0.0", + "https-proxy-agent": "~5.0.1", + "iconv-lite": "~0.6.3", + "isomorphic-ws": "^5.0.0", + "jsesc": "~3.0.2", + "jsonata": "^2.0.3", + "jsonwebtoken": "~9.0.0", + "jwt-decode": "~3.1.2", + "kafkajs": "^2.2.4", + "knex": "^2.4.2", + "limiter": "~2.1.0", + "liquidjs": "^10.7.0", + "marked": "^14.0.0", + "mitt": "~3.0.1", + "mongodb": "~4.17.1", + "mqtt": "~4.3.7", + "mssql": "~11.0.0", + "mysql2": "~3.9.6", + "nanoid": "~3.3.4", + "net-snmp": "^3.11.2", + "node-cloudflared-tunnel": "~1.0.9", + "node-radius-client": "~1.0.0", + "nodemailer": "~6.9.13", + "nostr-tools": "^1.13.1", + "notp": "~2.0.3", + "openid-client": "^5.4.2", + "password-hash": "~1.2.2", + "pg": "~8.11.3", + "pg-connection-string": "~2.6.2", + "playwright-core": "~1.39.0", + "prom-client": "~13.2.0", + "prometheus-api-metrics": "~3.2.1", + "promisify-child-process": "~4.1.2", + "protobufjs": "~7.2.4", + "qs": "~6.10.4", + "redbean-node": "~0.3.0", + "redis": "~4.5.1", + "semver": "~7.5.4", + "socket.io": "~4.8.0", + "socket.io-client": "~4.8.0", + "socks-proxy-agent": "6.1.1", + "tar": "~6.2.1", + "tcp-ping": "~0.1.1", + "thirty-two": "~1.0.2", + "tough-cookie": "~4.1.3", + "ws": "^8.13.0" + }, + "devDependencies": { + "@actions/github": "~5.1.1", + "@fortawesome/fontawesome-svg-core": "~1.2.36", + "@fortawesome/free-regular-svg-icons": "~5.15.4", + "@fortawesome/free-solid-svg-icons": "~5.15.4", + "@fortawesome/vue-fontawesome": "~3.0.0-5", + "@playwright/test": "~1.39.0", + "@popperjs/core": "~2.10.2", + "@testcontainers/hivemq": "^10.13.1", + "@types/bootstrap": "~5.1.9", + "@types/node": "^20.8.6", + "@typescript-eslint/eslint-plugin": "^6.7.5", + "@typescript-eslint/parser": "^6.7.5", + "@vitejs/plugin-vue": "~5.0.1", + "@vue/compiler-sfc": "~3.4.2", + "@vuepic/vue-datepicker": "~3.4.8", + "aedes": "^0.46.3", + "bootstrap": "5.1.3", + "chart.js": "~4.2.1", + "chartjs-adapter-dayjs-4": "~1.0.4", + "concurrently": "^7.1.0", + "core-js": "~3.26.1", + "cronstrue": "~2.24.0", + "cross-env": "~7.0.3", + "delay": "^5.0.0", + "dns2": "~2.0.1", + "dompurify": "~3.1.7", + "eslint": "~8.14.0", + "eslint-plugin-jsdoc": "~46.4.6", + "eslint-plugin-vue": "~8.7.1", + "favico.js": "~0.3.10", + "get-port-please": "^3.1.1", + "node-ssh": "~13.1.0", + "postcss-html": "~1.5.0", + "postcss-rtlcss": "~3.7.2", + "postcss-scss": "~4.0.4", + "prismjs": "~1.29.0", + "qrcode": "~1.5.0", + "rollup-plugin-visualizer": "^5.6.0", + "sass": "~1.42.1", + "stylelint": "^15.10.1", + "stylelint-config-standard": "~25.0.0", + "terser": "~5.15.0", + "test": "~3.3.0", + "testcontainers": "^10.13.1", + "typescript": "~4.4.4", + "v-pagination-3": "~0.1.7", + "vite": "~5.2.8", + "vite-plugin-compression": "^0.5.1", + "vite-plugin-vue-devtools": "^7.0.15", + "vue": "~3.4.2", + "vue-chartjs": "~5.2.0", + "vue-confirm-dialog": "~1.0.2", + "vue-contenteditable": "~3.0.4", + "vue-i18n": "~9.2.2", + "vue-image-crop-upload": "~3.0.3", + "vue-multiselect": "~3.0.0-alpha.2", + "vue-prism-editor": "~2.0.0-alpha.2", + "vue-qrcode": "~1.0.0", + "vue-router": "~4.2.5", + "vue-toastification": "~2.0.0-rc.5", + "vuedraggable": "~4.1.0", + "wait-on": "^7.2.0", + "whatwg-url": "~12.0.1" + } +} diff --git a/server/database.js b/server/database.js index 3374aff9e..9de42dc00 100644 --- a/server/database.js +++ b/server/database.js @@ -1,716 +1,716 @@ -const fs = require("fs"); -const { R } = require("redbean-node"); -const { setSetting, setting } = require("./util-server"); -const { log, sleep } = require("../src/util"); -const knex = require("knex"); -const path = require("path"); -const { EmbeddedMariaDB } = require("./embedded-mariadb"); -const mysql = require("mysql2/promise"); - -/** - * Database & App Data Folder - */ -class Database { - - /** - * Boostrap database for SQLite - * @type {string} - */ - static templatePath = "./db/kuma.db"; - - /** - * Data Dir (Default: ./data) - * @type {string} - */ - static dataDir; - - /** - * User Upload Dir (Default: ./data/upload) - * @type {string} - */ - static uploadDir; - - /** - * Chrome Screenshot Dir (Default: ./data/screenshots) - * @type {string} - */ - static screenshotDir; - - /** - * SQLite file path (Default: ./data/kuma.db) - * @type {string} - */ - static sqlitePath; - - /** - * For storing Docker TLS certs (Default: ./data/docker-tls) - * @type {string} - */ - static dockerTLSDir; - - /** - * @type {boolean} - */ - static patched = false; - - /** - * SQLite only - * Add patch filename in key - * Values: - * true: Add it regardless of order - * false: Do nothing - * { parents: []}: Need parents before add it - * @deprecated - */ - static patchList = { - "patch-setting-value-type.sql": true, - "patch-improve-performance.sql": true, - "patch-2fa.sql": true, - "patch-add-retry-interval-monitor.sql": true, - "patch-incident-table.sql": true, - "patch-group-table.sql": true, - "patch-monitor-push_token.sql": true, - "patch-http-monitor-method-body-and-headers.sql": true, - "patch-2fa-invalidate-used-token.sql": true, - "patch-notification_sent_history.sql": true, - "patch-monitor-basic-auth.sql": true, - "patch-add-docker-columns.sql": true, - "patch-status-page.sql": true, - "patch-proxy.sql": true, - "patch-monitor-expiry-notification.sql": true, - "patch-status-page-footer-css.sql": true, - "patch-added-mqtt-monitor.sql": true, - "patch-add-clickable-status-page-link.sql": true, - "patch-add-sqlserver-monitor.sql": true, - "patch-add-other-auth.sql": { parents: [ "patch-monitor-basic-auth.sql" ] }, - "patch-grpc-monitor.sql": true, - "patch-add-radius-monitor.sql": true, - "patch-monitor-add-resend-interval.sql": true, - "patch-ping-packet-size.sql": true, - "patch-maintenance-table2.sql": true, - "patch-add-gamedig-monitor.sql": true, - "patch-add-google-analytics-status-page-tag.sql": true, - "patch-http-body-encoding.sql": true, - "patch-add-description-monitor.sql": true, - "patch-api-key-table.sql": true, - "patch-monitor-tls.sql": true, - "patch-maintenance-cron.sql": true, - "patch-add-parent-monitor.sql": true, - "patch-add-invert-keyword.sql": true, - "patch-added-json-query.sql": true, - "patch-added-kafka-producer.sql": true, - "patch-add-certificate-expiry-status-page.sql": true, - "patch-monitor-oauth-cc.sql": true, - "patch-add-timeout-monitor.sql": true, - "patch-add-gamedig-given-port.sql": true, - "patch-notification-config.sql": true, - "patch-fix-kafka-producer-booleans.sql": true, - "patch-timeout.sql": true, - "patch-monitor-tls-info-add-fk.sql": true, // The last file so far converted to a knex migration file - }; - - /** - * The final version should be 10 after merged tag feature - * @deprecated Use patchList for any new feature - */ - static latestVersion = 10; - - static noReject = true; - - static dbConfig = {}; - - static knexMigrationsPath = "./db/knex_migrations"; - - /** - * Initialize the data directory - * @param {object} args Arguments to initialize DB with - * @returns {void} - */ - static initDataDir(args) { - // Data Directory (must be end with "/") - Database.dataDir = process.env.DATA_DIR || args["data-dir"] || "./data/"; - - Database.sqlitePath = path.join(Database.dataDir, "kuma.db"); - if (! fs.existsSync(Database.dataDir)) { - fs.mkdirSync(Database.dataDir, { recursive: true }); - } - - Database.uploadDir = path.join(Database.dataDir, "upload/"); - - if (! fs.existsSync(Database.uploadDir)) { - fs.mkdirSync(Database.uploadDir, { recursive: true }); - } - - // Create screenshot dir - Database.screenshotDir = path.join(Database.dataDir, "screenshots/"); - if (! fs.existsSync(Database.screenshotDir)) { - fs.mkdirSync(Database.screenshotDir, { recursive: true }); - } - - Database.dockerTLSDir = path.join(Database.dataDir, "docker-tls/"); - if (! fs.existsSync(Database.dockerTLSDir)) { - fs.mkdirSync(Database.dockerTLSDir, { recursive: true }); - } - - log.info("server", `Data Dir: ${Database.dataDir}`); - } - - /** - * Read the database config - * @throws {Error} If the config is invalid - * @typedef {string|undefined} envString - * @returns {{type: "sqlite"} | {type:envString, hostname:envString, port:envString, database:envString, username:envString, password:envString}} Database config - */ - static readDBConfig() { - let dbConfig; - - let dbConfigString = fs.readFileSync(path.join(Database.dataDir, "db-config.json")).toString("utf-8"); - dbConfig = JSON.parse(dbConfigString); - - if (typeof dbConfig !== "object") { - throw new Error("Invalid db-config.json, it must be an object"); - } - - if (typeof dbConfig.type !== "string") { - throw new Error("Invalid db-config.json, type must be a string"); - } - return dbConfig; - } - - /** - * @typedef {string|undefined} envString - * @param {{type: "sqlite"} | {type:envString, hostname:envString, port:envString, database:envString, username:envString, password:envString}} dbConfig the database configuration that should be written - * @returns {void} - */ - static writeDBConfig(dbConfig) { - fs.writeFileSync(path.join(Database.dataDir, "db-config.json"), JSON.stringify(dbConfig, null, 4)); - } - - /** - * Connect to the database - * @param {boolean} testMode Should the connection be started in test mode? - * @param {boolean} autoloadModels Should models be automatically loaded? - * @param {boolean} noLog Should logs not be output? - * @returns {Promise} - */ - static async connect(testMode = false, autoloadModels = true, noLog = false) { - const acquireConnectionTimeout = 120 * 1000; - let dbConfig; - try { - dbConfig = this.readDBConfig(); - Database.dbConfig = dbConfig; - } catch (err) { - log.warn("db", err.message); - dbConfig = { - type: "sqlite", - }; - } - - let config = {}; - - let mariadbPoolConfig = { - min: 0, - max: 10, - idleTimeoutMillis: 30000, - }; - - log.info("db", `Database Type: ${dbConfig.type}`); - - if (dbConfig.type === "sqlite") { - - if (! fs.existsSync(Database.sqlitePath)) { - log.info("server", "Copying Database"); - fs.copyFileSync(Database.templatePath, Database.sqlitePath); - } - - const Dialect = require("knex/lib/dialects/sqlite3/index.js"); - Dialect.prototype._driver = () => require("@louislam/sqlite3"); - - config = { - client: Dialect, - connection: { - filename: Database.sqlitePath, - acquireConnectionTimeout: acquireConnectionTimeout, - }, - useNullAsDefault: true, - pool: { - min: 1, - max: 1, - idleTimeoutMillis: 120 * 1000, - propagateCreateError: false, - acquireTimeoutMillis: acquireConnectionTimeout, - } - }; - } else if (dbConfig.type === "mariadb") { - if (!/^\w+$/.test(dbConfig.dbName)) { - throw Error("Invalid database name. A database name can only consist of letters, numbers and underscores"); - } - - const connection = await mysql.createConnection({ - host: dbConfig.hostname, - port: dbConfig.port, - user: dbConfig.username, - password: dbConfig.password, - }); - - await connection.execute("CREATE DATABASE IF NOT EXISTS " + dbConfig.dbName + " CHARACTER SET utf8mb4"); - connection.end(); - - config = { - client: "mysql2", - connection: { - host: dbConfig.hostname, - port: dbConfig.port, - user: dbConfig.username, - password: dbConfig.password, - database: dbConfig.dbName, - timezone: "Z", - typeCast: function (field, next) { - if (field.type === "DATETIME") { - // Do not perform timezone conversion - return field.string(); - } - return next(); - }, - }, - pool: mariadbPoolConfig, - }; - } else if (dbConfig.type === "embedded-mariadb") { - let embeddedMariaDB = EmbeddedMariaDB.getInstance(); - await embeddedMariaDB.start(); - log.info("mariadb", "Embedded MariaDB started"); - config = { - client: "mysql2", - connection: { - socketPath: embeddedMariaDB.socketPath, - user: "node", - database: "kuma", - timezone: "Z", - typeCast: function (field, next) { - if (field.type === "DATETIME") { - // Do not perform timezone conversion - return field.string(); - } - return next(); - }, - }, - pool: mariadbPoolConfig, - }; - } else { - throw new Error("Unknown Database type: " + dbConfig.type); - } - - // Set to utf8mb4 for MariaDB - if (dbConfig.type.endsWith("mariadb")) { - config.pool = { - afterCreate(conn, done) { - conn.query("SET CHARACTER SET utf8mb4;", (err) => done(err, conn)); - }, - }; - } - - const knexInstance = knex(config); - - R.setup(knexInstance); - - if (process.env.SQL_LOG === "1") { - R.debug(true); - } - - // Auto map the model to a bean object - R.freeze(true); - - if (autoloadModels) { - await R.autoloadModels("./server/model"); - } - - if (dbConfig.type === "sqlite") { - await this.initSQLite(testMode, noLog); - } else if (dbConfig.type.endsWith("mariadb")) { - await this.initMariaDB(); - } - } - - /** - @param {boolean} testMode Should the connection be started in test mode? - @param {boolean} noLog Should logs not be output? - @returns {Promise} - */ - static async initSQLite(testMode, noLog) { - await R.exec("PRAGMA foreign_keys = ON"); - if (testMode) { - // Change to MEMORY - await R.exec("PRAGMA journal_mode = MEMORY"); - } else { - // Change to WAL - await R.exec("PRAGMA journal_mode = WAL"); - } - await R.exec("PRAGMA cache_size = -12000"); - await R.exec("PRAGMA auto_vacuum = INCREMENTAL"); - - // This ensures that an operating system crash or power failure will not corrupt the database. - // FULL synchronous is very safe, but it is also slower. - // Read more: https://sqlite.org/pragma.html#pragma_synchronous - await R.exec("PRAGMA synchronous = NORMAL"); - - if (!noLog) { - log.debug("db", "SQLite config:"); - log.debug("db", await R.getAll("PRAGMA journal_mode")); - log.debug("db", await R.getAll("PRAGMA cache_size")); - log.debug("db", "SQLite Version: " + await R.getCell("SELECT sqlite_version()")); - } - } - - /** - * Initialize MariaDB - * @returns {Promise} - */ - static async initMariaDB() { - log.debug("db", "Checking if MariaDB database exists..."); - - let hasTable = await R.hasTable("docker_host"); - if (!hasTable) { - const { createTables } = require("../db/knex_init_db"); - await createTables(); - } else { - log.debug("db", "MariaDB database already exists"); - } - } - - /** - * Patch the database - * @returns {Promise} - */ - static async patch() { - // Still need to keep this for old versions of Uptime Kuma - if (Database.dbConfig.type === "sqlite") { - await this.patchSqlite(); - } - - // Using knex migrations - // https://knexjs.org/guide/migrations.html - // https://gist.github.com/NigelEarle/70db130cc040cc2868555b29a0278261 - try { - await R.knex.migrate.latest({ - directory: Database.knexMigrationsPath, - }); - } catch (e) { - // Allow missing patch files for downgrade or testing pr. - if (e.message.includes("the following files are missing:")) { - log.warn("db", e.message); - log.warn("db", "Database migration failed, you may be downgrading Uptime Kuma."); - } else { - log.error("db", "Database migration failed"); - throw e; - } - } - } - - /** - * TODO - * @returns {Promise} - */ - static async rollbackLatestPatch() { - - } - - /** - * Patch the database for SQLite - * @returns {Promise} - * @deprecated - */ - static async patchSqlite() { - let version = parseInt(await setting("database_version")); - - if (! version) { - version = 0; - } - - if (version !== this.latestVersion) { - log.info("db", "Your database version: " + version); - log.info("db", "Latest database version: " + this.latestVersion); - } - - if (version === this.latestVersion) { - log.debug("db", "Database patch not needed"); - } else if (version > this.latestVersion) { - log.warn("db", "Warning: Database version is newer than expected"); - } else { - log.info("db", "Database patch is needed"); - - // Try catch anything here - try { - for (let i = version + 1; i <= this.latestVersion; i++) { - const sqlFile = `./db/old_migrations/patch${i}.sql`; - log.info("db", `Patching ${sqlFile}`); - await Database.importSQLFile(sqlFile); - log.info("db", `Patched ${sqlFile}`); - await setSetting("database_version", i); - } - } catch (ex) { - await Database.close(); - - log.error("db", ex); - log.error("db", "Start Uptime-Kuma failed due to issue patching the database"); - log.error("db", "Please submit a bug report if you still encounter the problem after restart: https://github.com/louislam/uptime-kuma/issues"); - - process.exit(1); - } - } - - await this.patchSqlite2(); - await this.migrateNewStatusPage(); - } - - /** - * Patch DB using new process - * Call it from patch() only - * @deprecated - * @private - * @returns {Promise} - */ - static async patchSqlite2() { - log.debug("db", "Database Patch 2.0 Process"); - let databasePatchedFiles = await setting("databasePatchedFiles"); - - if (! databasePatchedFiles) { - databasePatchedFiles = {}; - } - - log.debug("db", "Patched files:"); - log.debug("db", databasePatchedFiles); - - try { - for (let sqlFilename in this.patchList) { - await this.patch2Recursion(sqlFilename, databasePatchedFiles); - } - - if (this.patched) { - log.info("db", "Database Patched Successfully"); - } - - } catch (ex) { - await Database.close(); - - log.error("db", ex); - log.error("db", "Start Uptime-Kuma failed due to issue patching the database"); - log.error("db", "Please submit the bug report if you still encounter the problem after restart: https://github.com/louislam/uptime-kuma/issues"); - - process.exit(1); - } - - await setSetting("databasePatchedFiles", databasePatchedFiles); - } - - /** - * SQlite only - * Migrate status page value in setting to "status_page" table - * @returns {Promise} - */ - static async migrateNewStatusPage() { - - // Fix 1.13.0 empty slug bug - await R.exec("UPDATE status_page SET slug = 'empty-slug-recover' WHERE TRIM(slug) = ''"); - - let title = await setting("title"); - - if (title) { - console.log("Migrating Status Page"); - - let statusPageCheck = await R.findOne("status_page", " slug = 'default' "); - - if (statusPageCheck !== null) { - console.log("Migrating Status Page - Skip, default slug record is already existing"); - return; - } - - let statusPage = R.dispense("status_page"); - statusPage.slug = "default"; - statusPage.title = title; - statusPage.description = await setting("description"); - statusPage.icon = await setting("icon"); - statusPage.theme = await setting("statusPageTheme"); - statusPage.published = !!await setting("statusPagePublished"); - statusPage.search_engine_index = !!await setting("searchEngineIndex"); - statusPage.show_tags = !!await setting("statusPageTags"); - statusPage.password = null; - - if (!statusPage.title) { - statusPage.title = "My Status Page"; - } - - if (!statusPage.icon) { - statusPage.icon = ""; - } - - if (!statusPage.theme) { - statusPage.theme = "light"; - } - - let id = await R.store(statusPage); - - await R.exec("UPDATE incident SET status_page_id = ? WHERE status_page_id IS NULL", [ - id - ]); - - await R.exec("UPDATE [group] SET status_page_id = ? WHERE status_page_id IS NULL", [ - id - ]); - - await R.exec("DELETE FROM setting WHERE type = 'statusPage'"); - - // Migrate Entry Page if it is status page - let entryPage = await setting("entryPage"); - - if (entryPage === "statusPage") { - await setSetting("entryPage", "statusPage-default", "general"); - } - - console.log("Migrating Status Page - Done"); - } - - } - - /** - * Patch database using new patching process - * Used it patch2() only - * @private - * @param {string} sqlFilename Name of SQL file to load - * @param {object} databasePatchedFiles Patch status of database files - * @returns {Promise} - */ - static async patch2Recursion(sqlFilename, databasePatchedFiles) { - let value = this.patchList[sqlFilename]; - - if (! value) { - log.info("db", sqlFilename + " skip"); - return; - } - - // Check if patched - if (! databasePatchedFiles[sqlFilename]) { - log.info("db", sqlFilename + " is not patched"); - - if (value.parents) { - log.info("db", sqlFilename + " need parents"); - for (let parentSQLFilename of value.parents) { - await this.patch2Recursion(parentSQLFilename, databasePatchedFiles); - } - } - - log.info("db", sqlFilename + " is patching"); - this.patched = true; - await this.importSQLFile("./db/old_migrations/" + sqlFilename); - databasePatchedFiles[sqlFilename] = true; - log.info("db", sqlFilename + " was patched successfully"); - - } else { - log.debug("db", sqlFilename + " is already patched, skip"); - } - } - - /** - * Load an SQL file and execute it - * @param {string} filename Filename of SQL file to import - * @returns {Promise} - */ - static async importSQLFile(filename) { - // Sadly, multi sql statements is not supported by many sqlite libraries, I have to implement it myself - await R.getCell("SELECT 1"); - - let text = fs.readFileSync(filename).toString(); - - // Remove all comments (--) - let lines = text.split("\n"); - lines = lines.filter((line) => { - return ! line.startsWith("--"); - }); - - // Split statements by semicolon - // Filter out empty line - text = lines.join("\n"); - - let statements = text.split(";") - .map((statement) => { - return statement.trim(); - }) - .filter((statement) => { - return statement !== ""; - }); - - for (let statement of statements) { - await R.exec(statement); - } - } - - /** - * Special handle, because tarn.js throw a promise reject that cannot be caught - * @returns {Promise} - */ - static async close() { - const listener = (reason, p) => { - Database.noReject = false; - }; - process.addListener("unhandledRejection", listener); - - log.info("db", "Closing the database"); - - // Flush WAL to main database - if (Database.dbConfig.type === "sqlite") { - await R.exec("PRAGMA wal_checkpoint(TRUNCATE)"); - } - - while (true) { - Database.noReject = true; - await R.close(); - await sleep(2000); - - if (Database.noReject) { - break; - } else { - log.info("db", "Waiting to close the database"); - } - } - log.info("db", "Database closed"); - - process.removeListener("unhandledRejection", listener); - } - - /** - * Get the size of the database (SQLite only) - * @returns {number} Size of database - */ - static getSize() { - if (Database.dbConfig.type === "sqlite") { - log.debug("db", "Database.getSize()"); - let stats = fs.statSync(Database.sqlitePath); - log.debug("db", stats); - return stats.size; - } - return 0; - } - - /** - * Shrink the database - * @returns {Promise} - */ - static async shrink() { - if (Database.dbConfig.type === "sqlite") { - await R.exec("VACUUM"); - } - } - - /** - * @returns {string} Get the SQL for the current time plus a number of hours - */ - static sqlHourOffset() { - if (Database.dbConfig.type === "sqlite") { - return "DATETIME('now', ? || ' hours')"; - } else { - return "DATE_ADD(NOW(), INTERVAL ? HOUR)"; - } - } - -} - -module.exports = Database; +const fs = require("fs"); +const { R } = require("redbean-node"); +const { setSetting, setting } = require("./util-server"); +const { log, sleep } = require("../src/util"); +const knex = require("knex"); +const path = require("path"); +const { EmbeddedMariaDB } = require("./embedded-mariadb"); +const mysql = require("mysql2/promise"); + +/** + * Database & App Data Folder + */ +class Database { + + /** + * Boostrap database for SQLite + * @type {string} + */ + static templatePath = "./db/kuma.db"; + + /** + * Data Dir (Default: ./data) + * @type {string} + */ + static dataDir; + + /** + * User Upload Dir (Default: ./data/upload) + * @type {string} + */ + static uploadDir; + + /** + * Chrome Screenshot Dir (Default: ./data/screenshots) + * @type {string} + */ + static screenshotDir; + + /** + * SQLite file path (Default: ./data/kuma.db) + * @type {string} + */ + static sqlitePath; + + /** + * For storing Docker TLS certs (Default: ./data/docker-tls) + * @type {string} + */ + static dockerTLSDir; + + /** + * @type {boolean} + */ + static patched = false; + + /** + * SQLite only + * Add patch filename in key + * Values: + * true: Add it regardless of order + * false: Do nothing + * { parents: []}: Need parents before add it + * @deprecated + */ + static patchList = { + "patch-setting-value-type.sql": true, + "patch-improve-performance.sql": true, + "patch-2fa.sql": true, + "patch-add-retry-interval-monitor.sql": true, + "patch-incident-table.sql": true, + "patch-group-table.sql": true, + "patch-monitor-push_token.sql": true, + "patch-http-monitor-method-body-and-headers.sql": true, + "patch-2fa-invalidate-used-token.sql": true, + "patch-notification_sent_history.sql": true, + "patch-monitor-basic-auth.sql": true, + "patch-add-docker-columns.sql": true, + "patch-status-page.sql": true, + "patch-proxy.sql": true, + "patch-monitor-expiry-notification.sql": true, + "patch-status-page-footer-css.sql": true, + "patch-added-mqtt-monitor.sql": true, + "patch-add-clickable-status-page-link.sql": true, + "patch-add-sqlserver-monitor.sql": true, + "patch-add-other-auth.sql": { parents: [ "patch-monitor-basic-auth.sql" ] }, + "patch-grpc-monitor.sql": true, + "patch-add-radius-monitor.sql": true, + "patch-monitor-add-resend-interval.sql": true, + "patch-ping-packet-size.sql": true, + "patch-maintenance-table2.sql": true, + "patch-add-gamedig-monitor.sql": true, + "patch-add-google-analytics-status-page-tag.sql": true, + "patch-http-body-encoding.sql": true, + "patch-add-description-monitor.sql": true, + "patch-api-key-table.sql": true, + "patch-monitor-tls.sql": true, + "patch-maintenance-cron.sql": true, + "patch-add-parent-monitor.sql": true, + "patch-add-invert-keyword.sql": true, + "patch-added-json-query.sql": true, + "patch-added-kafka-producer.sql": true, + "patch-add-certificate-expiry-status-page.sql": true, + "patch-monitor-oauth-cc.sql": true, + "patch-add-timeout-monitor.sql": true, + "patch-add-gamedig-given-port.sql": true, + "patch-notification-config.sql": true, + "patch-fix-kafka-producer-booleans.sql": true, + "patch-timeout.sql": true, + "patch-monitor-tls-info-add-fk.sql": true, // The last file so far converted to a knex migration file + }; + + /** + * The final version should be 10 after merged tag feature + * @deprecated Use patchList for any new feature + */ + static latestVersion = 10; + + static noReject = true; + + static dbConfig = {}; + + static knexMigrationsPath = "./db/knex_migrations"; + + /** + * Initialize the data directory + * @param {object} args Arguments to initialize DB with + * @returns {void} + */ + static initDataDir(args) { + // Data Directory (must be end with "/") + Database.dataDir = process.env.DATA_DIR || args["data-dir"] || "./data/"; + + Database.sqlitePath = path.join(Database.dataDir, "kuma.db"); + if (! fs.existsSync(Database.dataDir)) { + fs.mkdirSync(Database.dataDir, { recursive: true }); + } + + Database.uploadDir = path.join(Database.dataDir, "upload/"); + + if (! fs.existsSync(Database.uploadDir)) { + fs.mkdirSync(Database.uploadDir, { recursive: true }); + } + + // Create screenshot dir + Database.screenshotDir = path.join(Database.dataDir, "screenshots/"); + if (! fs.existsSync(Database.screenshotDir)) { + fs.mkdirSync(Database.screenshotDir, { recursive: true }); + } + + Database.dockerTLSDir = path.join(Database.dataDir, "docker-tls/"); + if (! fs.existsSync(Database.dockerTLSDir)) { + fs.mkdirSync(Database.dockerTLSDir, { recursive: true }); + } + + log.info("server", `Data Dir: ${Database.dataDir}`); + } + + /** + * Read the database config + * @throws {Error} If the config is invalid + * @typedef {string|undefined} envString + * @returns {{type: "sqlite"} | {type:envString, hostname:envString, port:envString, database:envString, username:envString, password:envString}} Database config + */ + static readDBConfig() { + let dbConfig; + + let dbConfigString = fs.readFileSync(path.join(Database.dataDir, "db-config.json")).toString("utf-8"); + dbConfig = JSON.parse(dbConfigString); + + if (typeof dbConfig !== "object") { + throw new Error("Invalid db-config.json, it must be an object"); + } + + if (typeof dbConfig.type !== "string") { + throw new Error("Invalid db-config.json, type must be a string"); + } + return dbConfig; + } + + /** + * @typedef {string|undefined} envString + * @param {{type: "sqlite"} | {type:envString, hostname:envString, port:envString, database:envString, username:envString, password:envString}} dbConfig the database configuration that should be written + * @returns {void} + */ + static writeDBConfig(dbConfig) { + fs.writeFileSync(path.join(Database.dataDir, "db-config.json"), JSON.stringify(dbConfig, null, 4)); + } + + /** + * Connect to the database + * @param {boolean} testMode Should the connection be started in test mode? + * @param {boolean} autoloadModels Should models be automatically loaded? + * @param {boolean} noLog Should logs not be output? + * @returns {Promise} + */ + static async connect(testMode = false, autoloadModels = true, noLog = false) { + const acquireConnectionTimeout = 120 * 1000; + let dbConfig; + try { + dbConfig = this.readDBConfig(); + Database.dbConfig = dbConfig; + } catch (err) { + log.warn("db", err.message); + dbConfig = { + type: "sqlite", + }; + } + + let config = {}; + + let mariadbPoolConfig = { + min: 0, + max: 10, + idleTimeoutMillis: 30000, + }; + + log.info("db", `Database Type: ${dbConfig.type}`); + + if (dbConfig.type === "sqlite") { + + if (! fs.existsSync(Database.sqlitePath)) { + log.info("server", "Copying Database"); + fs.copyFileSync(Database.templatePath, Database.sqlitePath); + } + + const Dialect = require("knex/lib/dialects/sqlite3/index.js"); + Dialect.prototype._driver = () => require("@louislam/sqlite3"); + + config = { + client: Dialect, + connection: { + filename: Database.sqlitePath, + acquireConnectionTimeout: acquireConnectionTimeout, + }, + useNullAsDefault: true, + pool: { + min: 1, + max: 1, + idleTimeoutMillis: 120 * 1000, + propagateCreateError: false, + acquireTimeoutMillis: acquireConnectionTimeout, + } + }; + } else if (dbConfig.type === "mariadb") { + if (!/^\w+$/.test(dbConfig.dbName)) { + throw Error("Invalid database name. A database name can only consist of letters, numbers and underscores"); + } + + const connection = await mysql.createConnection({ + host: dbConfig.hostname, + port: dbConfig.port, + user: dbConfig.username, + password: dbConfig.password, + }); + + await connection.execute("CREATE DATABASE IF NOT EXISTS " + dbConfig.dbName + " CHARACTER SET utf8mb4"); + connection.end(); + + config = { + client: "mysql2", + connection: { + host: dbConfig.hostname, + port: dbConfig.port, + user: dbConfig.username, + password: dbConfig.password, + database: dbConfig.dbName, + timezone: "Z", + typeCast: function (field, next) { + if (field.type === "DATETIME") { + // Do not perform timezone conversion + return field.string(); + } + return next(); + }, + }, + pool: mariadbPoolConfig, + }; + } else if (dbConfig.type === "embedded-mariadb") { + let embeddedMariaDB = EmbeddedMariaDB.getInstance(); + await embeddedMariaDB.start(); + log.info("mariadb", "Embedded MariaDB started"); + config = { + client: "mysql2", + connection: { + socketPath: embeddedMariaDB.socketPath, + user: "node", + database: "kuma", + timezone: "Z", + typeCast: function (field, next) { + if (field.type === "DATETIME") { + // Do not perform timezone conversion + return field.string(); + } + return next(); + }, + }, + pool: mariadbPoolConfig, + }; + } else { + throw new Error("Unknown Database type: " + dbConfig.type); + } + + // Set to utf8mb4 for MariaDB + if (dbConfig.type.endsWith("mariadb")) { + config.pool = { + afterCreate(conn, done) { + conn.query("SET CHARACTER SET utf8mb4;", (err) => done(err, conn)); + }, + }; + } + + const knexInstance = knex(config); + + R.setup(knexInstance); + + if (process.env.SQL_LOG === "1") { + R.debug(true); + } + + // Auto map the model to a bean object + R.freeze(true); + + if (autoloadModels) { + await R.autoloadModels("./server/model"); + } + + if (dbConfig.type === "sqlite") { + await this.initSQLite(testMode, noLog); + } else if (dbConfig.type.endsWith("mariadb")) { + await this.initMariaDB(); + } + } + + /** + @param {boolean} testMode Should the connection be started in test mode? + @param {boolean} noLog Should logs not be output? + @returns {Promise} + */ + static async initSQLite(testMode, noLog) { + await R.exec("PRAGMA foreign_keys = ON"); + if (testMode) { + // Change to MEMORY + await R.exec("PRAGMA journal_mode = MEMORY"); + } else { + // Change to WAL + await R.exec("PRAGMA journal_mode = WAL"); + } + await R.exec("PRAGMA cache_size = -12000"); + await R.exec("PRAGMA auto_vacuum = INCREMENTAL"); + + // This ensures that an operating system crash or power failure will not corrupt the database. + // FULL synchronous is very safe, but it is also slower. + // Read more: https://sqlite.org/pragma.html#pragma_synchronous + await R.exec("PRAGMA synchronous = NORMAL"); + + if (!noLog) { + log.debug("db", "SQLite config:"); + log.debug("db", await R.getAll("PRAGMA journal_mode")); + log.debug("db", await R.getAll("PRAGMA cache_size")); + log.debug("db", "SQLite Version: " + await R.getCell("SELECT sqlite_version()")); + } + } + + /** + * Initialize MariaDB + * @returns {Promise} + */ + static async initMariaDB() { + log.debug("db", "Checking if MariaDB database exists..."); + + let hasTable = await R.hasTable("docker_host"); + if (!hasTable) { + const { createTables } = require("../db/knex_init_db"); + await createTables(); + } else { + log.debug("db", "MariaDB database already exists"); + } + } + + /** + * Patch the database + * @returns {Promise} + */ + static async patch() { + // Still need to keep this for old versions of Uptime Kuma + if (Database.dbConfig.type === "sqlite") { + await this.patchSqlite(); + } + + // Using knex migrations + // https://knexjs.org/guide/migrations.html + // https://gist.github.com/NigelEarle/70db130cc040cc2868555b29a0278261 + try { + await R.knex.migrate.latest({ + directory: Database.knexMigrationsPath, + }); + } catch (e) { + // Allow missing patch files for downgrade or testing pr. + if (e.message.includes("the following files are missing:")) { + log.warn("db", e.message); + log.warn("db", "Database migration failed, you may be downgrading Uptime Kuma."); + } else { + log.error("db", "Database migration failed"); + throw e; + } + } + } + + /** + * TODO + * @returns {Promise} + */ + static async rollbackLatestPatch() { + + } + + /** + * Patch the database for SQLite + * @returns {Promise} + * @deprecated + */ + static async patchSqlite() { + let version = parseInt(await setting("database_version")); + + if (! version) { + version = 0; + } + + if (version !== this.latestVersion) { + log.info("db", "Your database version: " + version); + log.info("db", "Latest database version: " + this.latestVersion); + } + + if (version === this.latestVersion) { + log.debug("db", "Database patch not needed"); + } else if (version > this.latestVersion) { + log.warn("db", "Warning: Database version is newer than expected"); + } else { + log.info("db", "Database patch is needed"); + + // Try catch anything here + try { + for (let i = version + 1; i <= this.latestVersion; i++) { + const sqlFile = `./db/old_migrations/patch${i}.sql`; + log.info("db", `Patching ${sqlFile}`); + await Database.importSQLFile(sqlFile); + log.info("db", `Patched ${sqlFile}`); + await setSetting("database_version", i); + } + } catch (ex) { + await Database.close(); + + log.error("db", ex); + log.error("db", "Start Uptime-Kuma failed due to issue patching the database"); + log.error("db", "Please submit a bug report if you still encounter the problem after restart: https://github.com/louislam/uptime-kuma/issues"); + + process.exit(1); + } + } + + await this.patchSqlite2(); + await this.migrateNewStatusPage(); + } + + /** + * Patch DB using new process + * Call it from patch() only + * @deprecated + * @private + * @returns {Promise} + */ + static async patchSqlite2() { + log.debug("db", "Database Patch 2.0 Process"); + let databasePatchedFiles = await setting("databasePatchedFiles"); + + if (! databasePatchedFiles) { + databasePatchedFiles = {}; + } + + log.debug("db", "Patched files:"); + log.debug("db", databasePatchedFiles); + + try { + for (let sqlFilename in this.patchList) { + await this.patch2Recursion(sqlFilename, databasePatchedFiles); + } + + if (this.patched) { + log.info("db", "Database Patched Successfully"); + } + + } catch (ex) { + await Database.close(); + + log.error("db", ex); + log.error("db", "Start Uptime-Kuma failed due to issue patching the database"); + log.error("db", "Please submit the bug report if you still encounter the problem after restart: https://github.com/louislam/uptime-kuma/issues"); + + process.exit(1); + } + + await setSetting("databasePatchedFiles", databasePatchedFiles); + } + + /** + * SQlite only + * Migrate status page value in setting to "status_page" table + * @returns {Promise} + */ + static async migrateNewStatusPage() { + + // Fix 1.13.0 empty slug bug + await R.exec("UPDATE status_page SET slug = 'empty-slug-recover' WHERE TRIM(slug) = ''"); + + let title = await setting("title"); + + if (title) { + console.log("Migrating Status Page"); + + let statusPageCheck = await R.findOne("status_page", " slug = 'default' "); + + if (statusPageCheck !== null) { + console.log("Migrating Status Page - Skip, default slug record is already existing"); + return; + } + + let statusPage = R.dispense("status_page"); + statusPage.slug = "default"; + statusPage.title = title; + statusPage.description = await setting("description"); + statusPage.icon = await setting("icon"); + statusPage.theme = await setting("statusPageTheme"); + statusPage.published = !!await setting("statusPagePublished"); + statusPage.search_engine_index = !!await setting("searchEngineIndex"); + statusPage.show_tags = !!await setting("statusPageTags"); + statusPage.password = null; + + if (!statusPage.title) { + statusPage.title = "My Status Page"; + } + + if (!statusPage.icon) { + statusPage.icon = ""; + } + + if (!statusPage.theme) { + statusPage.theme = "light"; + } + + let id = await R.store(statusPage); + + await R.exec("UPDATE incident SET status_page_id = ? WHERE status_page_id IS NULL", [ + id + ]); + + await R.exec("UPDATE [group] SET status_page_id = ? WHERE status_page_id IS NULL", [ + id + ]); + + await R.exec("DELETE FROM setting WHERE type = 'statusPage'"); + + // Migrate Entry Page if it is status page + let entryPage = await setting("entryPage"); + + if (entryPage === "statusPage") { + await setSetting("entryPage", "statusPage-default", "general"); + } + + console.log("Migrating Status Page - Done"); + } + + } + + /** + * Patch database using new patching process + * Used it patch2() only + * @private + * @param {string} sqlFilename Name of SQL file to load + * @param {object} databasePatchedFiles Patch status of database files + * @returns {Promise} + */ + static async patch2Recursion(sqlFilename, databasePatchedFiles) { + let value = this.patchList[sqlFilename]; + + if (! value) { + log.info("db", sqlFilename + " skip"); + return; + } + + // Check if patched + if (! databasePatchedFiles[sqlFilename]) { + log.info("db", sqlFilename + " is not patched"); + + if (value.parents) { + log.info("db", sqlFilename + " need parents"); + for (let parentSQLFilename of value.parents) { + await this.patch2Recursion(parentSQLFilename, databasePatchedFiles); + } + } + + log.info("db", sqlFilename + " is patching"); + this.patched = true; + await this.importSQLFile("./db/old_migrations/" + sqlFilename); + databasePatchedFiles[sqlFilename] = true; + log.info("db", sqlFilename + " was patched successfully"); + + } else { + log.debug("db", sqlFilename + " is already patched, skip"); + } + } + + /** + * Load an SQL file and execute it + * @param {string} filename Filename of SQL file to import + * @returns {Promise} + */ + static async importSQLFile(filename) { + // Sadly, multi sql statements is not supported by many sqlite libraries, I have to implement it myself + await R.getCell("SELECT 1"); + + let text = fs.readFileSync(filename).toString(); + + // Remove all comments (--) + let lines = text.split("\n"); + lines = lines.filter((line) => { + return ! line.startsWith("--"); + }); + + // Split statements by semicolon + // Filter out empty line + text = lines.join("\n"); + + let statements = text.split(";") + .map((statement) => { + return statement.trim(); + }) + .filter((statement) => { + return statement !== ""; + }); + + for (let statement of statements) { + await R.exec(statement); + } + } + + /** + * Special handle, because tarn.js throw a promise reject that cannot be caught + * @returns {Promise} + */ + static async close() { + const listener = (reason, p) => { + Database.noReject = false; + }; + process.addListener("unhandledRejection", listener); + + log.info("db", "Closing the database"); + + // Flush WAL to main database + if (Database.dbConfig.type === "sqlite") { + await R.exec("PRAGMA wal_checkpoint(TRUNCATE)"); + } + + while (true) { + Database.noReject = true; + await R.close(); + await sleep(2000); + + if (Database.noReject) { + break; + } else { + log.info("db", "Waiting to close the database"); + } + } + log.info("db", "Database closed"); + + process.removeListener("unhandledRejection", listener); + } + + /** + * Get the size of the database (SQLite only) + * @returns {number} Size of database + */ + static getSize() { + if (Database.dbConfig.type === "sqlite") { + log.debug("db", "Database.getSize()"); + let stats = fs.statSync(Database.sqlitePath); + log.debug("db", stats); + return stats.size; + } + return 0; + } + + /** + * Shrink the database + * @returns {Promise} + */ + static async shrink() { + if (Database.dbConfig.type === "sqlite") { + await R.exec("VACUUM"); + } + } + + /** + * @returns {string} Get the SQL for the current time plus a number of hours + */ + static sqlHourOffset() { + if (Database.dbConfig.type === "sqlite") { + return "DATETIME('now', ? || ' hours')"; + } else { + return "DATE_ADD(NOW(), INTERVAL ? HOUR)"; + } + } + +} + +module.exports = Database; diff --git a/server/jobs/clear-old-data.js b/server/jobs/clear-old-data.js index 248a4d409..aa72f3c6e 100644 --- a/server/jobs/clear-old-data.js +++ b/server/jobs/clear-old-data.js @@ -1,57 +1,57 @@ -const { R } = require("redbean-node"); -const { log } = require("../../src/util"); -const { setSetting, setting } = require("../util-server"); -const Database = require("../database"); - -const DEFAULT_KEEP_PERIOD = 180; - -/** - * Clears old data from the heartbeat table of the database. - * @returns {Promise} A promise that resolves when the data has been cleared. - */ - -const clearOldData = async () => { - let period = await setting("keepDataPeriodDays"); - - // Set Default Period - if (period == null) { - await setSetting("keepDataPeriodDays", DEFAULT_KEEP_PERIOD, "general"); - period = DEFAULT_KEEP_PERIOD; - } - - // Try parse setting - let parsedPeriod; - try { - parsedPeriod = parseInt(period); - } catch (_) { - log.warn("clearOldData", "Failed to parse setting, resetting to default.."); - await setSetting("keepDataPeriodDays", DEFAULT_KEEP_PERIOD, "general"); - parsedPeriod = DEFAULT_KEEP_PERIOD; - } - - if (parsedPeriod < 1) { - log.info("clearOldData", `Data deletion has been disabled as period is less than 1. Period is ${parsedPeriod} days.`); - } else { - - log.debug("clearOldData", `Clearing Data older than ${parsedPeriod} days...`); - - const sqlHourOffset = Database.sqlHourOffset(); - - try { - await R.exec( - "DELETE FROM heartbeat WHERE time < " + sqlHourOffset, - [ parsedPeriod * -24 ] - ); - - if (Database.dbConfig.type === "sqlite") { - await R.exec("PRAGMA optimize;"); - } - } catch (e) { - log.error("clearOldData", `Failed to clear old data: ${e.message}`); - } - } -}; - -module.exports = { - clearOldData, -}; +const { R } = require("redbean-node"); +const { log } = require("../../src/util"); +const { setSetting, setting } = require("../util-server"); +const Database = require("../database"); + +const DEFAULT_KEEP_PERIOD = 180; + +/** + * Clears old data from the heartbeat table of the database. + * @returns {Promise} A promise that resolves when the data has been cleared. + */ + +const clearOldData = async () => { + let period = await setting("keepDataPeriodDays"); + + // Set Default Period + if (period == null) { + await setSetting("keepDataPeriodDays", DEFAULT_KEEP_PERIOD, "general"); + period = DEFAULT_KEEP_PERIOD; + } + + // Try parse setting + let parsedPeriod; + try { + parsedPeriod = parseInt(period); + } catch (_) { + log.warn("clearOldData", "Failed to parse setting, resetting to default.."); + await setSetting("keepDataPeriodDays", DEFAULT_KEEP_PERIOD, "general"); + parsedPeriod = DEFAULT_KEEP_PERIOD; + } + + if (parsedPeriod < 1) { + log.info("clearOldData", `Data deletion has been disabled as period is less than 1. Period is ${parsedPeriod} days.`); + } else { + + log.debug("clearOldData", `Clearing Data older than ${parsedPeriod} days...`); + + const sqlHourOffset = Database.sqlHourOffset(); + + try { + await R.exec( + "DELETE FROM heartbeat WHERE time < " + sqlHourOffset, + [ parsedPeriod * -24 ] + ); + + if (Database.dbConfig.type === "sqlite") { + await R.exec("PRAGMA optimize;"); + } + } catch (e) { + log.error("clearOldData", `Failed to clear old data: ${e.message}`); + } + } +}; + +module.exports = { + clearOldData, +}; diff --git a/server/model/monitor.js b/server/model/monitor.js index da0c0d5c8..75173473e 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -1,1737 +1,1737 @@ -const dayjs = require("dayjs"); -const axios = require("axios"); -const { Prometheus } = require("../prometheus"); -const { log, UP, DOWN, PENDING, MAINTENANCE, flipStatus, MAX_INTERVAL_SECOND, MIN_INTERVAL_SECOND, - SQL_DATETIME_FORMAT, evaluateJsonQuery -} = require("../../src/util"); -const { tcping, ping, checkCertificate, checkStatusCode, getTotalClientInRoom, setting, mssqlQuery, postgresQuery, mysqlQuery, setSetting, httpNtlm, radius, grpcQuery, - redisPingAsync, kafkaProducerAsync, getOidcTokenClientCredentials, rootCertificatesFingerprints, axiosAbortSignal -} = require("../util-server"); -const { R } = require("redbean-node"); -const { BeanModel } = require("redbean-node/dist/bean-model"); -const { Notification } = require("../notification"); -const { Proxy } = require("../proxy"); -const { demoMode } = require("../config"); -const version = require("../../package.json").version; -const apicache = require("../modules/apicache"); -const { UptimeKumaServer } = require("../uptime-kuma-server"); -const { DockerHost } = require("../docker"); -const Gamedig = require("gamedig"); -const jwt = require("jsonwebtoken"); -const crypto = require("crypto"); -const { UptimeCalculator } = require("../uptime-calculator"); -const { CookieJar } = require("tough-cookie"); -const { HttpsCookieAgent } = require("http-cookie-agent/http"); -const https = require("https"); -const http = require("http"); - -const rootCertificates = rootCertificatesFingerprints(); - -/** - * status: - * 0 = DOWN - * 1 = UP - * 2 = PENDING - * 3 = MAINTENANCE - */ -class Monitor extends BeanModel { - - /** - * Return an object that ready to parse to JSON for public Only show - * necessary data to public - * @param {boolean} showTags Include tags in JSON - * @param {boolean} certExpiry Include certificate expiry info in - * JSON - * @returns {Promise} Object ready to parse - */ - async toPublicJSON(showTags = false, certExpiry = false) { - let obj = { - id: this.id, - name: this.name, - sendUrl: this.sendUrl, - type: this.type, - }; - - if (this.sendUrl) { - obj.url = this.url; - } - - if (showTags) { - obj.tags = await this.getTags(); - } - - if (certExpiry && (this.type === "http" || this.type === "keyword" || this.type === "json-query") && this.getURLProtocol() === "https:") { - const { certExpiryDaysRemaining, validCert } = await this.getCertExpiry(this.id); - obj.certExpiryDaysRemaining = certExpiryDaysRemaining; - obj.validCert = validCert; - } - - return obj; - } - - /** - * Return an object that ready to parse to JSON - * @param {object} preloadData to prevent n+1 problems, we query the data in a batch outside of this function - * @param {boolean} includeSensitiveData Include sensitive data in - * JSON - * @returns {object} Object ready to parse - */ - toJSON(preloadData = {}, includeSensitiveData = true) { - - let screenshot = null; - - if (this.type === "real-browser") { - screenshot = "/screenshots/" + jwt.sign(this.id, UptimeKumaServer.getInstance().jwtSecret) + ".png"; - } - - const path = preloadData.paths.get(this.id) || []; - const pathName = path.join(" / "); - - let data = { - id: this.id, - name: this.name, - description: this.description, - path, - pathName, - parent: this.parent, - childrenIDs: preloadData.childrenIDs.get(this.id) || [], - url: this.url, - method: this.method, - hostname: this.hostname, - port: this.port, - maxretries: this.maxretries, - weight: this.weight, - active: preloadData.activeStatus.get(this.id), - forceInactive: preloadData.forceInactive.get(this.id), - type: this.type, - timeout: this.timeout, - interval: this.interval, - retryInterval: this.retryInterval, - resendInterval: this.resendInterval, - keyword: this.keyword, - invertKeyword: this.isInvertKeyword(), - expiryNotification: this.isEnabledExpiryNotification(), - ignoreTls: this.getIgnoreTls(), - upsideDown: this.isUpsideDown(), - packetSize: this.packetSize, - maxredirects: this.maxredirects, - accepted_statuscodes: this.getAcceptedStatuscodes(), - dns_resolve_type: this.dns_resolve_type, - dns_resolve_server: this.dns_resolve_server, - dns_last_result: this.dns_last_result, - docker_container: this.docker_container, - docker_host: this.docker_host, - proxyId: this.proxy_id, - notificationIDList: preloadData.notifications.get(this.id) || {}, - tags: preloadData.tags.get(this.id) || [], - maintenance: preloadData.maintenanceStatus.get(this.id), - mqttTopic: this.mqttTopic, - mqttSuccessMessage: this.mqttSuccessMessage, - mqttCheckType: this.mqttCheckType, - databaseQuery: this.databaseQuery, - authMethod: this.authMethod, - grpcUrl: this.grpcUrl, - grpcProtobuf: this.grpcProtobuf, - grpcMethod: this.grpcMethod, - grpcServiceName: this.grpcServiceName, - grpcEnableTls: this.getGrpcEnableTls(), - radiusCalledStationId: this.radiusCalledStationId, - radiusCallingStationId: this.radiusCallingStationId, - game: this.game, - gamedigGivenPortOnly: this.getGameDigGivenPortOnly(), - httpBodyEncoding: this.httpBodyEncoding, - jsonPath: this.jsonPath, - expectedValue: this.expectedValue, - kafkaProducerTopic: this.kafkaProducerTopic, - kafkaProducerBrokers: JSON.parse(this.kafkaProducerBrokers), - kafkaProducerSsl: this.getKafkaProducerSsl(), - kafkaProducerAllowAutoTopicCreation: this.getKafkaProducerAllowAutoTopicCreation(), - kafkaProducerMessage: this.kafkaProducerMessage, - screenshot, - cacheBust: this.getCacheBust(), - remote_browser: this.remote_browser, - snmpOid: this.snmpOid, - jsonPathOperator: this.jsonPathOperator, - snmpVersion: this.snmpVersion, - conditions: JSON.parse(this.conditions), - }; - - if (includeSensitiveData) { - data = { - ...data, - headers: this.headers, - body: this.body, - grpcBody: this.grpcBody, - grpcMetadata: this.grpcMetadata, - basic_auth_user: this.basic_auth_user, - basic_auth_pass: this.basic_auth_pass, - oauth_client_id: this.oauth_client_id, - oauth_client_secret: this.oauth_client_secret, - oauth_token_url: this.oauth_token_url, - oauth_scopes: this.oauth_scopes, - oauth_auth_method: this.oauth_auth_method, - pushToken: this.pushToken, - databaseConnectionString: this.databaseConnectionString, - radiusUsername: this.radiusUsername, - radiusPassword: this.radiusPassword, - radiusSecret: this.radiusSecret, - mqttUsername: this.mqttUsername, - mqttPassword: this.mqttPassword, - authWorkstation: this.authWorkstation, - authDomain: this.authDomain, - tlsCa: this.tlsCa, - tlsCert: this.tlsCert, - tlsKey: this.tlsKey, - kafkaProducerSaslOptions: JSON.parse(this.kafkaProducerSaslOptions), - }; - } - - data.includeSensitiveData = includeSensitiveData; - return data; - } - - /** - * Get all tags applied to this monitor - * @returns {Promise[]>} List of tags on the - * monitor - */ - async getTags() { - return await R.getAll("SELECT mt.*, tag.name, tag.color FROM monitor_tag mt JOIN tag ON mt.tag_id = tag.id WHERE mt.monitor_id = ? ORDER BY tag.name", [ this.id ]); - } - - /** - * Gets certificate expiry for this monitor - * @param {number} monitorID ID of monitor to send - * @returns {Promise>} Certificate expiry info for - * monitor - */ - async getCertExpiry(monitorID) { - let tlsInfoBean = await R.findOne("monitor_tls_info", "monitor_id = ?", [ - monitorID, - ]); - let tlsInfo; - if (tlsInfoBean) { - tlsInfo = JSON.parse(tlsInfoBean?.info_json); - if (tlsInfo?.valid && tlsInfo?.certInfo?.daysRemaining) { - return { - certExpiryDaysRemaining: tlsInfo.certInfo.daysRemaining, - validCert: true - }; - } - } - return { - certExpiryDaysRemaining: "", - validCert: false - }; - } - - /** - * Encode user and password to Base64 encoding - * for HTTP "basic" auth, as per RFC-7617 - * @param {string|null} user - The username (nullable if not changed by a user) - * @param {string|null} pass - The password (nullable if not changed by a user) - * @returns {string} Encoded Base64 string - */ - encodeBase64(user, pass) { - return Buffer.from(`${user || ""}:${pass || ""}`).toString("base64"); - } - - /** - * Is the TLS expiry notification enabled? - * @returns {boolean} Enabled? - */ - isEnabledExpiryNotification() { - return Boolean(this.expiryNotification); - } - - /** - * Parse to boolean - * @returns {boolean} Should TLS errors be ignored? - */ - getIgnoreTls() { - return Boolean(this.ignoreTls); - } - - /** - * Parse to boolean - * @returns {boolean} Is the monitor in upside down mode? - */ - isUpsideDown() { - return Boolean(this.upsideDown); - } - - /** - * Parse to boolean - * @returns {boolean} Invert keyword match? - */ - isInvertKeyword() { - return Boolean(this.invertKeyword); - } - - /** - * Parse to boolean - * @returns {boolean} Enable TLS for gRPC? - */ - getGrpcEnableTls() { - return Boolean(this.grpcEnableTls); - } - - /** - * Parse to boolean - * @returns {boolean} if cachebusting is enabled - */ - getCacheBust() { - return Boolean(this.cacheBust); - } - - /** - * Get accepted status codes - * @returns {object} Accepted status codes - */ - getAcceptedStatuscodes() { - return JSON.parse(this.accepted_statuscodes_json); - } - - /** - * Get if game dig should only use the port which was provided - * @returns {boolean} gamedig should only use the provided port - */ - getGameDigGivenPortOnly() { - return Boolean(this.gamedigGivenPortOnly); - } - - /** - * Parse to boolean - * @returns {boolean} Kafka Producer Ssl enabled? - */ - getKafkaProducerSsl() { - return Boolean(this.kafkaProducerSsl); - } - - /** - * Parse to boolean - * @returns {boolean} Kafka Producer Allow Auto Topic Creation Enabled? - */ - getKafkaProducerAllowAutoTopicCreation() { - return Boolean(this.kafkaProducerAllowAutoTopicCreation); - } - - /** - * Start monitor - * @param {Server} io Socket server instance - * @returns {Promise} - */ - async start(io) { - let previousBeat = null; - let retries = 0; - - this.prometheus = new Prometheus(this); - - const beat = async () => { - - let beatInterval = this.interval; - - if (! beatInterval) { - beatInterval = 1; - } - - if (demoMode) { - if (beatInterval < 20) { - console.log("beat interval too low, reset to 20s"); - beatInterval = 20; - } - } - - // Expose here for prometheus update - // undefined if not https - let tlsInfo = undefined; - - if (!previousBeat || this.type === "push") { - previousBeat = await R.findOne("heartbeat", " monitor_id = ? ORDER BY time DESC", [ - this.id, - ]); - if (previousBeat) { - retries = previousBeat.retries; - } - } - - const isFirstBeat = !previousBeat; - - let bean = R.dispense("heartbeat"); - bean.monitor_id = this.id; - bean.time = R.isoDateTimeMillis(dayjs.utc()); - bean.status = DOWN; - bean.downCount = previousBeat?.downCount || 0; - - if (this.isUpsideDown()) { - bean.status = flipStatus(bean.status); - } - - // Runtime patch timeout if it is 0 - // See https://github.com/louislam/uptime-kuma/pull/3961#issuecomment-1804149144 - if (!this.timeout || this.timeout <= 0) { - this.timeout = this.interval * 1000 * 0.8; - } - - try { - if (await Monitor.isUnderMaintenance(this.id)) { - bean.msg = "Monitor under maintenance"; - bean.status = MAINTENANCE; - } else if (this.type === "group") { - const children = await Monitor.getChildren(this.id); - - if (children.length > 0) { - bean.status = UP; - bean.msg = "All children up and running"; - for (const child of children) { - if (!child.active) { - // Ignore inactive childs - continue; - } - const lastBeat = await Monitor.getPreviousHeartbeat(child.id); - - // Only change state if the monitor is in worse conditions then the ones before - // lastBeat.status could be null - if (!lastBeat) { - bean.status = PENDING; - } else if (bean.status === UP && (lastBeat.status === PENDING || lastBeat.status === DOWN)) { - bean.status = lastBeat.status; - } else if (bean.status === PENDING && lastBeat.status === DOWN) { - bean.status = lastBeat.status; - } - } - - if (bean.status !== UP) { - bean.msg = "Child inaccessible"; - } - } else { - // Set status pending if group is empty - bean.status = PENDING; - bean.msg = "Group empty"; - } - - } else if (this.type === "http" || this.type === "keyword" || this.type === "json-query") { - // Do not do any queries/high loading things before the "bean.ping" - let startTime = dayjs().valueOf(); - - // HTTP basic auth - let basicAuthHeader = {}; - if (this.auth_method === "basic") { - basicAuthHeader = { - "Authorization": "Basic " + this.encodeBase64(this.basic_auth_user, this.basic_auth_pass), - }; - } - - // OIDC: Basic client credential flow. - // Additional grants might be implemented in the future - let oauth2AuthHeader = {}; - if (this.auth_method === "oauth2-cc") { - try { - if (this.oauthAccessToken === undefined || new Date(this.oauthAccessToken.expires_at * 1000) <= new Date()) { - this.oauthAccessToken = await this.makeOidcTokenClientCredentialsRequest(); - } - oauth2AuthHeader = { - "Authorization": this.oauthAccessToken.token_type + " " + this.oauthAccessToken.access_token, - }; - } catch (e) { - throw new Error("The oauth config is invalid. " + e.message); - } - } - - const httpsAgentOptions = { - maxCachedSessions: 0, // Use Custom agent to disable session reuse (https://github.com/nodejs/node/issues/3940) - rejectUnauthorized: !this.getIgnoreTls(), - secureOptions: crypto.constants.SSL_OP_LEGACY_SERVER_CONNECT, - }; - - log.debug("monitor", `[${this.name}] Prepare Options for axios`); - - let contentType = null; - let bodyValue = null; - - if (this.body && (typeof this.body === "string" && this.body.trim().length > 0)) { - if (!this.httpBodyEncoding || this.httpBodyEncoding === "json") { - try { - bodyValue = JSON.parse(this.body); - contentType = "application/json"; - } catch (e) { - throw new Error("Your JSON body is invalid. " + e.message); - } - } else if (this.httpBodyEncoding === "form") { - bodyValue = this.body; - contentType = "application/x-www-form-urlencoded"; - } else if (this.httpBodyEncoding === "xml") { - bodyValue = this.body; - contentType = "text/xml; charset=utf-8"; - } - } - - // Axios Options - const options = { - url: this.url, - method: (this.method || "get").toLowerCase(), - timeout: this.timeout * 1000, - headers: { - "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", - ...(contentType ? { "Content-Type": contentType } : {}), - ...(basicAuthHeader), - ...(oauth2AuthHeader), - ...(this.headers ? JSON.parse(this.headers) : {}) - }, - maxRedirects: this.maxredirects, - validateStatus: (status) => { - return checkStatusCode(status, this.getAcceptedStatuscodes()); - }, - signal: axiosAbortSignal((this.timeout + 10) * 1000), - }; - - if (bodyValue) { - options.data = bodyValue; - } - - if (this.cacheBust) { - const randomFloatString = Math.random().toString(36); - const cacheBust = randomFloatString.substring(2); - options.params = { - uptime_kuma_cachebuster: cacheBust, - }; - } - - if (this.proxy_id) { - const proxy = await R.load("proxy", this.proxy_id); - - if (proxy && proxy.active) { - const { httpAgent, httpsAgent } = Proxy.createAgents(proxy, { - httpsAgentOptions: httpsAgentOptions, - }); - - options.proxy = false; - options.httpAgent = httpAgent; - options.httpsAgent = httpsAgent; - } - } - - if (!options.httpsAgent) { - let jar = new CookieJar(); - let httpsCookieAgentOptions = { - ...httpsAgentOptions, - cookies: { jar } - }; - options.httpsAgent = new HttpsCookieAgent(httpsCookieAgentOptions); - } - - if (this.auth_method === "mtls") { - if (this.tlsCert !== null && this.tlsCert !== "") { - options.httpsAgent.options.cert = Buffer.from(this.tlsCert); - } - if (this.tlsCa !== null && this.tlsCa !== "") { - options.httpsAgent.options.ca = Buffer.from(this.tlsCa); - } - if (this.tlsKey !== null && this.tlsKey !== "") { - options.httpsAgent.options.key = Buffer.from(this.tlsKey); - } - } - - let tlsInfo = {}; - // Store tlsInfo when secureConnect event is emitted - // The keylog event listener is a workaround to access the tlsSocket - options.httpsAgent.once("keylog", async (line, tlsSocket) => { - tlsSocket.once("secureConnect", async () => { - tlsInfo = checkCertificate(tlsSocket); - tlsInfo.valid = tlsSocket.authorized || false; - - await this.handleTlsInfo(tlsInfo); - }); - }); - - log.debug("monitor", `[${this.name}] Axios Options: ${JSON.stringify(options)}`); - log.debug("monitor", `[${this.name}] Axios Request`); - - // Make Request - let res = await this.makeAxiosRequest(options); - - bean.msg = `${res.status} - ${res.statusText}`; - bean.ping = dayjs().valueOf() - startTime; - - // fallback for if kelog event is not emitted, but we may still have tlsInfo, - // e.g. if the connection is made through a proxy - if (this.getUrl()?.protocol === "https:" && tlsInfo.valid === undefined) { - const tlsSocket = res.request.res.socket; - - if (tlsSocket) { - tlsInfo = checkCertificate(tlsSocket); - tlsInfo.valid = tlsSocket.authorized || false; - - await this.handleTlsInfo(tlsInfo); - } - } - - if (process.env.UPTIME_KUMA_LOG_RESPONSE_BODY_MONITOR_ID === this.id) { - log.info("monitor", res.data); - } - - if (this.type === "http") { - bean.status = UP; - } else if (this.type === "keyword") { - - let data = res.data; - - // Convert to string for object/array - if (typeof data !== "string") { - data = JSON.stringify(data); - } - - let keywordFound = data.includes(this.keyword); - if (keywordFound === !this.isInvertKeyword()) { - bean.msg += ", keyword " + (keywordFound ? "is" : "not") + " found"; - bean.status = UP; - } else { - data = data.replace(/<[^>]*>?|[\n\r]|\s+/gm, " ").trim(); - if (data.length > 50) { - data = data.substring(0, 47) + "..."; - } - throw new Error(bean.msg + ", but keyword is " + - (keywordFound ? "present" : "not") + " in [" + data + "]"); - } - - } else if (this.type === "json-query") { - let data = res.data; - - const { status, response } = await evaluateJsonQuery(data, this.jsonPath, this.jsonPathOperator, this.expectedValue); - - if (status) { - bean.status = UP; - bean.msg = `JSON query passes (comparing ${response} ${this.jsonPathOperator} ${this.expectedValue})`; - } else { - throw new Error(`JSON query does not pass (comparing ${response} ${this.jsonPathOperator} ${this.expectedValue})`); - } - - } - - } else if (this.type === "port") { - bean.ping = await tcping(this.hostname, this.port); - bean.msg = ""; - bean.status = UP; - - } else if (this.type === "ping") { - bean.ping = await ping(this.hostname, this.packetSize); - bean.msg = ""; - bean.status = UP; - } else if (this.type === "push") { // Type: Push - log.debug("monitor", `[${this.name}] Checking monitor at ${dayjs().format("YYYY-MM-DD HH:mm:ss.SSS")}`); - const bufferTime = 1000; // 1s buffer to accommodate clock differences - - if (previousBeat) { - const msSinceLastBeat = dayjs.utc().valueOf() - dayjs.utc(previousBeat.time).valueOf(); - - log.debug("monitor", `[${this.name}] msSinceLastBeat = ${msSinceLastBeat}`); - - // If the previous beat was down or pending we use the regular - // beatInterval/retryInterval in the setTimeout further below - if (previousBeat.status !== (this.isUpsideDown() ? DOWN : UP) || msSinceLastBeat > beatInterval * 1000 + bufferTime) { - bean.duration = Math.round(msSinceLastBeat / 1000); - throw new Error("No heartbeat in the time window"); - } else { - let timeout = beatInterval * 1000 - msSinceLastBeat; - if (timeout < 0) { - timeout = bufferTime; - } else { - timeout += bufferTime; - } - // No need to insert successful heartbeat for push type, so end here - retries = 0; - log.debug("monitor", `[${this.name}] timeout = ${timeout}`); - this.heartbeatInterval = setTimeout(safeBeat, timeout); - return; - } - } else { - bean.duration = beatInterval; - throw new Error("No heartbeat in the time window"); - } - - } else if (this.type === "steam") { - const steamApiUrl = "https://api.steampowered.com/IGameServersService/GetServerList/v1/"; - const steamAPIKey = await setting("steamAPIKey"); - const filter = `addr\\${this.hostname}:${this.port}`; - - if (!steamAPIKey) { - throw new Error("Steam API Key not found"); - } - - let res = await axios.get(steamApiUrl, { - timeout: this.timeout * 1000, - headers: { - "Accept": "*/*", - }, - httpsAgent: new https.Agent({ - maxCachedSessions: 0, // Use Custom agent to disable session reuse (https://github.com/nodejs/node/issues/3940) - rejectUnauthorized: !this.getIgnoreTls(), - secureOptions: crypto.constants.SSL_OP_LEGACY_SERVER_CONNECT, - }), - httpAgent: new http.Agent({ - maxCachedSessions: 0, - }), - maxRedirects: this.maxredirects, - validateStatus: (status) => { - return checkStatusCode(status, this.getAcceptedStatuscodes()); - }, - params: { - filter: filter, - key: steamAPIKey, - } - }); - - if (res.data.response && res.data.response.servers && res.data.response.servers.length > 0) { - bean.status = UP; - bean.msg = res.data.response.servers[0].name; - - try { - bean.ping = await ping(this.hostname, this.packetSize); - } catch (_) { } - } else { - throw new Error("Server not found on Steam"); - } - } else if (this.type === "gamedig") { - try { - const state = await Gamedig.query({ - type: this.game, - host: this.hostname, - port: this.port, - givenPortOnly: this.getGameDigGivenPortOnly(), - }); - - bean.msg = state.name; - bean.status = UP; - bean.ping = state.ping; - } catch (e) { - throw new Error(e.message); - } - } else if (this.type === "docker") { - log.debug("monitor", `[${this.name}] Prepare Options for Axios`); - - const options = { - url: `/containers/${this.docker_container}/json`, - timeout: this.interval * 1000 * 0.8, - headers: { - "Accept": "*/*", - }, - httpsAgent: new https.Agent({ - maxCachedSessions: 0, // Use Custom agent to disable session reuse (https://github.com/nodejs/node/issues/3940) - rejectUnauthorized: !this.getIgnoreTls(), - secureOptions: crypto.constants.SSL_OP_LEGACY_SERVER_CONNECT, - }), - httpAgent: new http.Agent({ - maxCachedSessions: 0, - }), - }; - - const dockerHost = await R.load("docker_host", this.docker_host); - - if (!dockerHost) { - throw new Error("Failed to load docker host config"); - } - - if (dockerHost._dockerType === "socket") { - options.socketPath = dockerHost._dockerDaemon; - } else if (dockerHost._dockerType === "tcp") { - options.baseURL = DockerHost.patchDockerURL(dockerHost._dockerDaemon); - options.httpsAgent = new https.Agent( - DockerHost.getHttpsAgentOptions(dockerHost._dockerType, options.baseURL) - ); - } - - log.debug("monitor", `[${this.name}] Axios Request`); - let res = await axios.request(options); - - if (res.data.State.Running) { - if (res.data.State.Health && res.data.State.Health.Status !== "healthy") { - bean.status = PENDING; - bean.msg = res.data.State.Health.Status; - } else { - bean.status = UP; - bean.msg = res.data.State.Health ? res.data.State.Health.Status : res.data.State.Status; - } - } else { - throw Error("Container State is " + res.data.State.Status); - } - } else if (this.type === "sqlserver") { - let startTime = dayjs().valueOf(); - - await mssqlQuery(this.databaseConnectionString, this.databaseQuery || "SELECT 1"); - - bean.msg = ""; - bean.status = UP; - bean.ping = dayjs().valueOf() - startTime; - } else if (this.type === "grpc-keyword") { - let startTime = dayjs().valueOf(); - const options = { - grpcUrl: this.grpcUrl, - grpcProtobufData: this.grpcProtobuf, - grpcServiceName: this.grpcServiceName, - grpcEnableTls: this.grpcEnableTls, - grpcMethod: this.grpcMethod, - grpcBody: this.grpcBody, - }; - const response = await grpcQuery(options); - bean.ping = dayjs().valueOf() - startTime; - log.debug("monitor:", `gRPC response: ${JSON.stringify(response)}`); - let responseData = response.data; - if (responseData.length > 50) { - responseData = responseData.toString().substring(0, 47) + "..."; - } - if (response.code !== 1) { - bean.status = DOWN; - bean.msg = `Error in send gRPC ${response.code} ${response.errorMessage}`; - } else { - let keywordFound = response.data.toString().includes(this.keyword); - if (keywordFound === !this.isInvertKeyword()) { - bean.status = UP; - bean.msg = `${responseData}, keyword [${this.keyword}] ${keywordFound ? "is" : "not"} found`; - } else { - log.debug("monitor:", `GRPC response [${response.data}] + ", but keyword [${this.keyword}] is ${keywordFound ? "present" : "not"} in [" + ${response.data} + "]"`); - bean.status = DOWN; - bean.msg = `, but keyword [${this.keyword}] is ${keywordFound ? "present" : "not"} in [" + ${responseData} + "]`; - } - } - } else if (this.type === "postgres") { - let startTime = dayjs().valueOf(); - - await postgresQuery(this.databaseConnectionString, this.databaseQuery || "SELECT 1"); - - bean.msg = ""; - bean.status = UP; - bean.ping = dayjs().valueOf() - startTime; - } else if (this.type === "mysql") { - let startTime = dayjs().valueOf(); - - // Use `radius_password` as `password` field, since there are too many unnecessary fields - // TODO: rename `radius_password` to `password` later for general use - let mysqlPassword = this.radiusPassword; - - bean.msg = await mysqlQuery(this.databaseConnectionString, this.databaseQuery || "SELECT 1", mysqlPassword); - bean.status = UP; - bean.ping = dayjs().valueOf() - startTime; - } else if (this.type === "radius") { - let startTime = dayjs().valueOf(); - - // Handle monitors that were created before the - // update and as such don't have a value for - // this.port. - let port; - if (this.port == null) { - port = 1812; - } else { - port = this.port; - } - - const resp = await radius( - this.hostname, - this.radiusUsername, - this.radiusPassword, - this.radiusCalledStationId, - this.radiusCallingStationId, - this.radiusSecret, - port, - this.interval * 1000 * 0.4, - ); - - bean.msg = resp.code; - bean.status = UP; - bean.ping = dayjs().valueOf() - startTime; - } else if (this.type === "redis") { - let startTime = dayjs().valueOf(); - - bean.msg = await redisPingAsync(this.databaseConnectionString, !this.ignoreTls); - bean.status = UP; - bean.ping = dayjs().valueOf() - startTime; - - } else if (this.type in UptimeKumaServer.monitorTypeList) { - let startTime = dayjs().valueOf(); - const monitorType = UptimeKumaServer.monitorTypeList[this.type]; - await monitorType.check(this, bean, UptimeKumaServer.getInstance()); - if (!bean.ping) { - bean.ping = dayjs().valueOf() - startTime; - } - - } else if (this.type === "kafka-producer") { - let startTime = dayjs().valueOf(); - - bean.msg = await kafkaProducerAsync( - JSON.parse(this.kafkaProducerBrokers), - this.kafkaProducerTopic, - this.kafkaProducerMessage, - { - allowAutoTopicCreation: this.kafkaProducerAllowAutoTopicCreation, - ssl: this.kafkaProducerSsl, - clientId: `Uptime-Kuma/${version}`, - interval: this.interval, - }, - JSON.parse(this.kafkaProducerSaslOptions), - ); - bean.status = UP; - bean.ping = dayjs().valueOf() - startTime; - - } else { - throw new Error("Unknown Monitor Type"); - } - - if (this.isUpsideDown()) { - bean.status = flipStatus(bean.status); - - if (bean.status === DOWN) { - throw new Error("Flip UP to DOWN"); - } - } - - retries = 0; - - } catch (error) { - - if (error?.name === "CanceledError") { - bean.msg = `timeout by AbortSignal (${this.timeout}s)`; - } else { - bean.msg = error.message; - } - - // If UP come in here, it must be upside down mode - // Just reset the retries - if (this.isUpsideDown() && bean.status === UP) { - retries = 0; - - } else if ((this.maxretries > 0) && (retries < this.maxretries)) { - retries++; - bean.status = PENDING; - } else { - // Continue counting retries during DOWN - retries++; - } - } - - bean.retries = retries; - - log.debug("monitor", `[${this.name}] Check isImportant`); - let isImportant = Monitor.isImportantBeat(isFirstBeat, previousBeat?.status, bean.status); - - // Mark as important if status changed, ignore pending pings, - // Don't notify if disrupted changes to up - if (isImportant) { - bean.important = true; - - if (Monitor.isImportantForNotification(isFirstBeat, previousBeat?.status, bean.status)) { - log.debug("monitor", `[${this.name}] sendNotification`); - await Monitor.sendNotification(isFirstBeat, this, bean); - } else { - log.debug("monitor", `[${this.name}] will not sendNotification because it is (or was) under maintenance`); - } - - // Reset down count - bean.downCount = 0; - - // Clear Status Page Cache - log.debug("monitor", `[${this.name}] apicache clear`); - apicache.clear(); - - await UptimeKumaServer.getInstance().sendMaintenanceListByUserID(this.user_id); - - } else { - bean.important = false; - - if (bean.status === DOWN && this.resendInterval > 0) { - ++bean.downCount; - if (bean.downCount >= this.resendInterval) { - // Send notification again, because we are still DOWN - log.debug("monitor", `[${this.name}] sendNotification again: Down Count: ${bean.downCount} | Resend Interval: ${this.resendInterval}`); - await Monitor.sendNotification(isFirstBeat, this, bean); - - // Reset down count - bean.downCount = 0; - } - } - } - - if (bean.status === UP) { - log.debug("monitor", `Monitor #${this.id} '${this.name}': Successful Response: ${bean.ping} ms | Interval: ${beatInterval} seconds | Type: ${this.type}`); - } else if (bean.status === PENDING) { - if (this.retryInterval > 0) { - beatInterval = this.retryInterval; - } - log.warn("monitor", `Monitor #${this.id} '${this.name}': Pending: ${bean.msg} | Max retries: ${this.maxretries} | Retry: ${retries} | Retry Interval: ${beatInterval} seconds | Type: ${this.type}`); - } else if (bean.status === MAINTENANCE) { - log.warn("monitor", `Monitor #${this.id} '${this.name}': Under Maintenance | Type: ${this.type}`); - } else { - log.warn("monitor", `Monitor #${this.id} '${this.name}': Failing: ${bean.msg} | Interval: ${beatInterval} seconds | Type: ${this.type} | Down Count: ${bean.downCount} | Resend Interval: ${this.resendInterval}`); - } - - // Calculate uptime - let uptimeCalculator = await UptimeCalculator.getUptimeCalculator(this.id); - let endTimeDayjs = await uptimeCalculator.update(bean.status, parseFloat(bean.ping)); - bean.end_time = R.isoDateTimeMillis(endTimeDayjs); - - // Send to frontend - log.debug("monitor", `[${this.name}] Send to socket`); - io.to(this.user_id).emit("heartbeat", bean.toJSON()); - Monitor.sendStats(io, this.id, this.user_id); - - // Store to database - log.debug("monitor", `[${this.name}] Store`); - await R.store(bean); - - log.debug("monitor", `[${this.name}] prometheus.update`); - this.prometheus?.update(bean, tlsInfo); - - previousBeat = bean; - - if (! this.isStop) { - log.debug("monitor", `[${this.name}] SetTimeout for next check.`); - - let intervalRemainingMs = Math.max( - 1, - beatInterval * 1000 - dayjs().diff(dayjs.utc(bean.time)) - ); - - log.debug("monitor", `[${this.name}] Next heartbeat in: ${intervalRemainingMs}ms`); - - this.heartbeatInterval = setTimeout(safeBeat, intervalRemainingMs); - } else { - log.info("monitor", `[${this.name}] isStop = true, no next check.`); - } - - }; - - /** - * Get a heartbeat and handle errors7 - * @returns {void} - */ - const safeBeat = async () => { - try { - await beat(); - } catch (e) { - console.trace(e); - UptimeKumaServer.errorLog(e, false); - log.error("monitor", "Please report to https://github.com/louislam/uptime-kuma/issues"); - - if (! this.isStop) { - log.info("monitor", "Try to restart the monitor"); - this.heartbeatInterval = setTimeout(safeBeat, this.interval * 1000); - } - } - }; - - // Delay Push Type - if (this.type === "push") { - setTimeout(() => { - safeBeat(); - }, this.interval * 1000); - } else { - safeBeat(); - } - } - - /** - * Make a request using axios - * @param {object} options Options for Axios - * @param {boolean} finalCall Should this be the final call i.e - * don't retry on failure - * @returns {object} Axios response - */ - async makeAxiosRequest(options, finalCall = false) { - try { - let res; - if (this.auth_method === "ntlm") { - options.httpsAgent.keepAlive = true; - - res = await httpNtlm(options, { - username: this.basic_auth_user, - password: this.basic_auth_pass, - domain: this.authDomain, - workstation: this.authWorkstation ? this.authWorkstation : undefined - }); - } else { - res = await axios.request(options); - } - - return res; - } catch (error) { - - /** - * Make a single attempt to obtain an new access token in the event that - * the recent api request failed for authentication purposes - */ - if (this.auth_method === "oauth2-cc" && error.response.status === 401 && !finalCall) { - this.oauthAccessToken = await this.makeOidcTokenClientCredentialsRequest(); - let oauth2AuthHeader = { - "Authorization": this.oauthAccessToken.token_type + " " + this.oauthAccessToken.access_token, - }; - options.headers = { ...(options.headers), - ...(oauth2AuthHeader) - }; - - return this.makeAxiosRequest(options, true); - } - - // Fix #2253 - // Read more: https://stackoverflow.com/questions/1759956/curl-error-18-transfer-closed-with-outstanding-read-data-remaining - if (!finalCall && typeof error.message === "string" && error.message.includes("maxContentLength size of -1 exceeded")) { - log.debug("monitor", "makeAxiosRequest with gzip"); - options.headers["Accept-Encoding"] = "gzip, deflate"; - return this.makeAxiosRequest(options, true); - } else { - if (typeof error.message === "string" && error.message.includes("maxContentLength size of -1 exceeded")) { - error.message = "response timeout: incomplete response within a interval"; - } - throw error; - } - } - } - - /** - * Stop monitor - * @returns {Promise} - */ - async stop() { - clearTimeout(this.heartbeatInterval); - this.isStop = true; - - this.prometheus?.remove(); - } - - /** - * Get prometheus instance - * @returns {Prometheus|undefined} Current prometheus instance - */ - getPrometheus() { - return this.prometheus; - } - - /** - * Helper Method: - * returns URL object for further usage - * returns null if url is invalid - * @returns {(null|URL)} Monitor URL - */ - getUrl() { - try { - return new URL(this.url); - } catch (_) { - return null; - } - } - - /** - * Example: http: or https: - * @returns {(null|string)} URL's protocol - */ - getURLProtocol() { - const url = this.getUrl(); - if (url) { - return this.getUrl().protocol; - } else { - return null; - } - } - - /** - * Store TLS info to database - * @param {object} checkCertificateResult Certificate to update - * @returns {Promise} Updated certificate - */ - async updateTlsInfo(checkCertificateResult) { - let tlsInfoBean = await R.findOne("monitor_tls_info", "monitor_id = ?", [ - this.id, - ]); - - if (tlsInfoBean == null) { - tlsInfoBean = R.dispense("monitor_tls_info"); - tlsInfoBean.monitor_id = this.id; - } else { - - // Clear sent history if the cert changed. - try { - let oldCertInfo = JSON.parse(tlsInfoBean.info_json); - - let isValidObjects = oldCertInfo && oldCertInfo.certInfo && checkCertificateResult && checkCertificateResult.certInfo; - - if (isValidObjects) { - if (oldCertInfo.certInfo.fingerprint256 !== checkCertificateResult.certInfo.fingerprint256) { - log.debug("monitor", "Resetting sent_history"); - await R.exec("DELETE FROM notification_sent_history WHERE type = 'certificate' AND monitor_id = ?", [ - this.id - ]); - } else { - log.debug("monitor", "No need to reset sent_history"); - log.debug("monitor", oldCertInfo.certInfo.fingerprint256); - log.debug("monitor", checkCertificateResult.certInfo.fingerprint256); - } - } else { - log.debug("monitor", "Not valid object"); - } - } catch (e) { } - - } - - tlsInfoBean.info_json = JSON.stringify(checkCertificateResult); - await R.store(tlsInfoBean); - - return checkCertificateResult; - } - - /** - * Checks if the monitor is active based on itself and its parents - * @param {number} monitorID ID of monitor to send - * @param {boolean} active is active - * @returns {Promise} Is the monitor active? - */ - static async isActive(monitorID, active) { - const parentActive = await Monitor.isParentActive(monitorID); - - return (active === 1) && parentActive; - } - - /** - * Send statistics to clients - * @param {Server} io Socket server instance - * @param {number} monitorID ID of monitor to send - * @param {number} userID ID of user to send to - * @returns {void} - */ - static async sendStats(io, monitorID, userID) { - const hasClients = getTotalClientInRoom(io, userID) > 0; - let uptimeCalculator = await UptimeCalculator.getUptimeCalculator(monitorID); - - if (hasClients) { - // Send 24 hour average ping - let data24h = await uptimeCalculator.get24Hour(); - io.to(userID).emit("avgPing", monitorID, (data24h.avgPing) ? Number(data24h.avgPing.toFixed(2)) : null); - - // Send 24 hour uptime - io.to(userID).emit("uptime", monitorID, 24, data24h.uptime); - - // Send 30 day uptime - let data30d = await uptimeCalculator.get30Day(); - io.to(userID).emit("uptime", monitorID, 720, data30d.uptime); - - // Send 1-year uptime - let data1y = await uptimeCalculator.get1Year(); - io.to(userID).emit("uptime", monitorID, "1y", data1y.uptime); - - // Send Cert Info - await Monitor.sendCertInfo(io, monitorID, userID); - } else { - log.debug("monitor", "No clients in the room, no need to send stats"); - } - } - - /** - * Send certificate information to client - * @param {Server} io Socket server instance - * @param {number} monitorID ID of monitor to send - * @param {number} userID ID of user to send to - * @returns {void} - */ - static async sendCertInfo(io, monitorID, userID) { - let tlsInfo = await R.findOne("monitor_tls_info", "monitor_id = ?", [ - monitorID, - ]); - if (tlsInfo != null) { - io.to(userID).emit("certInfo", monitorID, tlsInfo.info_json); - } - } - - /** - * Has status of monitor changed since last beat? - * @param {boolean} isFirstBeat Is this the first beat of this monitor? - * @param {const} previousBeatStatus Status of the previous beat - * @param {const} currentBeatStatus Status of the current beat - * @returns {boolean} True if is an important beat else false - */ - static isImportantBeat(isFirstBeat, previousBeatStatus, currentBeatStatus) { - // * ? -> ANY STATUS = important [isFirstBeat] - // UP -> PENDING = not important - // * UP -> DOWN = important - // UP -> UP = not important - // PENDING -> PENDING = not important - // * PENDING -> DOWN = important - // PENDING -> UP = not important - // DOWN -> PENDING = this case not exists - // DOWN -> DOWN = not important - // * DOWN -> UP = important - // MAINTENANCE -> MAINTENANCE = not important - // * MAINTENANCE -> UP = important - // * MAINTENANCE -> DOWN = important - // * DOWN -> MAINTENANCE = important - // * UP -> MAINTENANCE = important - return isFirstBeat || - (previousBeatStatus === DOWN && currentBeatStatus === MAINTENANCE) || - (previousBeatStatus === UP && currentBeatStatus === MAINTENANCE) || - (previousBeatStatus === MAINTENANCE && currentBeatStatus === DOWN) || - (previousBeatStatus === MAINTENANCE && currentBeatStatus === UP) || - (previousBeatStatus === UP && currentBeatStatus === DOWN) || - (previousBeatStatus === DOWN && currentBeatStatus === UP) || - (previousBeatStatus === PENDING && currentBeatStatus === DOWN); - } - - /** - * Is this beat important for notifications? - * @param {boolean} isFirstBeat Is this the first beat of this monitor? - * @param {const} previousBeatStatus Status of the previous beat - * @param {const} currentBeatStatus Status of the current beat - * @returns {boolean} True if is an important beat else false - */ - static isImportantForNotification(isFirstBeat, previousBeatStatus, currentBeatStatus) { - // * ? -> ANY STATUS = important [isFirstBeat] - // UP -> PENDING = not important - // * UP -> DOWN = important - // UP -> UP = not important - // PENDING -> PENDING = not important - // * PENDING -> DOWN = important - // PENDING -> UP = not important - // DOWN -> PENDING = this case not exists - // DOWN -> DOWN = not important - // * DOWN -> UP = important - // MAINTENANCE -> MAINTENANCE = not important - // MAINTENANCE -> UP = not important - // * MAINTENANCE -> DOWN = important - // DOWN -> MAINTENANCE = not important - // UP -> MAINTENANCE = not important - return isFirstBeat || - (previousBeatStatus === MAINTENANCE && currentBeatStatus === DOWN) || - (previousBeatStatus === UP && currentBeatStatus === DOWN) || - (previousBeatStatus === DOWN && currentBeatStatus === UP) || - (previousBeatStatus === PENDING && currentBeatStatus === DOWN); - } - - /** - * Send a notification about a monitor - * @param {boolean} isFirstBeat Is this beat the first of this monitor? - * @param {Monitor} monitor The monitor to send a notificaton about - * @param {Bean} bean Status information about monitor - * @returns {void} - */ - static async sendNotification(isFirstBeat, monitor, bean) { - if (!isFirstBeat || bean.status === DOWN) { - const notificationList = await Monitor.getNotificationList(monitor); - - let text; - if (bean.status === UP) { - text = "✅ Up"; - } else { - text = "🔴 Down"; - } - - let msg = `[${monitor.name}] [${text}] ${bean.msg}`; - - for (let notification of notificationList) { - try { - const heartbeatJSON = bean.toJSON(); - const monitorData = [{ id: monitor.id, - active: monitor.active - }]; - const preloadData = await Monitor.preparePreloadData(monitorData); - // Prevent if the msg is undefined, notifications such as Discord cannot send out. - if (!heartbeatJSON["msg"]) { - heartbeatJSON["msg"] = "N/A"; - } - - // Also provide the time in server timezone - heartbeatJSON["timezone"] = await UptimeKumaServer.getInstance().getTimezone(); - heartbeatJSON["timezoneOffset"] = UptimeKumaServer.getInstance().getTimezoneOffset(); - heartbeatJSON["localDateTime"] = dayjs.utc(heartbeatJSON["time"]).tz(heartbeatJSON["timezone"]).format(SQL_DATETIME_FORMAT); - - await Notification.send(JSON.parse(notification.config), msg, monitor.toJSON(preloadData, false), heartbeatJSON); - } catch (e) { - log.error("monitor", "Cannot send notification to " + notification.name); - log.error("monitor", e); - } - } - } - } - - /** - * Get list of notification providers for a given monitor - * @param {Monitor} monitor Monitor to get notification providers for - * @returns {Promise[]>} List of notifications - */ - static async getNotificationList(monitor) { - let notificationList = await R.getAll("SELECT notification.* FROM notification, monitor_notification WHERE monitor_id = ? AND monitor_notification.notification_id = notification.id ", [ - monitor.id, - ]); - return notificationList; - } - - /** - * checks certificate chain for expiring certificates - * @param {object} tlsInfoObject Information about certificate - * @returns {void} - */ - async checkCertExpiryNotifications(tlsInfoObject) { - if (tlsInfoObject && tlsInfoObject.certInfo && tlsInfoObject.certInfo.daysRemaining) { - const notificationList = await Monitor.getNotificationList(this); - - if (! notificationList.length > 0) { - // fail fast. If no notification is set, all the following checks can be skipped. - log.debug("monitor", "No notification, no need to send cert notification"); - return; - } - - let notifyDays = await setting("tlsExpiryNotifyDays"); - if (notifyDays == null || !Array.isArray(notifyDays)) { - // Reset Default - await setSetting("tlsExpiryNotifyDays", [ 7, 14, 21 ], "general"); - notifyDays = [ 7, 14, 21 ]; - } - - if (Array.isArray(notifyDays)) { - for (const targetDays of notifyDays) { - let certInfo = tlsInfoObject.certInfo; - while (certInfo) { - let subjectCN = certInfo.subject["CN"]; - if (rootCertificates.has(certInfo.fingerprint256)) { - log.debug("monitor", `Known root cert: ${certInfo.certType} certificate "${subjectCN}" (${certInfo.daysRemaining} days valid) on ${targetDays} deadline.`); - break; - } else if (certInfo.daysRemaining > targetDays) { - log.debug("monitor", `No need to send cert notification for ${certInfo.certType} certificate "${subjectCN}" (${certInfo.daysRemaining} days valid) on ${targetDays} deadline.`); - } else { - log.debug("monitor", `call sendCertNotificationByTargetDays for ${targetDays} deadline on certificate ${subjectCN}.`); - await this.sendCertNotificationByTargetDays(subjectCN, certInfo.certType, certInfo.daysRemaining, targetDays, notificationList); - } - certInfo = certInfo.issuerCertificate; - } - } - } - } - } - - /** - * Send a certificate notification when certificate expires in less - * than target days - * @param {string} certCN Common Name attribute from the certificate subject - * @param {string} certType certificate type - * @param {number} daysRemaining Number of days remaining on certificate - * @param {number} targetDays Number of days to alert after - * @param {LooseObject[]} notificationList List of notification providers - * @returns {Promise} - */ - async sendCertNotificationByTargetDays(certCN, certType, daysRemaining, targetDays, notificationList) { - - let row = await R.getRow("SELECT * FROM notification_sent_history WHERE type = ? AND monitor_id = ? AND days <= ?", [ - "certificate", - this.id, - targetDays, - ]); - - // Sent already, no need to send again - if (row) { - log.debug("monitor", "Sent already, no need to send again"); - return; - } - - let sent = false; - log.debug("monitor", "Send certificate notification"); - - for (let notification of notificationList) { - try { - log.debug("monitor", "Sending to " + notification.name); - await Notification.send(JSON.parse(notification.config), `[${this.name}][${this.url}] ${certType} certificate ${certCN} will be expired in ${daysRemaining} days`); - sent = true; - } catch (e) { - log.error("monitor", "Cannot send cert notification to " + notification.name); - log.error("monitor", e); - } - } - - if (sent) { - await R.exec("INSERT INTO notification_sent_history (type, monitor_id, days) VALUES(?, ?, ?)", [ - "certificate", - this.id, - targetDays, - ]); - } - } - - /** - * Get the status of the previous heartbeat - * @param {number} monitorID ID of monitor to check - * @returns {Promise>} Previous heartbeat - */ - static async getPreviousHeartbeat(monitorID) { - return await R.findOne("heartbeat", " id = (select MAX(id) from heartbeat where monitor_id = ?)", [ - monitorID - ]); - } - - /** - * Check if monitor is under maintenance - * @param {number} monitorID ID of monitor to check - * @returns {Promise} Is the monitor under maintenance - */ - static async isUnderMaintenance(monitorID) { - const maintenanceIDList = await R.getCol(` - SELECT maintenance_id FROM monitor_maintenance - WHERE monitor_id = ? - `, [ monitorID ]); - - for (const maintenanceID of maintenanceIDList) { - const maintenance = await UptimeKumaServer.getInstance().getMaintenance(maintenanceID); - if (maintenance && await maintenance.isUnderMaintenance()) { - return true; - } - } - - const parent = await Monitor.getParent(monitorID); - if (parent != null) { - return await Monitor.isUnderMaintenance(parent.id); - } - - return false; - } - - /** - * Make sure monitor interval is between bounds - * @returns {void} - * @throws Interval is outside of range - */ - validate() { - if (this.interval > MAX_INTERVAL_SECOND) { - throw new Error(`Interval cannot be more than ${MAX_INTERVAL_SECOND} seconds`); - } - if (this.interval < MIN_INTERVAL_SECOND) { - throw new Error(`Interval cannot be less than ${MIN_INTERVAL_SECOND} seconds`); - } - } - - /** - * Gets monitor notification of multiple monitor - * @param {Array} monitorIDs IDs of monitor to get - * @returns {Promise>} object - */ - static async getMonitorNotification(monitorIDs) { - return await R.getAll(` - SELECT monitor_notification.monitor_id, monitor_notification.notification_id - FROM monitor_notification - WHERE monitor_notification.monitor_id IN (${monitorIDs.map((_) => "?").join(",")}) - `, monitorIDs); - } - - /** - * Gets monitor tags of multiple monitor - * @param {Array} monitorIDs IDs of monitor to get - * @returns {Promise>} object - */ - static async getMonitorTag(monitorIDs) { - return await R.getAll(` - SELECT monitor_tag.monitor_id, monitor_tag.tag_id, tag.name, tag.color - FROM monitor_tag - JOIN tag ON monitor_tag.tag_id = tag.id - WHERE monitor_tag.monitor_id IN (${monitorIDs.map((_) => "?").join(",")}) - `, monitorIDs); - } - - /** - * prepare preloaded data for efficient access - * @param {Array} monitorData IDs & active field of monitor to get - * @returns {Promise>} object - */ - static async preparePreloadData(monitorData) { - - const notificationsMap = new Map(); - const tagsMap = new Map(); - const maintenanceStatusMap = new Map(); - const childrenIDsMap = new Map(); - const activeStatusMap = new Map(); - const forceInactiveMap = new Map(); - const pathsMap = new Map(); - - if (monitorData.length > 0) { - const monitorIDs = monitorData.map(monitor => monitor.id); - const notifications = await Monitor.getMonitorNotification(monitorIDs); - const tags = await Monitor.getMonitorTag(monitorIDs); - const maintenanceStatuses = await Promise.all(monitorData.map(monitor => Monitor.isUnderMaintenance(monitor.id))); - const childrenIDs = await Promise.all(monitorData.map(monitor => Monitor.getAllChildrenIDs(monitor.id))); - const activeStatuses = await Promise.all(monitorData.map(monitor => Monitor.isActive(monitor.id, monitor.active))); - const forceInactiveStatuses = await Promise.all(monitorData.map(monitor => Monitor.isParentActive(monitor.id))); - const paths = await Promise.all(monitorData.map(monitor => Monitor.getAllPath(monitor.id, monitor.name))); - - notifications.forEach(row => { - if (!notificationsMap.has(row.monitor_id)) { - notificationsMap.set(row.monitor_id, {}); - } - notificationsMap.get(row.monitor_id)[row.notification_id] = true; - }); - - tags.forEach(row => { - if (!tagsMap.has(row.monitor_id)) { - tagsMap.set(row.monitor_id, []); - } - tagsMap.get(row.monitor_id).push({ - tag_id: row.tag_id, - name: row.name, - color: row.color - }); - }); - - monitorData.forEach((monitor, index) => { - maintenanceStatusMap.set(monitor.id, maintenanceStatuses[index]); - }); - - monitorData.forEach((monitor, index) => { - childrenIDsMap.set(monitor.id, childrenIDs[index]); - }); - - monitorData.forEach((monitor, index) => { - activeStatusMap.set(monitor.id, activeStatuses[index]); - }); - - monitorData.forEach((monitor, index) => { - forceInactiveMap.set(monitor.id, !forceInactiveStatuses[index]); - }); - - monitorData.forEach((monitor, index) => { - pathsMap.set(monitor.id, paths[index]); - }); - } - - return { - notifications: notificationsMap, - tags: tagsMap, - maintenanceStatus: maintenanceStatusMap, - childrenIDs: childrenIDsMap, - activeStatus: activeStatusMap, - forceInactive: forceInactiveMap, - paths: pathsMap, - }; - } - - /** - * Gets Parent of the monitor - * @param {number} monitorID ID of monitor to get - * @returns {Promise>} Parent - */ - static async getParent(monitorID) { - return await R.getRow(` - SELECT parent.* FROM monitor parent - LEFT JOIN monitor child - ON child.parent = parent.id - WHERE child.id = ? - `, [ - monitorID, - ]); - } - - /** - * Gets all Children of the monitor - * @param {number} monitorID ID of monitor to get - * @returns {Promise>} Children - */ - static async getChildren(monitorID) { - return await R.getAll(` - SELECT * FROM monitor - WHERE parent = ? - `, [ - monitorID, - ]); - } - - /** - * Gets the full path - * @param {number} monitorID ID of the monitor to get - * @param {string} name of the monitor to get - * @returns {Promise} Full path (includes groups and the name) of the monitor - */ - static async getAllPath(monitorID, name) { - const path = [ name ]; - - if (this.parent === null) { - return path; - } - - let parent = await Monitor.getParent(monitorID); - while (parent !== null) { - path.unshift(parent.name); - parent = await Monitor.getParent(parent.id); - } - - return path; - } - - /** - * Gets recursive all child ids - * @param {number} monitorID ID of the monitor to get - * @returns {Promise} IDs of all children - */ - static async getAllChildrenIDs(monitorID) { - const childs = await Monitor.getChildren(monitorID); - - if (childs === null) { - return []; - } - - let childrenIDs = []; - - for (const child of childs) { - childrenIDs.push(child.id); - childrenIDs = childrenIDs.concat(await Monitor.getAllChildrenIDs(child.id)); - } - - return childrenIDs; - } - - /** - * Unlinks all children of the group monitor - * @param {number} groupID ID of group to remove children of - * @returns {Promise} - */ - static async unlinkAllChildren(groupID) { - return await R.exec("UPDATE `monitor` SET parent = ? WHERE parent = ? ", [ - null, groupID - ]); - } - - /** - * Checks recursive if parent (ancestors) are active - * @param {number} monitorID ID of the monitor to get - * @returns {Promise} Is the parent monitor active? - */ - static async isParentActive(monitorID) { - const parent = await Monitor.getParent(monitorID); - - if (parent === null) { - return true; - } - - const parentActive = await Monitor.isParentActive(parent.id); - return parent.active && parentActive; - } - - /** - * Obtains a new Oidc Token - * @returns {Promise} OAuthProvider client - */ - async makeOidcTokenClientCredentialsRequest() { - log.debug("monitor", `[${this.name}] The oauth access-token undefined or expired. Requesting a new token`); - const oAuthAccessToken = await getOidcTokenClientCredentials(this.oauth_token_url, this.oauth_client_id, this.oauth_client_secret, this.oauth_scopes, this.oauth_auth_method); - if (this.oauthAccessToken?.expires_at) { - log.debug("monitor", `[${this.name}] Obtained oauth access-token. Expires at ${new Date(this.oauthAccessToken?.expires_at * 1000)}`); - } else { - log.debug("monitor", `[${this.name}] Obtained oauth access-token. Time until expiry was not provided`); - } - - return oAuthAccessToken; - } - - /** - * Store TLS certificate information and check for expiry - * @param {object} tlsInfo Information about the TLS connection - * @returns {Promise} - */ - async handleTlsInfo(tlsInfo) { - await this.updateTlsInfo(tlsInfo); - this.prometheus?.update(null, tlsInfo); - - if (!this.getIgnoreTls() && this.isEnabledExpiryNotification()) { - log.debug("monitor", `[${this.name}] call checkCertExpiryNotifications`); - await this.checkCertExpiryNotifications(tlsInfo); - } - } -} - -module.exports = Monitor; +const dayjs = require("dayjs"); +const axios = require("axios"); +const { Prometheus } = require("../prometheus"); +const { log, UP, DOWN, PENDING, MAINTENANCE, flipStatus, MAX_INTERVAL_SECOND, MIN_INTERVAL_SECOND, + SQL_DATETIME_FORMAT, evaluateJsonQuery +} = require("../../src/util"); +const { tcping, ping, checkCertificate, checkStatusCode, getTotalClientInRoom, setting, mssqlQuery, postgresQuery, mysqlQuery, setSetting, httpNtlm, radius, grpcQuery, + redisPingAsync, kafkaProducerAsync, getOidcTokenClientCredentials, rootCertificatesFingerprints, axiosAbortSignal +} = require("../util-server"); +const { R } = require("redbean-node"); +const { BeanModel } = require("redbean-node/dist/bean-model"); +const { Notification } = require("../notification"); +const { Proxy } = require("../proxy"); +const { demoMode } = require("../config"); +const version = require("../../package.json").version; +const apicache = require("../modules/apicache"); +const { UptimeKumaServer } = require("../uptime-kuma-server"); +const { DockerHost } = require("../docker"); +const Gamedig = require("gamedig"); +const jwt = require("jsonwebtoken"); +const crypto = require("crypto"); +const { UptimeCalculator } = require("../uptime-calculator"); +const { CookieJar } = require("tough-cookie"); +const { HttpsCookieAgent } = require("http-cookie-agent/http"); +const https = require("https"); +const http = require("http"); + +const rootCertificates = rootCertificatesFingerprints(); + +/** + * status: + * 0 = DOWN + * 1 = UP + * 2 = PENDING + * 3 = MAINTENANCE + */ +class Monitor extends BeanModel { + + /** + * Return an object that ready to parse to JSON for public Only show + * necessary data to public + * @param {boolean} showTags Include tags in JSON + * @param {boolean} certExpiry Include certificate expiry info in + * JSON + * @returns {Promise} Object ready to parse + */ + async toPublicJSON(showTags = false, certExpiry = false) { + let obj = { + id: this.id, + name: this.name, + sendUrl: this.sendUrl, + type: this.type, + }; + + if (this.sendUrl) { + obj.url = this.url; + } + + if (showTags) { + obj.tags = await this.getTags(); + } + + if (certExpiry && (this.type === "http" || this.type === "keyword" || this.type === "json-query") && this.getURLProtocol() === "https:") { + const { certExpiryDaysRemaining, validCert } = await this.getCertExpiry(this.id); + obj.certExpiryDaysRemaining = certExpiryDaysRemaining; + obj.validCert = validCert; + } + + return obj; + } + + /** + * Return an object that ready to parse to JSON + * @param {object} preloadData to prevent n+1 problems, we query the data in a batch outside of this function + * @param {boolean} includeSensitiveData Include sensitive data in + * JSON + * @returns {object} Object ready to parse + */ + toJSON(preloadData = {}, includeSensitiveData = true) { + + let screenshot = null; + + if (this.type === "real-browser") { + screenshot = "/screenshots/" + jwt.sign(this.id, UptimeKumaServer.getInstance().jwtSecret) + ".png"; + } + + const path = preloadData.paths.get(this.id) || []; + const pathName = path.join(" / "); + + let data = { + id: this.id, + name: this.name, + description: this.description, + path, + pathName, + parent: this.parent, + childrenIDs: preloadData.childrenIDs.get(this.id) || [], + url: this.url, + method: this.method, + hostname: this.hostname, + port: this.port, + maxretries: this.maxretries, + weight: this.weight, + active: preloadData.activeStatus.get(this.id), + forceInactive: preloadData.forceInactive.get(this.id), + type: this.type, + timeout: this.timeout, + interval: this.interval, + retryInterval: this.retryInterval, + resendInterval: this.resendInterval, + keyword: this.keyword, + invertKeyword: this.isInvertKeyword(), + expiryNotification: this.isEnabledExpiryNotification(), + ignoreTls: this.getIgnoreTls(), + upsideDown: this.isUpsideDown(), + packetSize: this.packetSize, + maxredirects: this.maxredirects, + accepted_statuscodes: this.getAcceptedStatuscodes(), + dns_resolve_type: this.dns_resolve_type, + dns_resolve_server: this.dns_resolve_server, + dns_last_result: this.dns_last_result, + docker_container: this.docker_container, + docker_host: this.docker_host, + proxyId: this.proxy_id, + notificationIDList: preloadData.notifications.get(this.id) || {}, + tags: preloadData.tags.get(this.id) || [], + maintenance: preloadData.maintenanceStatus.get(this.id), + mqttTopic: this.mqttTopic, + mqttSuccessMessage: this.mqttSuccessMessage, + mqttCheckType: this.mqttCheckType, + databaseQuery: this.databaseQuery, + authMethod: this.authMethod, + grpcUrl: this.grpcUrl, + grpcProtobuf: this.grpcProtobuf, + grpcMethod: this.grpcMethod, + grpcServiceName: this.grpcServiceName, + grpcEnableTls: this.getGrpcEnableTls(), + radiusCalledStationId: this.radiusCalledStationId, + radiusCallingStationId: this.radiusCallingStationId, + game: this.game, + gamedigGivenPortOnly: this.getGameDigGivenPortOnly(), + httpBodyEncoding: this.httpBodyEncoding, + jsonPath: this.jsonPath, + expectedValue: this.expectedValue, + kafkaProducerTopic: this.kafkaProducerTopic, + kafkaProducerBrokers: JSON.parse(this.kafkaProducerBrokers), + kafkaProducerSsl: this.getKafkaProducerSsl(), + kafkaProducerAllowAutoTopicCreation: this.getKafkaProducerAllowAutoTopicCreation(), + kafkaProducerMessage: this.kafkaProducerMessage, + screenshot, + cacheBust: this.getCacheBust(), + remote_browser: this.remote_browser, + snmpOid: this.snmpOid, + jsonPathOperator: this.jsonPathOperator, + snmpVersion: this.snmpVersion, + conditions: JSON.parse(this.conditions), + }; + + if (includeSensitiveData) { + data = { + ...data, + headers: this.headers, + body: this.body, + grpcBody: this.grpcBody, + grpcMetadata: this.grpcMetadata, + basic_auth_user: this.basic_auth_user, + basic_auth_pass: this.basic_auth_pass, + oauth_client_id: this.oauth_client_id, + oauth_client_secret: this.oauth_client_secret, + oauth_token_url: this.oauth_token_url, + oauth_scopes: this.oauth_scopes, + oauth_auth_method: this.oauth_auth_method, + pushToken: this.pushToken, + databaseConnectionString: this.databaseConnectionString, + radiusUsername: this.radiusUsername, + radiusPassword: this.radiusPassword, + radiusSecret: this.radiusSecret, + mqttUsername: this.mqttUsername, + mqttPassword: this.mqttPassword, + authWorkstation: this.authWorkstation, + authDomain: this.authDomain, + tlsCa: this.tlsCa, + tlsCert: this.tlsCert, + tlsKey: this.tlsKey, + kafkaProducerSaslOptions: JSON.parse(this.kafkaProducerSaslOptions), + }; + } + + data.includeSensitiveData = includeSensitiveData; + return data; + } + + /** + * Get all tags applied to this monitor + * @returns {Promise[]>} List of tags on the + * monitor + */ + async getTags() { + return await R.getAll("SELECT mt.*, tag.name, tag.color FROM monitor_tag mt JOIN tag ON mt.tag_id = tag.id WHERE mt.monitor_id = ? ORDER BY tag.name", [ this.id ]); + } + + /** + * Gets certificate expiry for this monitor + * @param {number} monitorID ID of monitor to send + * @returns {Promise>} Certificate expiry info for + * monitor + */ + async getCertExpiry(monitorID) { + let tlsInfoBean = await R.findOne("monitor_tls_info", "monitor_id = ?", [ + monitorID, + ]); + let tlsInfo; + if (tlsInfoBean) { + tlsInfo = JSON.parse(tlsInfoBean?.info_json); + if (tlsInfo?.valid && tlsInfo?.certInfo?.daysRemaining) { + return { + certExpiryDaysRemaining: tlsInfo.certInfo.daysRemaining, + validCert: true + }; + } + } + return { + certExpiryDaysRemaining: "", + validCert: false + }; + } + + /** + * Encode user and password to Base64 encoding + * for HTTP "basic" auth, as per RFC-7617 + * @param {string|null} user - The username (nullable if not changed by a user) + * @param {string|null} pass - The password (nullable if not changed by a user) + * @returns {string} Encoded Base64 string + */ + encodeBase64(user, pass) { + return Buffer.from(`${user || ""}:${pass || ""}`).toString("base64"); + } + + /** + * Is the TLS expiry notification enabled? + * @returns {boolean} Enabled? + */ + isEnabledExpiryNotification() { + return Boolean(this.expiryNotification); + } + + /** + * Parse to boolean + * @returns {boolean} Should TLS errors be ignored? + */ + getIgnoreTls() { + return Boolean(this.ignoreTls); + } + + /** + * Parse to boolean + * @returns {boolean} Is the monitor in upside down mode? + */ + isUpsideDown() { + return Boolean(this.upsideDown); + } + + /** + * Parse to boolean + * @returns {boolean} Invert keyword match? + */ + isInvertKeyword() { + return Boolean(this.invertKeyword); + } + + /** + * Parse to boolean + * @returns {boolean} Enable TLS for gRPC? + */ + getGrpcEnableTls() { + return Boolean(this.grpcEnableTls); + } + + /** + * Parse to boolean + * @returns {boolean} if cachebusting is enabled + */ + getCacheBust() { + return Boolean(this.cacheBust); + } + + /** + * Get accepted status codes + * @returns {object} Accepted status codes + */ + getAcceptedStatuscodes() { + return JSON.parse(this.accepted_statuscodes_json); + } + + /** + * Get if game dig should only use the port which was provided + * @returns {boolean} gamedig should only use the provided port + */ + getGameDigGivenPortOnly() { + return Boolean(this.gamedigGivenPortOnly); + } + + /** + * Parse to boolean + * @returns {boolean} Kafka Producer Ssl enabled? + */ + getKafkaProducerSsl() { + return Boolean(this.kafkaProducerSsl); + } + + /** + * Parse to boolean + * @returns {boolean} Kafka Producer Allow Auto Topic Creation Enabled? + */ + getKafkaProducerAllowAutoTopicCreation() { + return Boolean(this.kafkaProducerAllowAutoTopicCreation); + } + + /** + * Start monitor + * @param {Server} io Socket server instance + * @returns {Promise} + */ + async start(io) { + let previousBeat = null; + let retries = 0; + + this.prometheus = new Prometheus(this); + + const beat = async () => { + + let beatInterval = this.interval; + + if (! beatInterval) { + beatInterval = 1; + } + + if (demoMode) { + if (beatInterval < 20) { + console.log("beat interval too low, reset to 20s"); + beatInterval = 20; + } + } + + // Expose here for prometheus update + // undefined if not https + let tlsInfo = undefined; + + if (!previousBeat || this.type === "push") { + previousBeat = await R.findOne("heartbeat", " monitor_id = ? ORDER BY time DESC", [ + this.id, + ]); + if (previousBeat) { + retries = previousBeat.retries; + } + } + + const isFirstBeat = !previousBeat; + + let bean = R.dispense("heartbeat"); + bean.monitor_id = this.id; + bean.time = R.isoDateTimeMillis(dayjs.utc()); + bean.status = DOWN; + bean.downCount = previousBeat?.downCount || 0; + + if (this.isUpsideDown()) { + bean.status = flipStatus(bean.status); + } + + // Runtime patch timeout if it is 0 + // See https://github.com/louislam/uptime-kuma/pull/3961#issuecomment-1804149144 + if (!this.timeout || this.timeout <= 0) { + this.timeout = this.interval * 1000 * 0.8; + } + + try { + if (await Monitor.isUnderMaintenance(this.id)) { + bean.msg = "Monitor under maintenance"; + bean.status = MAINTENANCE; + } else if (this.type === "group") { + const children = await Monitor.getChildren(this.id); + + if (children.length > 0) { + bean.status = UP; + bean.msg = "All children up and running"; + for (const child of children) { + if (!child.active) { + // Ignore inactive childs + continue; + } + const lastBeat = await Monitor.getPreviousHeartbeat(child.id); + + // Only change state if the monitor is in worse conditions then the ones before + // lastBeat.status could be null + if (!lastBeat) { + bean.status = PENDING; + } else if (bean.status === UP && (lastBeat.status === PENDING || lastBeat.status === DOWN)) { + bean.status = lastBeat.status; + } else if (bean.status === PENDING && lastBeat.status === DOWN) { + bean.status = lastBeat.status; + } + } + + if (bean.status !== UP) { + bean.msg = "Child inaccessible"; + } + } else { + // Set status pending if group is empty + bean.status = PENDING; + bean.msg = "Group empty"; + } + + } else if (this.type === "http" || this.type === "keyword" || this.type === "json-query") { + // Do not do any queries/high loading things before the "bean.ping" + let startTime = dayjs().valueOf(); + + // HTTP basic auth + let basicAuthHeader = {}; + if (this.auth_method === "basic") { + basicAuthHeader = { + "Authorization": "Basic " + this.encodeBase64(this.basic_auth_user, this.basic_auth_pass), + }; + } + + // OIDC: Basic client credential flow. + // Additional grants might be implemented in the future + let oauth2AuthHeader = {}; + if (this.auth_method === "oauth2-cc") { + try { + if (this.oauthAccessToken === undefined || new Date(this.oauthAccessToken.expires_at * 1000) <= new Date()) { + this.oauthAccessToken = await this.makeOidcTokenClientCredentialsRequest(); + } + oauth2AuthHeader = { + "Authorization": this.oauthAccessToken.token_type + " " + this.oauthAccessToken.access_token, + }; + } catch (e) { + throw new Error("The oauth config is invalid. " + e.message); + } + } + + const httpsAgentOptions = { + maxCachedSessions: 0, // Use Custom agent to disable session reuse (https://github.com/nodejs/node/issues/3940) + rejectUnauthorized: !this.getIgnoreTls(), + secureOptions: crypto.constants.SSL_OP_LEGACY_SERVER_CONNECT, + }; + + log.debug("monitor", `[${this.name}] Prepare Options for axios`); + + let contentType = null; + let bodyValue = null; + + if (this.body && (typeof this.body === "string" && this.body.trim().length > 0)) { + if (!this.httpBodyEncoding || this.httpBodyEncoding === "json") { + try { + bodyValue = JSON.parse(this.body); + contentType = "application/json"; + } catch (e) { + throw new Error("Your JSON body is invalid. " + e.message); + } + } else if (this.httpBodyEncoding === "form") { + bodyValue = this.body; + contentType = "application/x-www-form-urlencoded"; + } else if (this.httpBodyEncoding === "xml") { + bodyValue = this.body; + contentType = "text/xml; charset=utf-8"; + } + } + + // Axios Options + const options = { + url: this.url, + method: (this.method || "get").toLowerCase(), + timeout: this.timeout * 1000, + headers: { + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", + ...(contentType ? { "Content-Type": contentType } : {}), + ...(basicAuthHeader), + ...(oauth2AuthHeader), + ...(this.headers ? JSON.parse(this.headers) : {}) + }, + maxRedirects: this.maxredirects, + validateStatus: (status) => { + return checkStatusCode(status, this.getAcceptedStatuscodes()); + }, + signal: axiosAbortSignal((this.timeout + 10) * 1000), + }; + + if (bodyValue) { + options.data = bodyValue; + } + + if (this.cacheBust) { + const randomFloatString = Math.random().toString(36); + const cacheBust = randomFloatString.substring(2); + options.params = { + uptime_kuma_cachebuster: cacheBust, + }; + } + + if (this.proxy_id) { + const proxy = await R.load("proxy", this.proxy_id); + + if (proxy && proxy.active) { + const { httpAgent, httpsAgent } = Proxy.createAgents(proxy, { + httpsAgentOptions: httpsAgentOptions, + }); + + options.proxy = false; + options.httpAgent = httpAgent; + options.httpsAgent = httpsAgent; + } + } + + if (!options.httpsAgent) { + let jar = new CookieJar(); + let httpsCookieAgentOptions = { + ...httpsAgentOptions, + cookies: { jar } + }; + options.httpsAgent = new HttpsCookieAgent(httpsCookieAgentOptions); + } + + if (this.auth_method === "mtls") { + if (this.tlsCert !== null && this.tlsCert !== "") { + options.httpsAgent.options.cert = Buffer.from(this.tlsCert); + } + if (this.tlsCa !== null && this.tlsCa !== "") { + options.httpsAgent.options.ca = Buffer.from(this.tlsCa); + } + if (this.tlsKey !== null && this.tlsKey !== "") { + options.httpsAgent.options.key = Buffer.from(this.tlsKey); + } + } + + let tlsInfo = {}; + // Store tlsInfo when secureConnect event is emitted + // The keylog event listener is a workaround to access the tlsSocket + options.httpsAgent.once("keylog", async (line, tlsSocket) => { + tlsSocket.once("secureConnect", async () => { + tlsInfo = checkCertificate(tlsSocket); + tlsInfo.valid = tlsSocket.authorized || false; + + await this.handleTlsInfo(tlsInfo); + }); + }); + + log.debug("monitor", `[${this.name}] Axios Options: ${JSON.stringify(options)}`); + log.debug("monitor", `[${this.name}] Axios Request`); + + // Make Request + let res = await this.makeAxiosRequest(options); + + bean.msg = `${res.status} - ${res.statusText}`; + bean.ping = dayjs().valueOf() - startTime; + + // fallback for if kelog event is not emitted, but we may still have tlsInfo, + // e.g. if the connection is made through a proxy + if (this.getUrl()?.protocol === "https:" && tlsInfo.valid === undefined) { + const tlsSocket = res.request.res.socket; + + if (tlsSocket) { + tlsInfo = checkCertificate(tlsSocket); + tlsInfo.valid = tlsSocket.authorized || false; + + await this.handleTlsInfo(tlsInfo); + } + } + + if (process.env.UPTIME_KUMA_LOG_RESPONSE_BODY_MONITOR_ID === this.id) { + log.info("monitor", res.data); + } + + if (this.type === "http") { + bean.status = UP; + } else if (this.type === "keyword") { + + let data = res.data; + + // Convert to string for object/array + if (typeof data !== "string") { + data = JSON.stringify(data); + } + + let keywordFound = data.includes(this.keyword); + if (keywordFound === !this.isInvertKeyword()) { + bean.msg += ", keyword " + (keywordFound ? "is" : "not") + " found"; + bean.status = UP; + } else { + data = data.replace(/<[^>]*>?|[\n\r]|\s+/gm, " ").trim(); + if (data.length > 50) { + data = data.substring(0, 47) + "..."; + } + throw new Error(bean.msg + ", but keyword is " + + (keywordFound ? "present" : "not") + " in [" + data + "]"); + } + + } else if (this.type === "json-query") { + let data = res.data; + + const { status, response } = await evaluateJsonQuery(data, this.jsonPath, this.jsonPathOperator, this.expectedValue); + + if (status) { + bean.status = UP; + bean.msg = `JSON query passes (comparing ${response} ${this.jsonPathOperator} ${this.expectedValue})`; + } else { + throw new Error(`JSON query does not pass (comparing ${response} ${this.jsonPathOperator} ${this.expectedValue})`); + } + + } + + } else if (this.type === "port") { + bean.ping = await tcping(this.hostname, this.port); + bean.msg = ""; + bean.status = UP; + + } else if (this.type === "ping") { + bean.ping = await ping(this.hostname, this.packetSize); + bean.msg = ""; + bean.status = UP; + } else if (this.type === "push") { // Type: Push + log.debug("monitor", `[${this.name}] Checking monitor at ${dayjs().format("YYYY-MM-DD HH:mm:ss.SSS")}`); + const bufferTime = 1000; // 1s buffer to accommodate clock differences + + if (previousBeat) { + const msSinceLastBeat = dayjs.utc().valueOf() - dayjs.utc(previousBeat.time).valueOf(); + + log.debug("monitor", `[${this.name}] msSinceLastBeat = ${msSinceLastBeat}`); + + // If the previous beat was down or pending we use the regular + // beatInterval/retryInterval in the setTimeout further below + if (previousBeat.status !== (this.isUpsideDown() ? DOWN : UP) || msSinceLastBeat > beatInterval * 1000 + bufferTime) { + bean.duration = Math.round(msSinceLastBeat / 1000); + throw new Error("No heartbeat in the time window"); + } else { + let timeout = beatInterval * 1000 - msSinceLastBeat; + if (timeout < 0) { + timeout = bufferTime; + } else { + timeout += bufferTime; + } + // No need to insert successful heartbeat for push type, so end here + retries = 0; + log.debug("monitor", `[${this.name}] timeout = ${timeout}`); + this.heartbeatInterval = setTimeout(safeBeat, timeout); + return; + } + } else { + bean.duration = beatInterval; + throw new Error("No heartbeat in the time window"); + } + + } else if (this.type === "steam") { + const steamApiUrl = "https://api.steampowered.com/IGameServersService/GetServerList/v1/"; + const steamAPIKey = await setting("steamAPIKey"); + const filter = `addr\\${this.hostname}:${this.port}`; + + if (!steamAPIKey) { + throw new Error("Steam API Key not found"); + } + + let res = await axios.get(steamApiUrl, { + timeout: this.timeout * 1000, + headers: { + "Accept": "*/*", + }, + httpsAgent: new https.Agent({ + maxCachedSessions: 0, // Use Custom agent to disable session reuse (https://github.com/nodejs/node/issues/3940) + rejectUnauthorized: !this.getIgnoreTls(), + secureOptions: crypto.constants.SSL_OP_LEGACY_SERVER_CONNECT, + }), + httpAgent: new http.Agent({ + maxCachedSessions: 0, + }), + maxRedirects: this.maxredirects, + validateStatus: (status) => { + return checkStatusCode(status, this.getAcceptedStatuscodes()); + }, + params: { + filter: filter, + key: steamAPIKey, + } + }); + + if (res.data.response && res.data.response.servers && res.data.response.servers.length > 0) { + bean.status = UP; + bean.msg = res.data.response.servers[0].name; + + try { + bean.ping = await ping(this.hostname, this.packetSize); + } catch (_) { } + } else { + throw new Error("Server not found on Steam"); + } + } else if (this.type === "gamedig") { + try { + const state = await Gamedig.query({ + type: this.game, + host: this.hostname, + port: this.port, + givenPortOnly: this.getGameDigGivenPortOnly(), + }); + + bean.msg = state.name; + bean.status = UP; + bean.ping = state.ping; + } catch (e) { + throw new Error(e.message); + } + } else if (this.type === "docker") { + log.debug("monitor", `[${this.name}] Prepare Options for Axios`); + + const options = { + url: `/containers/${this.docker_container}/json`, + timeout: this.interval * 1000 * 0.8, + headers: { + "Accept": "*/*", + }, + httpsAgent: new https.Agent({ + maxCachedSessions: 0, // Use Custom agent to disable session reuse (https://github.com/nodejs/node/issues/3940) + rejectUnauthorized: !this.getIgnoreTls(), + secureOptions: crypto.constants.SSL_OP_LEGACY_SERVER_CONNECT, + }), + httpAgent: new http.Agent({ + maxCachedSessions: 0, + }), + }; + + const dockerHost = await R.load("docker_host", this.docker_host); + + if (!dockerHost) { + throw new Error("Failed to load docker host config"); + } + + if (dockerHost._dockerType === "socket") { + options.socketPath = dockerHost._dockerDaemon; + } else if (dockerHost._dockerType === "tcp") { + options.baseURL = DockerHost.patchDockerURL(dockerHost._dockerDaemon); + options.httpsAgent = new https.Agent( + DockerHost.getHttpsAgentOptions(dockerHost._dockerType, options.baseURL) + ); + } + + log.debug("monitor", `[${this.name}] Axios Request`); + let res = await axios.request(options); + + if (res.data.State.Running) { + if (res.data.State.Health && res.data.State.Health.Status !== "healthy") { + bean.status = PENDING; + bean.msg = res.data.State.Health.Status; + } else { + bean.status = UP; + bean.msg = res.data.State.Health ? res.data.State.Health.Status : res.data.State.Status; + } + } else { + throw Error("Container State is " + res.data.State.Status); + } + } else if (this.type === "sqlserver") { + let startTime = dayjs().valueOf(); + + await mssqlQuery(this.databaseConnectionString, this.databaseQuery || "SELECT 1"); + + bean.msg = ""; + bean.status = UP; + bean.ping = dayjs().valueOf() - startTime; + } else if (this.type === "grpc-keyword") { + let startTime = dayjs().valueOf(); + const options = { + grpcUrl: this.grpcUrl, + grpcProtobufData: this.grpcProtobuf, + grpcServiceName: this.grpcServiceName, + grpcEnableTls: this.grpcEnableTls, + grpcMethod: this.grpcMethod, + grpcBody: this.grpcBody, + }; + const response = await grpcQuery(options); + bean.ping = dayjs().valueOf() - startTime; + log.debug("monitor:", `gRPC response: ${JSON.stringify(response)}`); + let responseData = response.data; + if (responseData.length > 50) { + responseData = responseData.toString().substring(0, 47) + "..."; + } + if (response.code !== 1) { + bean.status = DOWN; + bean.msg = `Error in send gRPC ${response.code} ${response.errorMessage}`; + } else { + let keywordFound = response.data.toString().includes(this.keyword); + if (keywordFound === !this.isInvertKeyword()) { + bean.status = UP; + bean.msg = `${responseData}, keyword [${this.keyword}] ${keywordFound ? "is" : "not"} found`; + } else { + log.debug("monitor:", `GRPC response [${response.data}] + ", but keyword [${this.keyword}] is ${keywordFound ? "present" : "not"} in [" + ${response.data} + "]"`); + bean.status = DOWN; + bean.msg = `, but keyword [${this.keyword}] is ${keywordFound ? "present" : "not"} in [" + ${responseData} + "]`; + } + } + } else if (this.type === "postgres") { + let startTime = dayjs().valueOf(); + + await postgresQuery(this.databaseConnectionString, this.databaseQuery || "SELECT 1"); + + bean.msg = ""; + bean.status = UP; + bean.ping = dayjs().valueOf() - startTime; + } else if (this.type === "mysql") { + let startTime = dayjs().valueOf(); + + // Use `radius_password` as `password` field, since there are too many unnecessary fields + // TODO: rename `radius_password` to `password` later for general use + let mysqlPassword = this.radiusPassword; + + bean.msg = await mysqlQuery(this.databaseConnectionString, this.databaseQuery || "SELECT 1", mysqlPassword); + bean.status = UP; + bean.ping = dayjs().valueOf() - startTime; + } else if (this.type === "radius") { + let startTime = dayjs().valueOf(); + + // Handle monitors that were created before the + // update and as such don't have a value for + // this.port. + let port; + if (this.port == null) { + port = 1812; + } else { + port = this.port; + } + + const resp = await radius( + this.hostname, + this.radiusUsername, + this.radiusPassword, + this.radiusCalledStationId, + this.radiusCallingStationId, + this.radiusSecret, + port, + this.interval * 1000 * 0.4, + ); + + bean.msg = resp.code; + bean.status = UP; + bean.ping = dayjs().valueOf() - startTime; + } else if (this.type === "redis") { + let startTime = dayjs().valueOf(); + + bean.msg = await redisPingAsync(this.databaseConnectionString, !this.ignoreTls); + bean.status = UP; + bean.ping = dayjs().valueOf() - startTime; + + } else if (this.type in UptimeKumaServer.monitorTypeList) { + let startTime = dayjs().valueOf(); + const monitorType = UptimeKumaServer.monitorTypeList[this.type]; + await monitorType.check(this, bean, UptimeKumaServer.getInstance()); + if (!bean.ping) { + bean.ping = dayjs().valueOf() - startTime; + } + + } else if (this.type === "kafka-producer") { + let startTime = dayjs().valueOf(); + + bean.msg = await kafkaProducerAsync( + JSON.parse(this.kafkaProducerBrokers), + this.kafkaProducerTopic, + this.kafkaProducerMessage, + { + allowAutoTopicCreation: this.kafkaProducerAllowAutoTopicCreation, + ssl: this.kafkaProducerSsl, + clientId: `Uptime-Kuma/${version}`, + interval: this.interval, + }, + JSON.parse(this.kafkaProducerSaslOptions), + ); + bean.status = UP; + bean.ping = dayjs().valueOf() - startTime; + + } else { + throw new Error("Unknown Monitor Type"); + } + + if (this.isUpsideDown()) { + bean.status = flipStatus(bean.status); + + if (bean.status === DOWN) { + throw new Error("Flip UP to DOWN"); + } + } + + retries = 0; + + } catch (error) { + + if (error?.name === "CanceledError") { + bean.msg = `timeout by AbortSignal (${this.timeout}s)`; + } else { + bean.msg = error.message; + } + + // If UP come in here, it must be upside down mode + // Just reset the retries + if (this.isUpsideDown() && bean.status === UP) { + retries = 0; + + } else if ((this.maxretries > 0) && (retries < this.maxretries)) { + retries++; + bean.status = PENDING; + } else { + // Continue counting retries during DOWN + retries++; + } + } + + bean.retries = retries; + + log.debug("monitor", `[${this.name}] Check isImportant`); + let isImportant = Monitor.isImportantBeat(isFirstBeat, previousBeat?.status, bean.status); + + // Mark as important if status changed, ignore pending pings, + // Don't notify if disrupted changes to up + if (isImportant) { + bean.important = true; + + if (Monitor.isImportantForNotification(isFirstBeat, previousBeat?.status, bean.status)) { + log.debug("monitor", `[${this.name}] sendNotification`); + await Monitor.sendNotification(isFirstBeat, this, bean); + } else { + log.debug("monitor", `[${this.name}] will not sendNotification because it is (or was) under maintenance`); + } + + // Reset down count + bean.downCount = 0; + + // Clear Status Page Cache + log.debug("monitor", `[${this.name}] apicache clear`); + apicache.clear(); + + await UptimeKumaServer.getInstance().sendMaintenanceListByUserID(this.user_id); + + } else { + bean.important = false; + + if (bean.status === DOWN && this.resendInterval > 0) { + ++bean.downCount; + if (bean.downCount >= this.resendInterval) { + // Send notification again, because we are still DOWN + log.debug("monitor", `[${this.name}] sendNotification again: Down Count: ${bean.downCount} | Resend Interval: ${this.resendInterval}`); + await Monitor.sendNotification(isFirstBeat, this, bean); + + // Reset down count + bean.downCount = 0; + } + } + } + + if (bean.status === UP) { + log.debug("monitor", `Monitor #${this.id} '${this.name}': Successful Response: ${bean.ping} ms | Interval: ${beatInterval} seconds | Type: ${this.type}`); + } else if (bean.status === PENDING) { + if (this.retryInterval > 0) { + beatInterval = this.retryInterval; + } + log.warn("monitor", `Monitor #${this.id} '${this.name}': Pending: ${bean.msg} | Max retries: ${this.maxretries} | Retry: ${retries} | Retry Interval: ${beatInterval} seconds | Type: ${this.type}`); + } else if (bean.status === MAINTENANCE) { + log.warn("monitor", `Monitor #${this.id} '${this.name}': Under Maintenance | Type: ${this.type}`); + } else { + log.warn("monitor", `Monitor #${this.id} '${this.name}': Failing: ${bean.msg} | Interval: ${beatInterval} seconds | Type: ${this.type} | Down Count: ${bean.downCount} | Resend Interval: ${this.resendInterval}`); + } + + // Calculate uptime + let uptimeCalculator = await UptimeCalculator.getUptimeCalculator(this.id); + let endTimeDayjs = await uptimeCalculator.update(bean.status, parseFloat(bean.ping)); + bean.end_time = R.isoDateTimeMillis(endTimeDayjs); + + // Send to frontend + log.debug("monitor", `[${this.name}] Send to socket`); + io.to(this.user_id).emit("heartbeat", bean.toJSON()); + Monitor.sendStats(io, this.id, this.user_id); + + // Store to database + log.debug("monitor", `[${this.name}] Store`); + await R.store(bean); + + log.debug("monitor", `[${this.name}] prometheus.update`); + this.prometheus?.update(bean, tlsInfo); + + previousBeat = bean; + + if (! this.isStop) { + log.debug("monitor", `[${this.name}] SetTimeout for next check.`); + + let intervalRemainingMs = Math.max( + 1, + beatInterval * 1000 - dayjs().diff(dayjs.utc(bean.time)) + ); + + log.debug("monitor", `[${this.name}] Next heartbeat in: ${intervalRemainingMs}ms`); + + this.heartbeatInterval = setTimeout(safeBeat, intervalRemainingMs); + } else { + log.info("monitor", `[${this.name}] isStop = true, no next check.`); + } + + }; + + /** + * Get a heartbeat and handle errors7 + * @returns {void} + */ + const safeBeat = async () => { + try { + await beat(); + } catch (e) { + console.trace(e); + UptimeKumaServer.errorLog(e, false); + log.error("monitor", "Please report to https://github.com/louislam/uptime-kuma/issues"); + + if (! this.isStop) { + log.info("monitor", "Try to restart the monitor"); + this.heartbeatInterval = setTimeout(safeBeat, this.interval * 1000); + } + } + }; + + // Delay Push Type + if (this.type === "push") { + setTimeout(() => { + safeBeat(); + }, this.interval * 1000); + } else { + safeBeat(); + } + } + + /** + * Make a request using axios + * @param {object} options Options for Axios + * @param {boolean} finalCall Should this be the final call i.e + * don't retry on failure + * @returns {object} Axios response + */ + async makeAxiosRequest(options, finalCall = false) { + try { + let res; + if (this.auth_method === "ntlm") { + options.httpsAgent.keepAlive = true; + + res = await httpNtlm(options, { + username: this.basic_auth_user, + password: this.basic_auth_pass, + domain: this.authDomain, + workstation: this.authWorkstation ? this.authWorkstation : undefined + }); + } else { + res = await axios.request(options); + } + + return res; + } catch (error) { + + /** + * Make a single attempt to obtain an new access token in the event that + * the recent api request failed for authentication purposes + */ + if (this.auth_method === "oauth2-cc" && error.response.status === 401 && !finalCall) { + this.oauthAccessToken = await this.makeOidcTokenClientCredentialsRequest(); + let oauth2AuthHeader = { + "Authorization": this.oauthAccessToken.token_type + " " + this.oauthAccessToken.access_token, + }; + options.headers = { ...(options.headers), + ...(oauth2AuthHeader) + }; + + return this.makeAxiosRequest(options, true); + } + + // Fix #2253 + // Read more: https://stackoverflow.com/questions/1759956/curl-error-18-transfer-closed-with-outstanding-read-data-remaining + if (!finalCall && typeof error.message === "string" && error.message.includes("maxContentLength size of -1 exceeded")) { + log.debug("monitor", "makeAxiosRequest with gzip"); + options.headers["Accept-Encoding"] = "gzip, deflate"; + return this.makeAxiosRequest(options, true); + } else { + if (typeof error.message === "string" && error.message.includes("maxContentLength size of -1 exceeded")) { + error.message = "response timeout: incomplete response within a interval"; + } + throw error; + } + } + } + + /** + * Stop monitor + * @returns {Promise} + */ + async stop() { + clearTimeout(this.heartbeatInterval); + this.isStop = true; + + this.prometheus?.remove(); + } + + /** + * Get prometheus instance + * @returns {Prometheus|undefined} Current prometheus instance + */ + getPrometheus() { + return this.prometheus; + } + + /** + * Helper Method: + * returns URL object for further usage + * returns null if url is invalid + * @returns {(null|URL)} Monitor URL + */ + getUrl() { + try { + return new URL(this.url); + } catch (_) { + return null; + } + } + + /** + * Example: http: or https: + * @returns {(null|string)} URL's protocol + */ + getURLProtocol() { + const url = this.getUrl(); + if (url) { + return this.getUrl().protocol; + } else { + return null; + } + } + + /** + * Store TLS info to database + * @param {object} checkCertificateResult Certificate to update + * @returns {Promise} Updated certificate + */ + async updateTlsInfo(checkCertificateResult) { + let tlsInfoBean = await R.findOne("monitor_tls_info", "monitor_id = ?", [ + this.id, + ]); + + if (tlsInfoBean == null) { + tlsInfoBean = R.dispense("monitor_tls_info"); + tlsInfoBean.monitor_id = this.id; + } else { + + // Clear sent history if the cert changed. + try { + let oldCertInfo = JSON.parse(tlsInfoBean.info_json); + + let isValidObjects = oldCertInfo && oldCertInfo.certInfo && checkCertificateResult && checkCertificateResult.certInfo; + + if (isValidObjects) { + if (oldCertInfo.certInfo.fingerprint256 !== checkCertificateResult.certInfo.fingerprint256) { + log.debug("monitor", "Resetting sent_history"); + await R.exec("DELETE FROM notification_sent_history WHERE type = 'certificate' AND monitor_id = ?", [ + this.id + ]); + } else { + log.debug("monitor", "No need to reset sent_history"); + log.debug("monitor", oldCertInfo.certInfo.fingerprint256); + log.debug("monitor", checkCertificateResult.certInfo.fingerprint256); + } + } else { + log.debug("monitor", "Not valid object"); + } + } catch (e) { } + + } + + tlsInfoBean.info_json = JSON.stringify(checkCertificateResult); + await R.store(tlsInfoBean); + + return checkCertificateResult; + } + + /** + * Checks if the monitor is active based on itself and its parents + * @param {number} monitorID ID of monitor to send + * @param {boolean} active is active + * @returns {Promise} Is the monitor active? + */ + static async isActive(monitorID, active) { + const parentActive = await Monitor.isParentActive(monitorID); + + return (active === 1) && parentActive; + } + + /** + * Send statistics to clients + * @param {Server} io Socket server instance + * @param {number} monitorID ID of monitor to send + * @param {number} userID ID of user to send to + * @returns {void} + */ + static async sendStats(io, monitorID, userID) { + const hasClients = getTotalClientInRoom(io, userID) > 0; + let uptimeCalculator = await UptimeCalculator.getUptimeCalculator(monitorID); + + if (hasClients) { + // Send 24 hour average ping + let data24h = await uptimeCalculator.get24Hour(); + io.to(userID).emit("avgPing", monitorID, (data24h.avgPing) ? Number(data24h.avgPing.toFixed(2)) : null); + + // Send 24 hour uptime + io.to(userID).emit("uptime", monitorID, 24, data24h.uptime); + + // Send 30 day uptime + let data30d = await uptimeCalculator.get30Day(); + io.to(userID).emit("uptime", monitorID, 720, data30d.uptime); + + // Send 1-year uptime + let data1y = await uptimeCalculator.get1Year(); + io.to(userID).emit("uptime", monitorID, "1y", data1y.uptime); + + // Send Cert Info + await Monitor.sendCertInfo(io, monitorID, userID); + } else { + log.debug("monitor", "No clients in the room, no need to send stats"); + } + } + + /** + * Send certificate information to client + * @param {Server} io Socket server instance + * @param {number} monitorID ID of monitor to send + * @param {number} userID ID of user to send to + * @returns {void} + */ + static async sendCertInfo(io, monitorID, userID) { + let tlsInfo = await R.findOne("monitor_tls_info", "monitor_id = ?", [ + monitorID, + ]); + if (tlsInfo != null) { + io.to(userID).emit("certInfo", monitorID, tlsInfo.info_json); + } + } + + /** + * Has status of monitor changed since last beat? + * @param {boolean} isFirstBeat Is this the first beat of this monitor? + * @param {const} previousBeatStatus Status of the previous beat + * @param {const} currentBeatStatus Status of the current beat + * @returns {boolean} True if is an important beat else false + */ + static isImportantBeat(isFirstBeat, previousBeatStatus, currentBeatStatus) { + // * ? -> ANY STATUS = important [isFirstBeat] + // UP -> PENDING = not important + // * UP -> DOWN = important + // UP -> UP = not important + // PENDING -> PENDING = not important + // * PENDING -> DOWN = important + // PENDING -> UP = not important + // DOWN -> PENDING = this case not exists + // DOWN -> DOWN = not important + // * DOWN -> UP = important + // MAINTENANCE -> MAINTENANCE = not important + // * MAINTENANCE -> UP = important + // * MAINTENANCE -> DOWN = important + // * DOWN -> MAINTENANCE = important + // * UP -> MAINTENANCE = important + return isFirstBeat || + (previousBeatStatus === DOWN && currentBeatStatus === MAINTENANCE) || + (previousBeatStatus === UP && currentBeatStatus === MAINTENANCE) || + (previousBeatStatus === MAINTENANCE && currentBeatStatus === DOWN) || + (previousBeatStatus === MAINTENANCE && currentBeatStatus === UP) || + (previousBeatStatus === UP && currentBeatStatus === DOWN) || + (previousBeatStatus === DOWN && currentBeatStatus === UP) || + (previousBeatStatus === PENDING && currentBeatStatus === DOWN); + } + + /** + * Is this beat important for notifications? + * @param {boolean} isFirstBeat Is this the first beat of this monitor? + * @param {const} previousBeatStatus Status of the previous beat + * @param {const} currentBeatStatus Status of the current beat + * @returns {boolean} True if is an important beat else false + */ + static isImportantForNotification(isFirstBeat, previousBeatStatus, currentBeatStatus) { + // * ? -> ANY STATUS = important [isFirstBeat] + // UP -> PENDING = not important + // * UP -> DOWN = important + // UP -> UP = not important + // PENDING -> PENDING = not important + // * PENDING -> DOWN = important + // PENDING -> UP = not important + // DOWN -> PENDING = this case not exists + // DOWN -> DOWN = not important + // * DOWN -> UP = important + // MAINTENANCE -> MAINTENANCE = not important + // MAINTENANCE -> UP = not important + // * MAINTENANCE -> DOWN = important + // DOWN -> MAINTENANCE = not important + // UP -> MAINTENANCE = not important + return isFirstBeat || + (previousBeatStatus === MAINTENANCE && currentBeatStatus === DOWN) || + (previousBeatStatus === UP && currentBeatStatus === DOWN) || + (previousBeatStatus === DOWN && currentBeatStatus === UP) || + (previousBeatStatus === PENDING && currentBeatStatus === DOWN); + } + + /** + * Send a notification about a monitor + * @param {boolean} isFirstBeat Is this beat the first of this monitor? + * @param {Monitor} monitor The monitor to send a notificaton about + * @param {Bean} bean Status information about monitor + * @returns {void} + */ + static async sendNotification(isFirstBeat, monitor, bean) { + if (!isFirstBeat || bean.status === DOWN) { + const notificationList = await Monitor.getNotificationList(monitor); + + let text; + if (bean.status === UP) { + text = "✅ Up"; + } else { + text = "🔴 Down"; + } + + let msg = `[${monitor.name}] [${text}] ${bean.msg}`; + + for (let notification of notificationList) { + try { + const heartbeatJSON = bean.toJSON(); + const monitorData = [{ id: monitor.id, + active: monitor.active + }]; + const preloadData = await Monitor.preparePreloadData(monitorData); + // Prevent if the msg is undefined, notifications such as Discord cannot send out. + if (!heartbeatJSON["msg"]) { + heartbeatJSON["msg"] = "N/A"; + } + + // Also provide the time in server timezone + heartbeatJSON["timezone"] = await UptimeKumaServer.getInstance().getTimezone(); + heartbeatJSON["timezoneOffset"] = UptimeKumaServer.getInstance().getTimezoneOffset(); + heartbeatJSON["localDateTime"] = dayjs.utc(heartbeatJSON["time"]).tz(heartbeatJSON["timezone"]).format(SQL_DATETIME_FORMAT); + + await Notification.send(JSON.parse(notification.config), msg, monitor.toJSON(preloadData, false), heartbeatJSON); + } catch (e) { + log.error("monitor", "Cannot send notification to " + notification.name); + log.error("monitor", e); + } + } + } + } + + /** + * Get list of notification providers for a given monitor + * @param {Monitor} monitor Monitor to get notification providers for + * @returns {Promise[]>} List of notifications + */ + static async getNotificationList(monitor) { + let notificationList = await R.getAll("SELECT notification.* FROM notification, monitor_notification WHERE monitor_id = ? AND monitor_notification.notification_id = notification.id ", [ + monitor.id, + ]); + return notificationList; + } + + /** + * checks certificate chain for expiring certificates + * @param {object} tlsInfoObject Information about certificate + * @returns {void} + */ + async checkCertExpiryNotifications(tlsInfoObject) { + if (tlsInfoObject && tlsInfoObject.certInfo && tlsInfoObject.certInfo.daysRemaining) { + const notificationList = await Monitor.getNotificationList(this); + + if (! notificationList.length > 0) { + // fail fast. If no notification is set, all the following checks can be skipped. + log.debug("monitor", "No notification, no need to send cert notification"); + return; + } + + let notifyDays = await setting("tlsExpiryNotifyDays"); + if (notifyDays == null || !Array.isArray(notifyDays)) { + // Reset Default + await setSetting("tlsExpiryNotifyDays", [ 7, 14, 21 ], "general"); + notifyDays = [ 7, 14, 21 ]; + } + + if (Array.isArray(notifyDays)) { + for (const targetDays of notifyDays) { + let certInfo = tlsInfoObject.certInfo; + while (certInfo) { + let subjectCN = certInfo.subject["CN"]; + if (rootCertificates.has(certInfo.fingerprint256)) { + log.debug("monitor", `Known root cert: ${certInfo.certType} certificate "${subjectCN}" (${certInfo.daysRemaining} days valid) on ${targetDays} deadline.`); + break; + } else if (certInfo.daysRemaining > targetDays) { + log.debug("monitor", `No need to send cert notification for ${certInfo.certType} certificate "${subjectCN}" (${certInfo.daysRemaining} days valid) on ${targetDays} deadline.`); + } else { + log.debug("monitor", `call sendCertNotificationByTargetDays for ${targetDays} deadline on certificate ${subjectCN}.`); + await this.sendCertNotificationByTargetDays(subjectCN, certInfo.certType, certInfo.daysRemaining, targetDays, notificationList); + } + certInfo = certInfo.issuerCertificate; + } + } + } + } + } + + /** + * Send a certificate notification when certificate expires in less + * than target days + * @param {string} certCN Common Name attribute from the certificate subject + * @param {string} certType certificate type + * @param {number} daysRemaining Number of days remaining on certificate + * @param {number} targetDays Number of days to alert after + * @param {LooseObject[]} notificationList List of notification providers + * @returns {Promise} + */ + async sendCertNotificationByTargetDays(certCN, certType, daysRemaining, targetDays, notificationList) { + + let row = await R.getRow("SELECT * FROM notification_sent_history WHERE type = ? AND monitor_id = ? AND days <= ?", [ + "certificate", + this.id, + targetDays, + ]); + + // Sent already, no need to send again + if (row) { + log.debug("monitor", "Sent already, no need to send again"); + return; + } + + let sent = false; + log.debug("monitor", "Send certificate notification"); + + for (let notification of notificationList) { + try { + log.debug("monitor", "Sending to " + notification.name); + await Notification.send(JSON.parse(notification.config), `[${this.name}][${this.url}] ${certType} certificate ${certCN} will be expired in ${daysRemaining} days`); + sent = true; + } catch (e) { + log.error("monitor", "Cannot send cert notification to " + notification.name); + log.error("monitor", e); + } + } + + if (sent) { + await R.exec("INSERT INTO notification_sent_history (type, monitor_id, days) VALUES(?, ?, ?)", [ + "certificate", + this.id, + targetDays, + ]); + } + } + + /** + * Get the status of the previous heartbeat + * @param {number} monitorID ID of monitor to check + * @returns {Promise>} Previous heartbeat + */ + static async getPreviousHeartbeat(monitorID) { + return await R.findOne("heartbeat", " id = (select MAX(id) from heartbeat where monitor_id = ?)", [ + monitorID + ]); + } + + /** + * Check if monitor is under maintenance + * @param {number} monitorID ID of monitor to check + * @returns {Promise} Is the monitor under maintenance + */ + static async isUnderMaintenance(monitorID) { + const maintenanceIDList = await R.getCol(` + SELECT maintenance_id FROM monitor_maintenance + WHERE monitor_id = ? + `, [ monitorID ]); + + for (const maintenanceID of maintenanceIDList) { + const maintenance = await UptimeKumaServer.getInstance().getMaintenance(maintenanceID); + if (maintenance && await maintenance.isUnderMaintenance()) { + return true; + } + } + + const parent = await Monitor.getParent(monitorID); + if (parent != null) { + return await Monitor.isUnderMaintenance(parent.id); + } + + return false; + } + + /** + * Make sure monitor interval is between bounds + * @returns {void} + * @throws Interval is outside of range + */ + validate() { + if (this.interval > MAX_INTERVAL_SECOND) { + throw new Error(`Interval cannot be more than ${MAX_INTERVAL_SECOND} seconds`); + } + if (this.interval < MIN_INTERVAL_SECOND) { + throw new Error(`Interval cannot be less than ${MIN_INTERVAL_SECOND} seconds`); + } + } + + /** + * Gets monitor notification of multiple monitor + * @param {Array} monitorIDs IDs of monitor to get + * @returns {Promise>} object + */ + static async getMonitorNotification(monitorIDs) { + return await R.getAll(` + SELECT monitor_notification.monitor_id, monitor_notification.notification_id + FROM monitor_notification + WHERE monitor_notification.monitor_id IN (${monitorIDs.map((_) => "?").join(",")}) + `, monitorIDs); + } + + /** + * Gets monitor tags of multiple monitor + * @param {Array} monitorIDs IDs of monitor to get + * @returns {Promise>} object + */ + static async getMonitorTag(monitorIDs) { + return await R.getAll(` + SELECT monitor_tag.monitor_id, monitor_tag.tag_id, tag.name, tag.color + FROM monitor_tag + JOIN tag ON monitor_tag.tag_id = tag.id + WHERE monitor_tag.monitor_id IN (${monitorIDs.map((_) => "?").join(",")}) + `, monitorIDs); + } + + /** + * prepare preloaded data for efficient access + * @param {Array} monitorData IDs & active field of monitor to get + * @returns {Promise>} object + */ + static async preparePreloadData(monitorData) { + + const notificationsMap = new Map(); + const tagsMap = new Map(); + const maintenanceStatusMap = new Map(); + const childrenIDsMap = new Map(); + const activeStatusMap = new Map(); + const forceInactiveMap = new Map(); + const pathsMap = new Map(); + + if (monitorData.length > 0) { + const monitorIDs = monitorData.map(monitor => monitor.id); + const notifications = await Monitor.getMonitorNotification(monitorIDs); + const tags = await Monitor.getMonitorTag(monitorIDs); + const maintenanceStatuses = await Promise.all(monitorData.map(monitor => Monitor.isUnderMaintenance(monitor.id))); + const childrenIDs = await Promise.all(monitorData.map(monitor => Monitor.getAllChildrenIDs(monitor.id))); + const activeStatuses = await Promise.all(monitorData.map(monitor => Monitor.isActive(monitor.id, monitor.active))); + const forceInactiveStatuses = await Promise.all(monitorData.map(monitor => Monitor.isParentActive(monitor.id))); + const paths = await Promise.all(monitorData.map(monitor => Monitor.getAllPath(monitor.id, monitor.name))); + + notifications.forEach(row => { + if (!notificationsMap.has(row.monitor_id)) { + notificationsMap.set(row.monitor_id, {}); + } + notificationsMap.get(row.monitor_id)[row.notification_id] = true; + }); + + tags.forEach(row => { + if (!tagsMap.has(row.monitor_id)) { + tagsMap.set(row.monitor_id, []); + } + tagsMap.get(row.monitor_id).push({ + tag_id: row.tag_id, + name: row.name, + color: row.color + }); + }); + + monitorData.forEach((monitor, index) => { + maintenanceStatusMap.set(monitor.id, maintenanceStatuses[index]); + }); + + monitorData.forEach((monitor, index) => { + childrenIDsMap.set(monitor.id, childrenIDs[index]); + }); + + monitorData.forEach((monitor, index) => { + activeStatusMap.set(monitor.id, activeStatuses[index]); + }); + + monitorData.forEach((monitor, index) => { + forceInactiveMap.set(monitor.id, !forceInactiveStatuses[index]); + }); + + monitorData.forEach((monitor, index) => { + pathsMap.set(monitor.id, paths[index]); + }); + } + + return { + notifications: notificationsMap, + tags: tagsMap, + maintenanceStatus: maintenanceStatusMap, + childrenIDs: childrenIDsMap, + activeStatus: activeStatusMap, + forceInactive: forceInactiveMap, + paths: pathsMap, + }; + } + + /** + * Gets Parent of the monitor + * @param {number} monitorID ID of monitor to get + * @returns {Promise>} Parent + */ + static async getParent(monitorID) { + return await R.getRow(` + SELECT parent.* FROM monitor parent + LEFT JOIN monitor child + ON child.parent = parent.id + WHERE child.id = ? + `, [ + monitorID, + ]); + } + + /** + * Gets all Children of the monitor + * @param {number} monitorID ID of monitor to get + * @returns {Promise>} Children + */ + static async getChildren(monitorID) { + return await R.getAll(` + SELECT * FROM monitor + WHERE parent = ? + `, [ + monitorID, + ]); + } + + /** + * Gets the full path + * @param {number} monitorID ID of the monitor to get + * @param {string} name of the monitor to get + * @returns {Promise} Full path (includes groups and the name) of the monitor + */ + static async getAllPath(monitorID, name) { + const path = [ name ]; + + if (this.parent === null) { + return path; + } + + let parent = await Monitor.getParent(monitorID); + while (parent !== null) { + path.unshift(parent.name); + parent = await Monitor.getParent(parent.id); + } + + return path; + } + + /** + * Gets recursive all child ids + * @param {number} monitorID ID of the monitor to get + * @returns {Promise} IDs of all children + */ + static async getAllChildrenIDs(monitorID) { + const childs = await Monitor.getChildren(monitorID); + + if (childs === null) { + return []; + } + + let childrenIDs = []; + + for (const child of childs) { + childrenIDs.push(child.id); + childrenIDs = childrenIDs.concat(await Monitor.getAllChildrenIDs(child.id)); + } + + return childrenIDs; + } + + /** + * Unlinks all children of the group monitor + * @param {number} groupID ID of group to remove children of + * @returns {Promise} + */ + static async unlinkAllChildren(groupID) { + return await R.exec("UPDATE `monitor` SET parent = ? WHERE parent = ? ", [ + null, groupID + ]); + } + + /** + * Checks recursive if parent (ancestors) are active + * @param {number} monitorID ID of the monitor to get + * @returns {Promise} Is the parent monitor active? + */ + static async isParentActive(monitorID) { + const parent = await Monitor.getParent(monitorID); + + if (parent === null) { + return true; + } + + const parentActive = await Monitor.isParentActive(parent.id); + return parent.active && parentActive; + } + + /** + * Obtains a new Oidc Token + * @returns {Promise} OAuthProvider client + */ + async makeOidcTokenClientCredentialsRequest() { + log.debug("monitor", `[${this.name}] The oauth access-token undefined or expired. Requesting a new token`); + const oAuthAccessToken = await getOidcTokenClientCredentials(this.oauth_token_url, this.oauth_client_id, this.oauth_client_secret, this.oauth_scopes, this.oauth_auth_method); + if (this.oauthAccessToken?.expires_at) { + log.debug("monitor", `[${this.name}] Obtained oauth access-token. Expires at ${new Date(this.oauthAccessToken?.expires_at * 1000)}`); + } else { + log.debug("monitor", `[${this.name}] Obtained oauth access-token. Time until expiry was not provided`); + } + + return oAuthAccessToken; + } + + /** + * Store TLS certificate information and check for expiry + * @param {object} tlsInfo Information about the TLS connection + * @returns {Promise} + */ + async handleTlsInfo(tlsInfo) { + await this.updateTlsInfo(tlsInfo); + this.prometheus?.update(null, tlsInfo); + + if (!this.getIgnoreTls() && this.isEnabledExpiryNotification()) { + log.debug("monitor", `[${this.name}] call checkCertExpiryNotifications`); + await this.checkCertExpiryNotifications(tlsInfo); + } + } +} + +module.exports = Monitor; diff --git a/server/notification-providers/serverchan.js b/server/notification-providers/serverchan.js index ab9308c3e..19fa5a414 100644 --- a/server/notification-providers/serverchan.js +++ b/server/notification-providers/serverchan.js @@ -1,50 +1,50 @@ -const NotificationProvider = require("./notification-provider"); -const axios = require("axios"); -const { DOWN, UP } = require("../../src/util"); - -class ServerChan extends NotificationProvider { - name = "ServerChan"; - - /** - * @inheritdoc - */ - async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { - const okMsg = "Sent Successfully."; - - // serverchan3 requires sending via ft07.com - const url = String(notification.serverChanSendKey).startsWith("sctp") - ? `https://${notification.serverChanSendKey}.push.ft07.com/send` - : `https://sctapi.ftqq.com/${notification.serverChanSendKey}.send`; - - try { - await axios.post(url, { - "title": this.checkStatus(heartbeatJSON, monitorJSON), - "desp": msg, - }); - - return okMsg; - - } catch (error) { - this.throwGeneralAxiosError(error); - } - } - - /** - * Get the formatted title for message - * @param {?object} heartbeatJSON Heartbeat details (For Up/Down only) - * @param {?object} monitorJSON Monitor details (For Up/Down only) - * @returns {string} Formatted title - */ - checkStatus(heartbeatJSON, monitorJSON) { - let title = "UptimeKuma Message"; - if (heartbeatJSON != null && heartbeatJSON["status"] === UP) { - title = "UptimeKuma Monitor Up " + monitorJSON["name"]; - } - if (heartbeatJSON != null && heartbeatJSON["status"] === DOWN) { - title = "UptimeKuma Monitor Down " + monitorJSON["name"]; - } - return title; - } -} - -module.exports = ServerChan; +const NotificationProvider = require("./notification-provider"); +const axios = require("axios"); +const { DOWN, UP } = require("../../src/util"); + +class ServerChan extends NotificationProvider { + name = "ServerChan"; + + /** + * @inheritdoc + */ + async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { + const okMsg = "Sent Successfully."; + + // serverchan3 requires sending via ft07.com + const url = String(notification.serverChanSendKey).startsWith("sctp") + ? `https://${notification.serverChanSendKey}.push.ft07.com/send` + : `https://sctapi.ftqq.com/${notification.serverChanSendKey}.send`; + + try { + await axios.post(url, { + "title": this.checkStatus(heartbeatJSON, monitorJSON), + "desp": msg, + }); + + return okMsg; + + } catch (error) { + this.throwGeneralAxiosError(error); + } + } + + /** + * Get the formatted title for message + * @param {?object} heartbeatJSON Heartbeat details (For Up/Down only) + * @param {?object} monitorJSON Monitor details (For Up/Down only) + * @returns {string} Formatted title + */ + checkStatus(heartbeatJSON, monitorJSON) { + let title = "UptimeKuma Message"; + if (heartbeatJSON != null && heartbeatJSON["status"] === UP) { + title = "UptimeKuma Monitor Up " + monitorJSON["name"]; + } + if (heartbeatJSON != null && heartbeatJSON["status"] === DOWN) { + title = "UptimeKuma Monitor Down " + monitorJSON["name"]; + } + return title; + } +} + +module.exports = ServerChan; diff --git a/server/server.js b/server/server.js index db58ae829..561ff6d80 100644 --- a/server/server.js +++ b/server/server.js @@ -1,1866 +1,1866 @@ -/* - * Uptime Kuma Server - * node "server/server.js" - * DO NOT require("./server") in other modules, it likely creates circular dependency! - */ -console.log("Welcome to Uptime Kuma"); - -// As the log function need to use dayjs, it should be very top -const dayjs = require("dayjs"); -dayjs.extend(require("dayjs/plugin/utc")); -dayjs.extend(require("./modules/dayjs/plugin/timezone")); -dayjs.extend(require("dayjs/plugin/customParseFormat")); - -// Load environment variables from `.env` -require("dotenv").config(); - -// Check Node.js Version -const nodeVersion = process.versions.node; - -// Get the required Node.js version from package.json -const requiredNodeVersions = require("../package.json").engines.node; -const bannedNodeVersions = " < 18 || 20.0.* || 20.1.* || 20.2.* || 20.3.* "; -console.log(`Your Node.js version: ${nodeVersion}`); - -const semver = require("semver"); -const requiredNodeVersionsComma = requiredNodeVersions.split("||").map((version) => version.trim()).join(", "); - -// Exit Uptime Kuma immediately if the Node.js version is banned -if (semver.satisfies(nodeVersion, bannedNodeVersions)) { - console.error("\x1b[31m%s\x1b[0m", `Error: Your Node.js version: ${nodeVersion} is not supported, please upgrade your Node.js to ${requiredNodeVersionsComma}.`); - process.exit(-1); -} - -// Warning if the Node.js version is not in the support list, but it maybe still works -if (!semver.satisfies(nodeVersion, requiredNodeVersions)) { - console.warn("\x1b[31m%s\x1b[0m", `Warning: Your Node.js version: ${nodeVersion} is not officially supported, please upgrade your Node.js to ${requiredNodeVersionsComma}.`); -} - -const args = require("args-parser")(process.argv); -const { sleep, log, getRandomInt, genSecret, isDev } = require("../src/util"); -const config = require("./config"); - -log.debug("server", "Arguments"); -log.debug("server", args); - -if (! process.env.NODE_ENV) { - process.env.NODE_ENV = "production"; -} - -if (!process.env.UPTIME_KUMA_WS_ORIGIN_CHECK) { - process.env.UPTIME_KUMA_WS_ORIGIN_CHECK = "cors-like"; -} - -log.info("server", "Env: " + process.env.NODE_ENV); -log.debug("server", "Inside Container: " + (process.env.UPTIME_KUMA_IS_CONTAINER === "1")); - -if (process.env.UPTIME_KUMA_WS_ORIGIN_CHECK === "bypass") { - log.warn("server", "WebSocket Origin Check: " + process.env.UPTIME_KUMA_WS_ORIGIN_CHECK); -} - -const checkVersion = require("./check-version"); -log.info("server", "Uptime Kuma Version: " + checkVersion.version); - -log.info("server", "Loading modules"); - -log.debug("server", "Importing express"); -const express = require("express"); -const expressStaticGzip = require("express-static-gzip"); -log.debug("server", "Importing redbean-node"); -const { R } = require("redbean-node"); -log.debug("server", "Importing jsonwebtoken"); -const jwt = require("jsonwebtoken"); -log.debug("server", "Importing http-graceful-shutdown"); -const gracefulShutdown = require("http-graceful-shutdown"); -log.debug("server", "Importing prometheus-api-metrics"); -const prometheusAPIMetrics = require("prometheus-api-metrics"); -const { passwordStrength } = require("check-password-strength"); - -log.debug("server", "Importing 2FA Modules"); -const notp = require("notp"); -const base32 = require("thirty-two"); - -const { UptimeKumaServer } = require("./uptime-kuma-server"); -const server = UptimeKumaServer.getInstance(); -const io = module.exports.io = server.io; -const app = server.app; - -log.debug("server", "Importing Monitor"); -const Monitor = require("./model/monitor"); -const User = require("./model/user"); - -log.debug("server", "Importing Settings"); -const { getSettings, setSettings, setting, initJWTSecret, checkLogin, doubleCheckPassword, shake256, SHAKE256_LENGTH, allowDevAllOrigin, -} = require("./util-server"); - -log.debug("server", "Importing Notification"); -const { Notification } = require("./notification"); -Notification.init(); - -log.debug("server", "Importing Database"); -const Database = require("./database"); - -log.debug("server", "Importing Background Jobs"); -const { initBackgroundJobs, stopBackgroundJobs } = require("./jobs"); -const { loginRateLimiter, twoFaRateLimiter } = require("./rate-limiter"); - -const { apiAuth } = require("./auth"); -const { login } = require("./auth"); -const passwordHash = require("./password-hash"); - -const hostname = config.hostname; - -if (hostname) { - log.info("server", "Custom hostname: " + hostname); -} - -const port = config.port; - -const disableFrameSameOrigin = !!process.env.UPTIME_KUMA_DISABLE_FRAME_SAMEORIGIN || args["disable-frame-sameorigin"] || false; -const cloudflaredToken = args["cloudflared-token"] || process.env.UPTIME_KUMA_CLOUDFLARED_TOKEN || undefined; - -// 2FA / notp verification defaults -const twoFAVerifyOptions = { - "window": 1, - "time": 30 -}; - -/** - * Run unit test after the server is ready - * @type {boolean} - */ -const testMode = !!args["test"] || false; - -// Must be after io instantiation -const { sendNotificationList, sendHeartbeatList, sendInfo, sendProxyList, sendDockerHostList, sendAPIKeyList, sendRemoteBrowserList, sendMonitorTypeList } = require("./client"); -const { statusPageSocketHandler } = require("./socket-handlers/status-page-socket-handler"); -const { databaseSocketHandler } = require("./socket-handlers/database-socket-handler"); -const { remoteBrowserSocketHandler } = require("./socket-handlers/remote-browser-socket-handler"); -const TwoFA = require("./2fa"); -const StatusPage = require("./model/status_page"); -const { cloudflaredSocketHandler, autoStart: cloudflaredAutoStart, stop: cloudflaredStop } = require("./socket-handlers/cloudflared-socket-handler"); -const { proxySocketHandler } = require("./socket-handlers/proxy-socket-handler"); -const { dockerSocketHandler } = require("./socket-handlers/docker-socket-handler"); -const { maintenanceSocketHandler } = require("./socket-handlers/maintenance-socket-handler"); -const { apiKeySocketHandler } = require("./socket-handlers/api-key-socket-handler"); -const { generalSocketHandler } = require("./socket-handlers/general-socket-handler"); -const { Settings } = require("./settings"); -const apicache = require("./modules/apicache"); -const { resetChrome } = require("./monitor-types/real-browser-monitor-type"); -const { EmbeddedMariaDB } = require("./embedded-mariadb"); -const { SetupDatabase } = require("./setup-database"); -const { chartSocketHandler } = require("./socket-handlers/chart-socket-handler"); - -app.use(express.json()); - -// Global Middleware -app.use(function (req, res, next) { - if (!disableFrameSameOrigin) { - res.setHeader("X-Frame-Options", "SAMEORIGIN"); - } - res.removeHeader("X-Powered-By"); - next(); -}); - -/** - * Show Setup Page - * @type {boolean} - */ -let needSetup = false; - -(async () => { - // Create a data directory - Database.initDataDir(args); - - // Check if is chosen a database type - let setupDatabase = new SetupDatabase(args, server); - if (setupDatabase.isNeedSetup()) { - // Hold here and start a special setup page until user choose a database type - await setupDatabase.start(hostname, port); - } - - // Connect to database - try { - await initDatabase(testMode); - } catch (e) { - log.error("server", "Failed to prepare your database: " + e.message); - process.exit(1); - } - - // Database should be ready now - await server.initAfterDatabaseReady(); - server.entryPage = await Settings.get("entryPage"); - await StatusPage.loadDomainMappingList(); - - log.debug("server", "Adding route"); - - // *************************** - // Normal Router here - // *************************** - - // Entry Page - app.get("/", async (request, response) => { - let hostname = request.hostname; - if (await setting("trustProxy")) { - const proxy = request.headers["x-forwarded-host"]; - if (proxy) { - hostname = proxy; - } - } - - log.debug("entry", `Request Domain: ${hostname}`); - - const uptimeKumaEntryPage = server.entryPage; - if (hostname in StatusPage.domainMappingList) { - log.debug("entry", "This is a status page domain"); - - let slug = StatusPage.domainMappingList[hostname]; - await StatusPage.handleStatusPageResponse(response, server.indexHTML, slug); - - } else if (uptimeKumaEntryPage && uptimeKumaEntryPage.startsWith("statusPage-")) { - response.redirect("/status/" + uptimeKumaEntryPage.replace("statusPage-", "")); - - } else { - response.redirect("/dashboard"); - } - }); - - app.get("/setup-database-info", (request, response) => { - allowDevAllOrigin(response); - response.json({ - runningSetup: false, - needSetup: false, - }); - }); - - if (isDev) { - app.use(express.urlencoded({ extended: true })); - app.post("/test-webhook", async (request, response) => { - log.debug("test", request.headers); - log.debug("test", request.body); - response.send("OK"); - }); - - app.post("/test-x-www-form-urlencoded", async (request, response) => { - log.debug("test", request.headers); - log.debug("test", request.body); - response.send("OK"); - }); - - const fs = require("fs"); - - app.get("/_e2e/take-sqlite-snapshot", async (request, response) => { - await Database.close(); - try { - fs.cpSync(Database.sqlitePath, `${Database.sqlitePath}.e2e-snapshot`); - } catch (err) { - throw new Error("Unable to copy SQLite DB."); - } - await Database.connect(); - - response.send("Snapshot taken."); - }); - - app.get("/_e2e/restore-sqlite-snapshot", async (request, response) => { - if (!fs.existsSync(`${Database.sqlitePath}.e2e-snapshot`)) { - throw new Error("Snapshot doesn't exist."); - } - - await Database.close(); - try { - fs.cpSync(`${Database.sqlitePath}.e2e-snapshot`, Database.sqlitePath); - } catch (err) { - throw new Error("Unable to copy snapshot file."); - } - await Database.connect(); - - response.send("Snapshot restored."); - }); - } - - // Robots.txt - app.get("/robots.txt", async (_request, response) => { - let txt = "User-agent: *\nDisallow:"; - if (!await setting("searchEngineIndex")) { - txt += " /"; - } - response.setHeader("Content-Type", "text/plain"); - response.send(txt); - }); - - // Basic Auth Router here - - // Prometheus API metrics /metrics - // With Basic Auth using the first user's username/password - app.get("/metrics", apiAuth, prometheusAPIMetrics()); - - app.use("/", expressStaticGzip("dist", { - enableBrotli: true, - })); - - // ./data/upload - app.use("/upload", express.static(Database.uploadDir)); - - app.get("/.well-known/change-password", async (_, response) => { - response.redirect("https://github.com/louislam/uptime-kuma/wiki/Reset-Password-via-CLI"); - }); - - // API Router - const apiRouter = require("./routers/api-router"); - app.use(apiRouter); - - // Status Page Router - const statusPageRouter = require("./routers/status-page-router"); - app.use(statusPageRouter); - - // Universal Route Handler, must be at the end of all express routes. - app.get("*", async (_request, response) => { - if (_request.originalUrl.startsWith("/upload/")) { - response.status(404).send("File not found."); - } else { - response.send(server.indexHTML); - } - }); - - log.debug("server", "Adding socket handler"); - io.on("connection", async (socket) => { - - await sendInfo(socket, true); - - if (needSetup) { - log.info("server", "Redirect to setup page"); - socket.emit("setup"); - } - - // *************************** - // Public Socket API - // *************************** - - socket.on("loginByToken", async (token, callback) => { - const clientIP = await server.getClientIP(socket); - - log.info("auth", `Login by token. IP=${clientIP}`); - - try { - let decoded = jwt.verify(token, server.jwtSecret); - - log.info("auth", "Username from JWT: " + decoded.username); - - let user = await R.findOne("user", " username = ? AND active = 1 ", [ - decoded.username, - ]); - - if (user) { - // Check if the password changed - if (decoded.h !== shake256(user.password, SHAKE256_LENGTH)) { - throw new Error("The token is invalid due to password change or old token"); - } - - log.debug("auth", "afterLogin"); - await afterLogin(socket, user); - log.debug("auth", "afterLogin ok"); - - log.info("auth", `Successfully logged in user ${decoded.username}. IP=${clientIP}`); - - callback({ - ok: true, - }); - } else { - - log.info("auth", `Inactive or deleted user ${decoded.username}. IP=${clientIP}`); - - callback({ - ok: false, - msg: "authUserInactiveOrDeleted", - msgi18n: true, - }); - } - } catch (error) { - log.error("auth", `Invalid token. IP=${clientIP}`); - if (error.message) { - log.error("auth", error.message, `IP=${clientIP}`); - } - callback({ - ok: false, - msg: "authInvalidToken", - msgi18n: true, - }); - } - - }); - - socket.on("login", async (data, callback) => { - const clientIP = await server.getClientIP(socket); - - log.info("auth", `Login by username + password. IP=${clientIP}`); - - // Checking - if (typeof callback !== "function") { - return; - } - - if (!data) { - return; - } - - // Login Rate Limit - if (!await loginRateLimiter.pass(callback)) { - log.info("auth", `Too many failed requests for user ${data.username}. IP=${clientIP}`); - return; - } - - let user = await login(data.username, data.password); - - if (user) { - if (user.twofa_status === 0) { - await afterLogin(socket, user); - - log.info("auth", `Successfully logged in user ${data.username}. IP=${clientIP}`); - - callback({ - ok: true, - token: User.createJWT(user, server.jwtSecret), - }); - } - - if (user.twofa_status === 1 && !data.token) { - - log.info("auth", `2FA token required for user ${data.username}. IP=${clientIP}`); - - callback({ - tokenRequired: true, - }); - } - - if (data.token) { - let verify = notp.totp.verify(data.token, user.twofa_secret, twoFAVerifyOptions); - - if (user.twofa_last_token !== data.token && verify) { - await afterLogin(socket, user); - - await R.exec("UPDATE `user` SET twofa_last_token = ? WHERE id = ? ", [ - data.token, - socket.userID, - ]); - - log.info("auth", `Successfully logged in user ${data.username}. IP=${clientIP}`); - - callback({ - ok: true, - token: User.createJWT(user, server.jwtSecret), - }); - } else { - - log.warn("auth", `Invalid token provided for user ${data.username}. IP=${clientIP}`); - - callback({ - ok: false, - msg: "authInvalidToken", - msgi18n: true, - }); - } - } - } else { - - log.warn("auth", `Incorrect username or password for user ${data.username}. IP=${clientIP}`); - - callback({ - ok: false, - msg: "authIncorrectCreds", - msgi18n: true, - }); - } - - }); - - socket.on("logout", async (callback) => { - // Rate Limit - if (!await loginRateLimiter.pass(callback)) { - return; - } - - socket.leave(socket.userID); - socket.userID = null; - - if (typeof callback === "function") { - callback(); - } - }); - - socket.on("prepare2FA", async (currentPassword, callback) => { - try { - if (!await twoFaRateLimiter.pass(callback)) { - return; - } - - checkLogin(socket); - await doubleCheckPassword(socket, currentPassword); - - let user = await R.findOne("user", " id = ? AND active = 1 ", [ - socket.userID, - ]); - - if (user.twofa_status === 0) { - let newSecret = genSecret(); - let encodedSecret = base32.encode(newSecret); - - // Google authenticator doesn't like equal signs - // The fix is found at https://github.com/guyht/notp - // Related issue: https://github.com/louislam/uptime-kuma/issues/486 - encodedSecret = encodedSecret.toString().replace(/=/g, ""); - - let uri = `otpauth://totp/Uptime%20Kuma:${user.username}?secret=${encodedSecret}`; - - await R.exec("UPDATE `user` SET twofa_secret = ? WHERE id = ? ", [ - newSecret, - socket.userID, - ]); - - callback({ - ok: true, - uri: uri, - }); - } else { - callback({ - ok: false, - msg: "2faAlreadyEnabled", - msgi18n: true, - }); - } - } catch (error) { - callback({ - ok: false, - msg: error.message, - }); - } - }); - - socket.on("save2FA", async (currentPassword, callback) => { - const clientIP = await server.getClientIP(socket); - - try { - if (!await twoFaRateLimiter.pass(callback)) { - return; - } - - checkLogin(socket); - await doubleCheckPassword(socket, currentPassword); - - await R.exec("UPDATE `user` SET twofa_status = 1 WHERE id = ? ", [ - socket.userID, - ]); - - log.info("auth", `Saved 2FA token. IP=${clientIP}`); - - callback({ - ok: true, - msg: "2faEnabled", - msgi18n: true, - }); - } catch (error) { - - log.error("auth", `Error changing 2FA token. IP=${clientIP}`); - - callback({ - ok: false, - msg: error.message, - }); - } - }); - - socket.on("disable2FA", async (currentPassword, callback) => { - const clientIP = await server.getClientIP(socket); - - try { - if (!await twoFaRateLimiter.pass(callback)) { - return; - } - - checkLogin(socket); - await doubleCheckPassword(socket, currentPassword); - await TwoFA.disable2FA(socket.userID); - - log.info("auth", `Disabled 2FA token. IP=${clientIP}`); - - callback({ - ok: true, - msg: "2faDisabled", - msgi18n: true, - }); - } catch (error) { - - log.error("auth", `Error disabling 2FA token. IP=${clientIP}`); - - callback({ - ok: false, - msg: error.message, - }); - } - }); - - socket.on("verifyToken", async (token, currentPassword, callback) => { - try { - checkLogin(socket); - await doubleCheckPassword(socket, currentPassword); - - let user = await R.findOne("user", " id = ? AND active = 1 ", [ - socket.userID, - ]); - - let verify = notp.totp.verify(token, user.twofa_secret, twoFAVerifyOptions); - - if (user.twofa_last_token !== token && verify) { - callback({ - ok: true, - valid: true, - }); - } else { - callback({ - ok: false, - msg: "authInvalidToken", - msgi18n: true, - valid: false, - }); - } - - } catch (error) { - callback({ - ok: false, - msg: error.message, - }); - } - }); - - socket.on("twoFAStatus", async (callback) => { - try { - checkLogin(socket); - - let user = await R.findOne("user", " id = ? AND active = 1 ", [ - socket.userID, - ]); - - if (user.twofa_status === 1) { - callback({ - ok: true, - status: true, - }); - } else { - callback({ - ok: true, - status: false, - }); - } - } catch (error) { - callback({ - ok: false, - msg: error.message, - }); - } - }); - - socket.on("needSetup", async (callback) => { - callback(needSetup); - }); - - socket.on("setup", async (username, password, callback) => { - try { - if (passwordStrength(password).value === "Too weak") { - throw new Error("Password is too weak. It should contain alphabetic and numeric characters. It must be at least 6 characters in length."); - } - - if ((await R.knex("user").count("id as count").first()).count !== 0) { - throw new Error("Uptime Kuma has been initialized. If you want to run setup again, please delete the database."); - } - - let user = R.dispense("user"); - user.username = username; - user.password = passwordHash.generate(password); - await R.store(user); - - needSetup = false; - - callback({ - ok: true, - msg: "successAdded", - msgi18n: true, - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - // *************************** - // Auth Only API - // *************************** - - // Add a new monitor - socket.on("add", async (monitor, callback) => { - try { - checkLogin(socket); - let bean = R.dispense("monitor"); - - let notificationIDList = monitor.notificationIDList; - delete monitor.notificationIDList; - - // Ensure status code ranges are strings - if (!monitor.accepted_statuscodes.every((code) => typeof code === "string")) { - throw new Error("Accepted status codes are not all strings"); - } - monitor.accepted_statuscodes_json = JSON.stringify(monitor.accepted_statuscodes); - delete monitor.accepted_statuscodes; - - monitor.kafkaProducerBrokers = JSON.stringify(monitor.kafkaProducerBrokers); - monitor.kafkaProducerSaslOptions = JSON.stringify(monitor.kafkaProducerSaslOptions); - - monitor.conditions = JSON.stringify(monitor.conditions); - - bean.import(monitor); - bean.user_id = socket.userID; - - bean.validate(); - - await R.store(bean); - - await updateMonitorNotification(bean.id, notificationIDList); - - await server.sendUpdateMonitorIntoList(socket, bean.id); - - if (monitor.active !== false) { - await startMonitor(socket.userID, bean.id); - } - - log.info("monitor", `Added Monitor: ${bean.id} User ID: ${socket.userID}`); - - callback({ - ok: true, - msg: "successAdded", - msgi18n: true, - monitorID: bean.id, - }); - - } catch (e) { - - log.error("monitor", `Error adding Monitor: ${monitor.id} User ID: ${socket.userID}`); - - callback({ - ok: false, - msg: e.message, - }); - } - }); - - // Edit a monitor - socket.on("editMonitor", async (monitor, callback) => { - try { - let removeGroupChildren = false; - checkLogin(socket); - - let bean = await R.findOne("monitor", " id = ? ", [ monitor.id ]); - - if (bean.user_id !== socket.userID) { - throw new Error("Permission denied."); - } - - // Check if Parent is Descendant (would cause endless loop) - if (monitor.parent !== null) { - const childIDs = await Monitor.getAllChildrenIDs(monitor.id); - if (childIDs.includes(monitor.parent)) { - throw new Error("Invalid Monitor Group"); - } - } - - // Remove children if monitor type has changed (from group to non-group) - if (bean.type === "group" && monitor.type !== bean.type) { - removeGroupChildren = true; - } - - // Ensure status code ranges are strings - if (!monitor.accepted_statuscodes.every((code) => typeof code === "string")) { - throw new Error("Accepted status codes are not all strings"); - } - - bean.name = monitor.name; - bean.description = monitor.description; - bean.parent = monitor.parent; - bean.type = monitor.type; - bean.url = monitor.url; - bean.method = monitor.method; - bean.body = monitor.body; - bean.headers = monitor.headers; - bean.basic_auth_user = monitor.basic_auth_user; - bean.basic_auth_pass = monitor.basic_auth_pass; - bean.timeout = monitor.timeout; - bean.oauth_client_id = monitor.oauth_client_id; - bean.oauth_client_secret = monitor.oauth_client_secret; - bean.oauth_auth_method = monitor.oauth_auth_method; - bean.oauth_token_url = monitor.oauth_token_url; - bean.oauth_scopes = monitor.oauth_scopes; - bean.tlsCa = monitor.tlsCa; - bean.tlsCert = monitor.tlsCert; - bean.tlsKey = monitor.tlsKey; - bean.interval = monitor.interval; - bean.retryInterval = monitor.retryInterval; - bean.resendInterval = monitor.resendInterval; - bean.hostname = monitor.hostname; - bean.game = monitor.game; - bean.maxretries = monitor.maxretries; - bean.port = parseInt(monitor.port); - - if (isNaN(bean.port)) { - bean.port = null; - } - - bean.keyword = monitor.keyword; - bean.invertKeyword = monitor.invertKeyword; - bean.ignoreTls = monitor.ignoreTls; - bean.expiryNotification = monitor.expiryNotification; - bean.upsideDown = monitor.upsideDown; - bean.packetSize = monitor.packetSize; - bean.maxredirects = monitor.maxredirects; - bean.accepted_statuscodes_json = JSON.stringify(monitor.accepted_statuscodes); - bean.dns_resolve_type = monitor.dns_resolve_type; - bean.dns_resolve_server = monitor.dns_resolve_server; - bean.pushToken = monitor.pushToken; - bean.docker_container = monitor.docker_container; - bean.docker_host = monitor.docker_host; - bean.proxyId = Number.isInteger(monitor.proxyId) ? monitor.proxyId : null; - bean.mqttUsername = monitor.mqttUsername; - bean.mqttPassword = monitor.mqttPassword; - bean.mqttTopic = monitor.mqttTopic; - bean.mqttSuccessMessage = monitor.mqttSuccessMessage; - bean.mqttCheckType = monitor.mqttCheckType; - bean.databaseConnectionString = monitor.databaseConnectionString; - bean.databaseQuery = monitor.databaseQuery; - bean.authMethod = monitor.authMethod; - bean.authWorkstation = monitor.authWorkstation; - bean.authDomain = monitor.authDomain; - bean.grpcUrl = monitor.grpcUrl; - bean.grpcProtobuf = monitor.grpcProtobuf; - bean.grpcServiceName = monitor.grpcServiceName; - bean.grpcMethod = monitor.grpcMethod; - bean.grpcBody = monitor.grpcBody; - bean.grpcMetadata = monitor.grpcMetadata; - bean.grpcEnableTls = monitor.grpcEnableTls; - bean.radiusUsername = monitor.radiusUsername; - bean.radiusPassword = monitor.radiusPassword; - bean.radiusCalledStationId = monitor.radiusCalledStationId; - bean.radiusCallingStationId = monitor.radiusCallingStationId; - bean.radiusSecret = monitor.radiusSecret; - bean.httpBodyEncoding = monitor.httpBodyEncoding; - bean.expectedValue = monitor.expectedValue; - bean.jsonPath = monitor.jsonPath; - bean.kafkaProducerTopic = monitor.kafkaProducerTopic; - bean.kafkaProducerBrokers = JSON.stringify(monitor.kafkaProducerBrokers); - bean.kafkaProducerAllowAutoTopicCreation = monitor.kafkaProducerAllowAutoTopicCreation; - bean.kafkaProducerSaslOptions = JSON.stringify(monitor.kafkaProducerSaslOptions); - bean.kafkaProducerMessage = monitor.kafkaProducerMessage; - bean.cacheBust = monitor.cacheBust; - bean.kafkaProducerSsl = monitor.kafkaProducerSsl; - bean.kafkaProducerAllowAutoTopicCreation = - monitor.kafkaProducerAllowAutoTopicCreation; - bean.gamedigGivenPortOnly = monitor.gamedigGivenPortOnly; - bean.remote_browser = monitor.remote_browser; - bean.snmpVersion = monitor.snmpVersion; - bean.snmpOid = monitor.snmpOid; - bean.jsonPathOperator = monitor.jsonPathOperator; - bean.timeout = monitor.timeout; - bean.conditions = JSON.stringify(monitor.conditions); - - bean.validate(); - - await R.store(bean); - - if (removeGroupChildren) { - await Monitor.unlinkAllChildren(monitor.id); - } - - await updateMonitorNotification(bean.id, monitor.notificationIDList); - - if (await Monitor.isActive(bean.id, bean.active)) { - await restartMonitor(socket.userID, bean.id); - } - - await server.sendUpdateMonitorIntoList(socket, bean.id); - - callback({ - ok: true, - msg: "Saved.", - msgi18n: true, - monitorID: bean.id, - }); - - } catch (e) { - log.error("monitor", e); - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("getMonitorList", async (callback) => { - try { - checkLogin(socket); - await server.sendMonitorList(socket); - callback({ - ok: true, - }); - } catch (e) { - log.error("monitor", e); - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("getMonitor", async (monitorID, callback) => { - try { - checkLogin(socket); - - log.info("monitor", `Get Monitor: ${monitorID} User ID: ${socket.userID}`); - - let monitor = await R.findOne("monitor", " id = ? AND user_id = ? ", [ - monitorID, - socket.userID, - ]); - const monitorData = [{ id: monitor.id, - active: monitor.active - }]; - const preloadData = await Monitor.preparePreloadData(monitorData); - callback({ - ok: true, - monitor: monitor.toJSON(preloadData), - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("getMonitorBeats", async (monitorID, period, callback) => { - try { - checkLogin(socket); - - log.info("monitor", `Get Monitor Beats: ${monitorID} User ID: ${socket.userID}`); - - if (period == null) { - throw new Error("Invalid period."); - } - - const sqlHourOffset = Database.sqlHourOffset(); - - let list = await R.getAll(` - SELECT * - FROM heartbeat - WHERE monitor_id = ? - AND time > ${sqlHourOffset} - ORDER BY time ASC - `, [ - monitorID, - -period, - ]); - - callback({ - ok: true, - data: list, - }); - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - // Start or Resume the monitor - socket.on("resumeMonitor", async (monitorID, callback) => { - try { - checkLogin(socket); - await startMonitor(socket.userID, monitorID); - await server.sendUpdateMonitorIntoList(socket, monitorID); - - callback({ - ok: true, - msg: "successResumed", - msgi18n: true, - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("pauseMonitor", async (monitorID, callback) => { - try { - checkLogin(socket); - await pauseMonitor(socket.userID, monitorID); - await server.sendUpdateMonitorIntoList(socket, monitorID); - - callback({ - ok: true, - msg: "successPaused", - msgi18n: true, - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("deleteMonitor", async (monitorID, callback) => { - try { - checkLogin(socket); - - log.info("manage", `Delete Monitor: ${monitorID} User ID: ${socket.userID}`); - - if (monitorID in server.monitorList) { - await server.monitorList[monitorID].stop(); - delete server.monitorList[monitorID]; - } - - const startTime = Date.now(); - - await R.exec("DELETE FROM monitor WHERE id = ? AND user_id = ? ", [ - monitorID, - socket.userID, - ]); - - // Fix #2880 - apicache.clear(); - - const endTime = Date.now(); - - log.info("DB", `Delete Monitor completed in : ${endTime - startTime} ms`); - - callback({ - ok: true, - msg: "successDeleted", - msgi18n: true, - }); - await server.sendDeleteMonitorFromList(socket, monitorID); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("getTags", async (callback) => { - try { - checkLogin(socket); - - const list = await R.findAll("tag"); - - callback({ - ok: true, - tags: list.map(bean => bean.toJSON()), - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("addTag", async (tag, callback) => { - try { - checkLogin(socket); - - let bean = R.dispense("tag"); - bean.name = tag.name; - bean.color = tag.color; - await R.store(bean); - - callback({ - ok: true, - tag: await bean.toJSON(), - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("editTag", async (tag, callback) => { - try { - checkLogin(socket); - - let bean = await R.findOne("tag", " id = ? ", [ tag.id ]); - if (bean == null) { - callback({ - ok: false, - msg: "tagNotFound", - msgi18n: true, - }); - return; - } - bean.name = tag.name; - bean.color = tag.color; - await R.store(bean); - - callback({ - ok: true, - msg: "Saved.", - msgi18n: true, - tag: await bean.toJSON(), - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("deleteTag", async (tagID, callback) => { - try { - checkLogin(socket); - - await R.exec("DELETE FROM tag WHERE id = ? ", [ tagID ]); - - callback({ - ok: true, - msg: "successDeleted", - msgi18n: true, - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("addMonitorTag", async (tagID, monitorID, value, callback) => { - try { - checkLogin(socket); - - await R.exec("INSERT INTO monitor_tag (tag_id, monitor_id, value) VALUES (?, ?, ?)", [ - tagID, - monitorID, - value, - ]); - - callback({ - ok: true, - msg: "successAdded", - msgi18n: true, - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("editMonitorTag", async (tagID, monitorID, value, callback) => { - try { - checkLogin(socket); - - await R.exec("UPDATE monitor_tag SET value = ? WHERE tag_id = ? AND monitor_id = ?", [ - value, - tagID, - monitorID, - ]); - - callback({ - ok: true, - msg: "successEdited", - msgi18n: true, - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("deleteMonitorTag", async (tagID, monitorID, value, callback) => { - try { - checkLogin(socket); - - await R.exec("DELETE FROM monitor_tag WHERE tag_id = ? AND monitor_id = ? AND value = ?", [ - tagID, - monitorID, - value, - ]); - - callback({ - ok: true, - msg: "successDeleted", - msgi18n: true, - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("monitorImportantHeartbeatListCount", async (monitorID, callback) => { - try { - checkLogin(socket); - - let count; - if (monitorID == null) { - count = await R.count("heartbeat", "important = 1"); - } else { - count = await R.count("heartbeat", "monitor_id = ? AND important = 1", [ - monitorID, - ]); - } - - callback({ - ok: true, - count: count, - }); - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("monitorImportantHeartbeatListPaged", async (monitorID, offset, count, callback) => { - try { - checkLogin(socket); - - let list; - if (monitorID == null) { - list = await R.find("heartbeat", ` - important = 1 - ORDER BY time DESC - LIMIT ? - OFFSET ? - `, [ - count, - offset, - ]); - } else { - list = await R.find("heartbeat", ` - monitor_id = ? - AND important = 1 - ORDER BY time DESC - LIMIT ? - OFFSET ? - `, [ - monitorID, - count, - offset, - ]); - } - - callback({ - ok: true, - data: list, - }); - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("changePassword", async (password, callback) => { - try { - checkLogin(socket); - - if (!password.newPassword) { - throw new Error("Invalid new password"); - } - - if (passwordStrength(password.newPassword).value === "Too weak") { - throw new Error("Password is too weak. It should contain alphabetic and numeric characters. It must be at least 6 characters in length."); - } - - let user = await doubleCheckPassword(socket, password.currentPassword); - await user.resetPassword(password.newPassword); - - server.disconnectAllSocketClients(user.id, socket.id); - - callback({ - ok: true, - token: User.createJWT(user, server.jwtSecret), - msg: "successAuthChangePassword", - msgi18n: true, - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("getSettings", async (callback) => { - try { - checkLogin(socket); - const data = await getSettings("general"); - - if (!data.serverTimezone) { - data.serverTimezone = await server.getTimezone(); - } - - callback({ - ok: true, - data: data, - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("setSettings", async (data, currentPassword, callback) => { - try { - checkLogin(socket); - - // If currently is disabled auth, don't need to check - // Disabled Auth + Want to Disable Auth => No Check - // Disabled Auth + Want to Enable Auth => No Check - // Enabled Auth + Want to Disable Auth => Check!! - // Enabled Auth + Want to Enable Auth => No Check - const currentDisabledAuth = await setting("disableAuth"); - if (!currentDisabledAuth && data.disableAuth) { - await doubleCheckPassword(socket, currentPassword); - } - - // Log out all clients if enabling auth - // GHSA-23q2-5gf8-gjpp - if (currentDisabledAuth && !data.disableAuth) { - server.disconnectAllSocketClients(socket.userID, socket.id); - } - - const previousChromeExecutable = await Settings.get("chromeExecutable"); - const previousNSCDStatus = await Settings.get("nscd"); - - await setSettings("general", data); - server.entryPage = data.entryPage; - - // Also need to apply timezone globally - if (data.serverTimezone) { - await server.setTimezone(data.serverTimezone); - } - - // If Chrome Executable is changed, need to reset the browser - if (previousChromeExecutable !== data.chromeExecutable) { - log.info("settings", "Chrome executable is changed. Resetting Chrome..."); - await resetChrome(); - } - - // Update nscd status - if (previousNSCDStatus !== data.nscd) { - if (data.nscd) { - await server.startNSCDServices(); - } else { - await server.stopNSCDServices(); - } - } - - callback({ - ok: true, - msg: "Saved.", - msgi18n: true, - }); - - await sendInfo(socket); - await server.sendMaintenanceList(socket); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - // Add or Edit - socket.on("addNotification", async (notification, notificationID, callback) => { - try { - checkLogin(socket); - - let notificationBean = await Notification.save(notification, notificationID, socket.userID); - await sendNotificationList(socket); - - callback({ - ok: true, - msg: "Saved.", - msgi18n: true, - id: notificationBean.id, - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("deleteNotification", async (notificationID, callback) => { - try { - checkLogin(socket); - - await Notification.delete(notificationID, socket.userID); - await sendNotificationList(socket); - - callback({ - ok: true, - msg: "successDeleted", - msgi18n: true, - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("testNotification", async (notification, callback) => { - try { - checkLogin(socket); - - let msg = await Notification.send(notification, notification.name + " Testing"); - - callback({ - ok: true, - msg, - }); - - } catch (e) { - console.error(e); - - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("checkApprise", async (callback) => { - try { - checkLogin(socket); - callback(Notification.checkApprise()); - } catch (e) { - callback(false); - } - }); - - socket.on("clearEvents", async (monitorID, callback) => { - try { - checkLogin(socket); - - log.info("manage", `Clear Events Monitor: ${monitorID} User ID: ${socket.userID}`); - - await R.exec("UPDATE heartbeat SET msg = ?, important = ? WHERE monitor_id = ? ", [ - "", - "0", - monitorID, - ]); - - callback({ - ok: true, - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("clearHeartbeats", async (monitorID, callback) => { - try { - checkLogin(socket); - - log.info("manage", `Clear Heartbeats Monitor: ${monitorID} User ID: ${socket.userID}`); - - await R.exec("DELETE FROM heartbeat WHERE monitor_id = ?", [ - monitorID - ]); - - await sendHeartbeatList(socket, monitorID, true, true); - - callback({ - ok: true, - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - socket.on("clearStatistics", async (callback) => { - try { - checkLogin(socket); - - log.info("manage", `Clear Statistics User ID: ${socket.userID}`); - - await R.exec("DELETE FROM heartbeat"); - await R.exec("DELETE FROM stat_daily"); - await R.exec("DELETE FROM stat_hourly"); - await R.exec("DELETE FROM stat_minutely"); - - // Restart all monitors to reset the stats - for (let monitorID in server.monitorList) { - await restartMonitor(socket.userID, monitorID); - } - - callback({ - ok: true, - }); - - } catch (e) { - callback({ - ok: false, - msg: e.message, - }); - } - }); - - // Status Page Socket Handler for admin only - statusPageSocketHandler(socket); - cloudflaredSocketHandler(socket); - databaseSocketHandler(socket); - proxySocketHandler(socket); - dockerSocketHandler(socket); - maintenanceSocketHandler(socket); - apiKeySocketHandler(socket); - remoteBrowserSocketHandler(socket); - generalSocketHandler(socket, server); - chartSocketHandler(socket); - - log.debug("server", "added all socket handlers"); - - // *************************** - // Better do anything after added all socket handlers here - // *************************** - - log.debug("auth", "check auto login"); - if (await setting("disableAuth")) { - log.info("auth", "Disabled Auth: auto login to admin"); - await afterLogin(socket, await R.findOne("user")); - socket.emit("autoLogin"); - } else { - socket.emit("loginRequired"); - log.debug("auth", "need auth"); - } - - }); - - log.debug("server", "Init the server"); - - server.httpServer.once("error", async (err) => { - log.error("server", "Cannot listen: " + err.message); - await shutdownFunction(); - process.exit(1); - }); - - await server.start(); - - server.httpServer.listen(port, hostname, () => { - if (hostname) { - log.info("server", `Listening on ${hostname}:${port}`); - } else { - log.info("server", `Listening on ${port}`); - } - startMonitors(); - checkVersion.startInterval(); - }); - - await initBackgroundJobs(); - - // Start cloudflared at the end if configured - await cloudflaredAutoStart(cloudflaredToken); - -})(); - -/** - * Update notifications for a given monitor - * @param {number} monitorID ID of monitor to update - * @param {number[]} notificationIDList List of new notification - * providers to add - * @returns {Promise} - */ -async function updateMonitorNotification(monitorID, notificationIDList) { - await R.exec("DELETE FROM monitor_notification WHERE monitor_id = ? ", [ - monitorID, - ]); - - for (let notificationID in notificationIDList) { - if (notificationIDList[notificationID]) { - let relation = R.dispense("monitor_notification"); - relation.monitor_id = monitorID; - relation.notification_id = notificationID; - await R.store(relation); - } - } -} - -/** - * Check if a given user owns a specific monitor - * @param {number} userID ID of user to check - * @param {number} monitorID ID of monitor to check - * @returns {Promise} - * @throws {Error} The specified user does not own the monitor - */ -async function checkOwner(userID, monitorID) { - let row = await R.getRow("SELECT id FROM monitor WHERE id = ? AND user_id = ? ", [ - monitorID, - userID, - ]); - - if (! row) { - throw new Error("You do not own this monitor."); - } -} - -/** - * Function called after user login - * This function is used to send the heartbeat list of a monitor. - * @param {Socket} socket Socket.io instance - * @param {object} user User object - * @returns {Promise} - */ -async function afterLogin(socket, user) { - socket.userID = user.id; - socket.join(user.id); - - let monitorList = await server.sendMonitorList(socket); - await Promise.allSettled([ - sendInfo(socket), - server.sendMaintenanceList(socket), - sendNotificationList(socket), - sendProxyList(socket), - sendDockerHostList(socket), - sendAPIKeyList(socket), - sendRemoteBrowserList(socket), - sendMonitorTypeList(socket), - ]); - - await StatusPage.sendStatusPageList(io, socket); - - const monitorPromises = []; - for (let monitorID in monitorList) { - monitorPromises.push(sendHeartbeatList(socket, monitorID)); - monitorPromises.push(Monitor.sendStats(io, monitorID, user.id)); - } - - await Promise.all(monitorPromises); - - // Set server timezone from client browser if not set - // It should be run once only - if (! await Settings.get("initServerTimezone")) { - log.debug("server", "emit initServerTimezone"); - socket.emit("initServerTimezone"); - } -} - -/** - * Initialize the database - * @param {boolean} testMode Should the connection be - * started in test mode? - * @returns {Promise} - */ -async function initDatabase(testMode = false) { - log.debug("server", "Connecting to the database"); - await Database.connect(testMode); - log.info("server", "Connected to the database"); - - // Patch the database - await Database.patch(); - - let jwtSecretBean = await R.findOne("setting", " `key` = ? ", [ - "jwtSecret", - ]); - - if (! jwtSecretBean) { - log.info("server", "JWT secret is not found, generate one."); - jwtSecretBean = await initJWTSecret(); - log.info("server", "Stored JWT secret into database"); - } else { - log.debug("server", "Load JWT secret from database."); - } - - // If there is no record in user table, it is a new Uptime Kuma instance, need to setup - if ((await R.knex("user").count("id as count").first()).count === 0) { - log.info("server", "No user, need setup"); - needSetup = true; - } - - server.jwtSecret = jwtSecretBean.value; -} - -/** - * Start the specified monitor - * @param {number} userID ID of user who owns monitor - * @param {number} monitorID ID of monitor to start - * @returns {Promise} - */ -async function startMonitor(userID, monitorID) { - await checkOwner(userID, monitorID); - - log.info("manage", `Resume Monitor: ${monitorID} User ID: ${userID}`); - - await R.exec("UPDATE monitor SET active = 1 WHERE id = ? AND user_id = ? ", [ - monitorID, - userID, - ]); - - let monitor = await R.findOne("monitor", " id = ? ", [ - monitorID, - ]); - - if (monitor.id in server.monitorList) { - await server.monitorList[monitor.id].stop(); - } - - server.monitorList[monitor.id] = monitor; - await monitor.start(io); -} - -/** - * Restart a given monitor - * @param {number} userID ID of user who owns monitor - * @param {number} monitorID ID of monitor to start - * @returns {Promise} - */ -async function restartMonitor(userID, monitorID) { - return await startMonitor(userID, monitorID); -} - -/** - * Pause a given monitor - * @param {number} userID ID of user who owns monitor - * @param {number} monitorID ID of monitor to start - * @returns {Promise} - */ -async function pauseMonitor(userID, monitorID) { - await checkOwner(userID, monitorID); - - log.info("manage", `Pause Monitor: ${monitorID} User ID: ${userID}`); - - await R.exec("UPDATE monitor SET active = 0 WHERE id = ? AND user_id = ? ", [ - monitorID, - userID, - ]); - - if (monitorID in server.monitorList) { - await server.monitorList[monitorID].stop(); - server.monitorList[monitorID].active = 0; - } -} - -/** - * Resume active monitors - * @returns {Promise} - */ -async function startMonitors() { - let list = await R.find("monitor", " active = 1 "); - - for (let monitor of list) { - server.monitorList[monitor.id] = monitor; - } - - for (let monitor of list) { - await monitor.start(io); - // Give some delays, so all monitors won't make request at the same moment when just start the server. - await sleep(getRandomInt(300, 1000)); - } -} - -/** - * Shutdown the application - * Stops all monitors and closes the database connection. - * @param {string} signal The signal that triggered this function to be called. - * @returns {Promise} - */ -async function shutdownFunction(signal) { - log.info("server", "Shutdown requested"); - log.info("server", "Called signal: " + signal); - - await server.stop(); - - log.info("server", "Stopping all monitors"); - for (let id in server.monitorList) { - let monitor = server.monitorList[id]; - await monitor.stop(); - } - await sleep(2000); - await Database.close(); - - if (EmbeddedMariaDB.hasInstance()) { - EmbeddedMariaDB.getInstance().stop(); - } - - stopBackgroundJobs(); - await cloudflaredStop(); - Settings.stopCacheCleaner(); -} - -/** - * Final function called before application exits - * @returns {void} - */ -function finalFunction() { - log.info("server", "Graceful shutdown successful!"); -} - -gracefulShutdown(server.httpServer, { - signals: "SIGINT SIGTERM", - timeout: 30000, // timeout: 30 secs - development: false, // not in dev mode - forceExit: true, // triggers process.exit() at the end of shutdown process - onShutdown: shutdownFunction, // shutdown function (async) - e.g. for cleanup DB, ... - finally: finalFunction, // finally function (sync) - e.g. for logging -}); - -// Catch unexpected errors here -let unexpectedErrorHandler = (error, promise) => { - console.trace(error); - UptimeKumaServer.errorLog(error, false); - console.error("If you keep encountering errors, please report to https://github.com/louislam/uptime-kuma/issues"); -}; -process.addListener("unhandledRejection", unexpectedErrorHandler); -process.addListener("uncaughtException", unexpectedErrorHandler); +/* + * Uptime Kuma Server + * node "server/server.js" + * DO NOT require("./server") in other modules, it likely creates circular dependency! + */ +console.log("Welcome to Uptime Kuma"); + +// As the log function need to use dayjs, it should be very top +const dayjs = require("dayjs"); +dayjs.extend(require("dayjs/plugin/utc")); +dayjs.extend(require("./modules/dayjs/plugin/timezone")); +dayjs.extend(require("dayjs/plugin/customParseFormat")); + +// Load environment variables from `.env` +require("dotenv").config(); + +// Check Node.js Version +const nodeVersion = process.versions.node; + +// Get the required Node.js version from package.json +const requiredNodeVersions = require("../package.json").engines.node; +const bannedNodeVersions = " < 18 || 20.0.* || 20.1.* || 20.2.* || 20.3.* "; +console.log(`Your Node.js version: ${nodeVersion}`); + +const semver = require("semver"); +const requiredNodeVersionsComma = requiredNodeVersions.split("||").map((version) => version.trim()).join(", "); + +// Exit Uptime Kuma immediately if the Node.js version is banned +if (semver.satisfies(nodeVersion, bannedNodeVersions)) { + console.error("\x1b[31m%s\x1b[0m", `Error: Your Node.js version: ${nodeVersion} is not supported, please upgrade your Node.js to ${requiredNodeVersionsComma}.`); + process.exit(-1); +} + +// Warning if the Node.js version is not in the support list, but it maybe still works +if (!semver.satisfies(nodeVersion, requiredNodeVersions)) { + console.warn("\x1b[31m%s\x1b[0m", `Warning: Your Node.js version: ${nodeVersion} is not officially supported, please upgrade your Node.js to ${requiredNodeVersionsComma}.`); +} + +const args = require("args-parser")(process.argv); +const { sleep, log, getRandomInt, genSecret, isDev } = require("../src/util"); +const config = require("./config"); + +log.debug("server", "Arguments"); +log.debug("server", args); + +if (! process.env.NODE_ENV) { + process.env.NODE_ENV = "production"; +} + +if (!process.env.UPTIME_KUMA_WS_ORIGIN_CHECK) { + process.env.UPTIME_KUMA_WS_ORIGIN_CHECK = "cors-like"; +} + +log.info("server", "Env: " + process.env.NODE_ENV); +log.debug("server", "Inside Container: " + (process.env.UPTIME_KUMA_IS_CONTAINER === "1")); + +if (process.env.UPTIME_KUMA_WS_ORIGIN_CHECK === "bypass") { + log.warn("server", "WebSocket Origin Check: " + process.env.UPTIME_KUMA_WS_ORIGIN_CHECK); +} + +const checkVersion = require("./check-version"); +log.info("server", "Uptime Kuma Version: " + checkVersion.version); + +log.info("server", "Loading modules"); + +log.debug("server", "Importing express"); +const express = require("express"); +const expressStaticGzip = require("express-static-gzip"); +log.debug("server", "Importing redbean-node"); +const { R } = require("redbean-node"); +log.debug("server", "Importing jsonwebtoken"); +const jwt = require("jsonwebtoken"); +log.debug("server", "Importing http-graceful-shutdown"); +const gracefulShutdown = require("http-graceful-shutdown"); +log.debug("server", "Importing prometheus-api-metrics"); +const prometheusAPIMetrics = require("prometheus-api-metrics"); +const { passwordStrength } = require("check-password-strength"); + +log.debug("server", "Importing 2FA Modules"); +const notp = require("notp"); +const base32 = require("thirty-two"); + +const { UptimeKumaServer } = require("./uptime-kuma-server"); +const server = UptimeKumaServer.getInstance(); +const io = module.exports.io = server.io; +const app = server.app; + +log.debug("server", "Importing Monitor"); +const Monitor = require("./model/monitor"); +const User = require("./model/user"); + +log.debug("server", "Importing Settings"); +const { getSettings, setSettings, setting, initJWTSecret, checkLogin, doubleCheckPassword, shake256, SHAKE256_LENGTH, allowDevAllOrigin, +} = require("./util-server"); + +log.debug("server", "Importing Notification"); +const { Notification } = require("./notification"); +Notification.init(); + +log.debug("server", "Importing Database"); +const Database = require("./database"); + +log.debug("server", "Importing Background Jobs"); +const { initBackgroundJobs, stopBackgroundJobs } = require("./jobs"); +const { loginRateLimiter, twoFaRateLimiter } = require("./rate-limiter"); + +const { apiAuth } = require("./auth"); +const { login } = require("./auth"); +const passwordHash = require("./password-hash"); + +const hostname = config.hostname; + +if (hostname) { + log.info("server", "Custom hostname: " + hostname); +} + +const port = config.port; + +const disableFrameSameOrigin = !!process.env.UPTIME_KUMA_DISABLE_FRAME_SAMEORIGIN || args["disable-frame-sameorigin"] || false; +const cloudflaredToken = args["cloudflared-token"] || process.env.UPTIME_KUMA_CLOUDFLARED_TOKEN || undefined; + +// 2FA / notp verification defaults +const twoFAVerifyOptions = { + "window": 1, + "time": 30 +}; + +/** + * Run unit test after the server is ready + * @type {boolean} + */ +const testMode = !!args["test"] || false; + +// Must be after io instantiation +const { sendNotificationList, sendHeartbeatList, sendInfo, sendProxyList, sendDockerHostList, sendAPIKeyList, sendRemoteBrowserList, sendMonitorTypeList } = require("./client"); +const { statusPageSocketHandler } = require("./socket-handlers/status-page-socket-handler"); +const { databaseSocketHandler } = require("./socket-handlers/database-socket-handler"); +const { remoteBrowserSocketHandler } = require("./socket-handlers/remote-browser-socket-handler"); +const TwoFA = require("./2fa"); +const StatusPage = require("./model/status_page"); +const { cloudflaredSocketHandler, autoStart: cloudflaredAutoStart, stop: cloudflaredStop } = require("./socket-handlers/cloudflared-socket-handler"); +const { proxySocketHandler } = require("./socket-handlers/proxy-socket-handler"); +const { dockerSocketHandler } = require("./socket-handlers/docker-socket-handler"); +const { maintenanceSocketHandler } = require("./socket-handlers/maintenance-socket-handler"); +const { apiKeySocketHandler } = require("./socket-handlers/api-key-socket-handler"); +const { generalSocketHandler } = require("./socket-handlers/general-socket-handler"); +const { Settings } = require("./settings"); +const apicache = require("./modules/apicache"); +const { resetChrome } = require("./monitor-types/real-browser-monitor-type"); +const { EmbeddedMariaDB } = require("./embedded-mariadb"); +const { SetupDatabase } = require("./setup-database"); +const { chartSocketHandler } = require("./socket-handlers/chart-socket-handler"); + +app.use(express.json()); + +// Global Middleware +app.use(function (req, res, next) { + if (!disableFrameSameOrigin) { + res.setHeader("X-Frame-Options", "SAMEORIGIN"); + } + res.removeHeader("X-Powered-By"); + next(); +}); + +/** + * Show Setup Page + * @type {boolean} + */ +let needSetup = false; + +(async () => { + // Create a data directory + Database.initDataDir(args); + + // Check if is chosen a database type + let setupDatabase = new SetupDatabase(args, server); + if (setupDatabase.isNeedSetup()) { + // Hold here and start a special setup page until user choose a database type + await setupDatabase.start(hostname, port); + } + + // Connect to database + try { + await initDatabase(testMode); + } catch (e) { + log.error("server", "Failed to prepare your database: " + e.message); + process.exit(1); + } + + // Database should be ready now + await server.initAfterDatabaseReady(); + server.entryPage = await Settings.get("entryPage"); + await StatusPage.loadDomainMappingList(); + + log.debug("server", "Adding route"); + + // *************************** + // Normal Router here + // *************************** + + // Entry Page + app.get("/", async (request, response) => { + let hostname = request.hostname; + if (await setting("trustProxy")) { + const proxy = request.headers["x-forwarded-host"]; + if (proxy) { + hostname = proxy; + } + } + + log.debug("entry", `Request Domain: ${hostname}`); + + const uptimeKumaEntryPage = server.entryPage; + if (hostname in StatusPage.domainMappingList) { + log.debug("entry", "This is a status page domain"); + + let slug = StatusPage.domainMappingList[hostname]; + await StatusPage.handleStatusPageResponse(response, server.indexHTML, slug); + + } else if (uptimeKumaEntryPage && uptimeKumaEntryPage.startsWith("statusPage-")) { + response.redirect("/status/" + uptimeKumaEntryPage.replace("statusPage-", "")); + + } else { + response.redirect("/dashboard"); + } + }); + + app.get("/setup-database-info", (request, response) => { + allowDevAllOrigin(response); + response.json({ + runningSetup: false, + needSetup: false, + }); + }); + + if (isDev) { + app.use(express.urlencoded({ extended: true })); + app.post("/test-webhook", async (request, response) => { + log.debug("test", request.headers); + log.debug("test", request.body); + response.send("OK"); + }); + + app.post("/test-x-www-form-urlencoded", async (request, response) => { + log.debug("test", request.headers); + log.debug("test", request.body); + response.send("OK"); + }); + + const fs = require("fs"); + + app.get("/_e2e/take-sqlite-snapshot", async (request, response) => { + await Database.close(); + try { + fs.cpSync(Database.sqlitePath, `${Database.sqlitePath}.e2e-snapshot`); + } catch (err) { + throw new Error("Unable to copy SQLite DB."); + } + await Database.connect(); + + response.send("Snapshot taken."); + }); + + app.get("/_e2e/restore-sqlite-snapshot", async (request, response) => { + if (!fs.existsSync(`${Database.sqlitePath}.e2e-snapshot`)) { + throw new Error("Snapshot doesn't exist."); + } + + await Database.close(); + try { + fs.cpSync(`${Database.sqlitePath}.e2e-snapshot`, Database.sqlitePath); + } catch (err) { + throw new Error("Unable to copy snapshot file."); + } + await Database.connect(); + + response.send("Snapshot restored."); + }); + } + + // Robots.txt + app.get("/robots.txt", async (_request, response) => { + let txt = "User-agent: *\nDisallow:"; + if (!await setting("searchEngineIndex")) { + txt += " /"; + } + response.setHeader("Content-Type", "text/plain"); + response.send(txt); + }); + + // Basic Auth Router here + + // Prometheus API metrics /metrics + // With Basic Auth using the first user's username/password + app.get("/metrics", apiAuth, prometheusAPIMetrics()); + + app.use("/", expressStaticGzip("dist", { + enableBrotli: true, + })); + + // ./data/upload + app.use("/upload", express.static(Database.uploadDir)); + + app.get("/.well-known/change-password", async (_, response) => { + response.redirect("https://github.com/louislam/uptime-kuma/wiki/Reset-Password-via-CLI"); + }); + + // API Router + const apiRouter = require("./routers/api-router"); + app.use(apiRouter); + + // Status Page Router + const statusPageRouter = require("./routers/status-page-router"); + app.use(statusPageRouter); + + // Universal Route Handler, must be at the end of all express routes. + app.get("*", async (_request, response) => { + if (_request.originalUrl.startsWith("/upload/")) { + response.status(404).send("File not found."); + } else { + response.send(server.indexHTML); + } + }); + + log.debug("server", "Adding socket handler"); + io.on("connection", async (socket) => { + + await sendInfo(socket, true); + + if (needSetup) { + log.info("server", "Redirect to setup page"); + socket.emit("setup"); + } + + // *************************** + // Public Socket API + // *************************** + + socket.on("loginByToken", async (token, callback) => { + const clientIP = await server.getClientIP(socket); + + log.info("auth", `Login by token. IP=${clientIP}`); + + try { + let decoded = jwt.verify(token, server.jwtSecret); + + log.info("auth", "Username from JWT: " + decoded.username); + + let user = await R.findOne("user", " username = ? AND active = 1 ", [ + decoded.username, + ]); + + if (user) { + // Check if the password changed + if (decoded.h !== shake256(user.password, SHAKE256_LENGTH)) { + throw new Error("The token is invalid due to password change or old token"); + } + + log.debug("auth", "afterLogin"); + await afterLogin(socket, user); + log.debug("auth", "afterLogin ok"); + + log.info("auth", `Successfully logged in user ${decoded.username}. IP=${clientIP}`); + + callback({ + ok: true, + }); + } else { + + log.info("auth", `Inactive or deleted user ${decoded.username}. IP=${clientIP}`); + + callback({ + ok: false, + msg: "authUserInactiveOrDeleted", + msgi18n: true, + }); + } + } catch (error) { + log.error("auth", `Invalid token. IP=${clientIP}`); + if (error.message) { + log.error("auth", error.message, `IP=${clientIP}`); + } + callback({ + ok: false, + msg: "authInvalidToken", + msgi18n: true, + }); + } + + }); + + socket.on("login", async (data, callback) => { + const clientIP = await server.getClientIP(socket); + + log.info("auth", `Login by username + password. IP=${clientIP}`); + + // Checking + if (typeof callback !== "function") { + return; + } + + if (!data) { + return; + } + + // Login Rate Limit + if (!await loginRateLimiter.pass(callback)) { + log.info("auth", `Too many failed requests for user ${data.username}. IP=${clientIP}`); + return; + } + + let user = await login(data.username, data.password); + + if (user) { + if (user.twofa_status === 0) { + await afterLogin(socket, user); + + log.info("auth", `Successfully logged in user ${data.username}. IP=${clientIP}`); + + callback({ + ok: true, + token: User.createJWT(user, server.jwtSecret), + }); + } + + if (user.twofa_status === 1 && !data.token) { + + log.info("auth", `2FA token required for user ${data.username}. IP=${clientIP}`); + + callback({ + tokenRequired: true, + }); + } + + if (data.token) { + let verify = notp.totp.verify(data.token, user.twofa_secret, twoFAVerifyOptions); + + if (user.twofa_last_token !== data.token && verify) { + await afterLogin(socket, user); + + await R.exec("UPDATE `user` SET twofa_last_token = ? WHERE id = ? ", [ + data.token, + socket.userID, + ]); + + log.info("auth", `Successfully logged in user ${data.username}. IP=${clientIP}`); + + callback({ + ok: true, + token: User.createJWT(user, server.jwtSecret), + }); + } else { + + log.warn("auth", `Invalid token provided for user ${data.username}. IP=${clientIP}`); + + callback({ + ok: false, + msg: "authInvalidToken", + msgi18n: true, + }); + } + } + } else { + + log.warn("auth", `Incorrect username or password for user ${data.username}. IP=${clientIP}`); + + callback({ + ok: false, + msg: "authIncorrectCreds", + msgi18n: true, + }); + } + + }); + + socket.on("logout", async (callback) => { + // Rate Limit + if (!await loginRateLimiter.pass(callback)) { + return; + } + + socket.leave(socket.userID); + socket.userID = null; + + if (typeof callback === "function") { + callback(); + } + }); + + socket.on("prepare2FA", async (currentPassword, callback) => { + try { + if (!await twoFaRateLimiter.pass(callback)) { + return; + } + + checkLogin(socket); + await doubleCheckPassword(socket, currentPassword); + + let user = await R.findOne("user", " id = ? AND active = 1 ", [ + socket.userID, + ]); + + if (user.twofa_status === 0) { + let newSecret = genSecret(); + let encodedSecret = base32.encode(newSecret); + + // Google authenticator doesn't like equal signs + // The fix is found at https://github.com/guyht/notp + // Related issue: https://github.com/louislam/uptime-kuma/issues/486 + encodedSecret = encodedSecret.toString().replace(/=/g, ""); + + let uri = `otpauth://totp/Uptime%20Kuma:${user.username}?secret=${encodedSecret}`; + + await R.exec("UPDATE `user` SET twofa_secret = ? WHERE id = ? ", [ + newSecret, + socket.userID, + ]); + + callback({ + ok: true, + uri: uri, + }); + } else { + callback({ + ok: false, + msg: "2faAlreadyEnabled", + msgi18n: true, + }); + } + } catch (error) { + callback({ + ok: false, + msg: error.message, + }); + } + }); + + socket.on("save2FA", async (currentPassword, callback) => { + const clientIP = await server.getClientIP(socket); + + try { + if (!await twoFaRateLimiter.pass(callback)) { + return; + } + + checkLogin(socket); + await doubleCheckPassword(socket, currentPassword); + + await R.exec("UPDATE `user` SET twofa_status = 1 WHERE id = ? ", [ + socket.userID, + ]); + + log.info("auth", `Saved 2FA token. IP=${clientIP}`); + + callback({ + ok: true, + msg: "2faEnabled", + msgi18n: true, + }); + } catch (error) { + + log.error("auth", `Error changing 2FA token. IP=${clientIP}`); + + callback({ + ok: false, + msg: error.message, + }); + } + }); + + socket.on("disable2FA", async (currentPassword, callback) => { + const clientIP = await server.getClientIP(socket); + + try { + if (!await twoFaRateLimiter.pass(callback)) { + return; + } + + checkLogin(socket); + await doubleCheckPassword(socket, currentPassword); + await TwoFA.disable2FA(socket.userID); + + log.info("auth", `Disabled 2FA token. IP=${clientIP}`); + + callback({ + ok: true, + msg: "2faDisabled", + msgi18n: true, + }); + } catch (error) { + + log.error("auth", `Error disabling 2FA token. IP=${clientIP}`); + + callback({ + ok: false, + msg: error.message, + }); + } + }); + + socket.on("verifyToken", async (token, currentPassword, callback) => { + try { + checkLogin(socket); + await doubleCheckPassword(socket, currentPassword); + + let user = await R.findOne("user", " id = ? AND active = 1 ", [ + socket.userID, + ]); + + let verify = notp.totp.verify(token, user.twofa_secret, twoFAVerifyOptions); + + if (user.twofa_last_token !== token && verify) { + callback({ + ok: true, + valid: true, + }); + } else { + callback({ + ok: false, + msg: "authInvalidToken", + msgi18n: true, + valid: false, + }); + } + + } catch (error) { + callback({ + ok: false, + msg: error.message, + }); + } + }); + + socket.on("twoFAStatus", async (callback) => { + try { + checkLogin(socket); + + let user = await R.findOne("user", " id = ? AND active = 1 ", [ + socket.userID, + ]); + + if (user.twofa_status === 1) { + callback({ + ok: true, + status: true, + }); + } else { + callback({ + ok: true, + status: false, + }); + } + } catch (error) { + callback({ + ok: false, + msg: error.message, + }); + } + }); + + socket.on("needSetup", async (callback) => { + callback(needSetup); + }); + + socket.on("setup", async (username, password, callback) => { + try { + if (passwordStrength(password).value === "Too weak") { + throw new Error("Password is too weak. It should contain alphabetic and numeric characters. It must be at least 6 characters in length."); + } + + if ((await R.knex("user").count("id as count").first()).count !== 0) { + throw new Error("Uptime Kuma has been initialized. If you want to run setup again, please delete the database."); + } + + let user = R.dispense("user"); + user.username = username; + user.password = passwordHash.generate(password); + await R.store(user); + + needSetup = false; + + callback({ + ok: true, + msg: "successAdded", + msgi18n: true, + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + // *************************** + // Auth Only API + // *************************** + + // Add a new monitor + socket.on("add", async (monitor, callback) => { + try { + checkLogin(socket); + let bean = R.dispense("monitor"); + + let notificationIDList = monitor.notificationIDList; + delete monitor.notificationIDList; + + // Ensure status code ranges are strings + if (!monitor.accepted_statuscodes.every((code) => typeof code === "string")) { + throw new Error("Accepted status codes are not all strings"); + } + monitor.accepted_statuscodes_json = JSON.stringify(monitor.accepted_statuscodes); + delete monitor.accepted_statuscodes; + + monitor.kafkaProducerBrokers = JSON.stringify(monitor.kafkaProducerBrokers); + monitor.kafkaProducerSaslOptions = JSON.stringify(monitor.kafkaProducerSaslOptions); + + monitor.conditions = JSON.stringify(monitor.conditions); + + bean.import(monitor); + bean.user_id = socket.userID; + + bean.validate(); + + await R.store(bean); + + await updateMonitorNotification(bean.id, notificationIDList); + + await server.sendUpdateMonitorIntoList(socket, bean.id); + + if (monitor.active !== false) { + await startMonitor(socket.userID, bean.id); + } + + log.info("monitor", `Added Monitor: ${bean.id} User ID: ${socket.userID}`); + + callback({ + ok: true, + msg: "successAdded", + msgi18n: true, + monitorID: bean.id, + }); + + } catch (e) { + + log.error("monitor", `Error adding Monitor: ${monitor.id} User ID: ${socket.userID}`); + + callback({ + ok: false, + msg: e.message, + }); + } + }); + + // Edit a monitor + socket.on("editMonitor", async (monitor, callback) => { + try { + let removeGroupChildren = false; + checkLogin(socket); + + let bean = await R.findOne("monitor", " id = ? ", [ monitor.id ]); + + if (bean.user_id !== socket.userID) { + throw new Error("Permission denied."); + } + + // Check if Parent is Descendant (would cause endless loop) + if (monitor.parent !== null) { + const childIDs = await Monitor.getAllChildrenIDs(monitor.id); + if (childIDs.includes(monitor.parent)) { + throw new Error("Invalid Monitor Group"); + } + } + + // Remove children if monitor type has changed (from group to non-group) + if (bean.type === "group" && monitor.type !== bean.type) { + removeGroupChildren = true; + } + + // Ensure status code ranges are strings + if (!monitor.accepted_statuscodes.every((code) => typeof code === "string")) { + throw new Error("Accepted status codes are not all strings"); + } + + bean.name = monitor.name; + bean.description = monitor.description; + bean.parent = monitor.parent; + bean.type = monitor.type; + bean.url = monitor.url; + bean.method = monitor.method; + bean.body = monitor.body; + bean.headers = monitor.headers; + bean.basic_auth_user = monitor.basic_auth_user; + bean.basic_auth_pass = monitor.basic_auth_pass; + bean.timeout = monitor.timeout; + bean.oauth_client_id = monitor.oauth_client_id; + bean.oauth_client_secret = monitor.oauth_client_secret; + bean.oauth_auth_method = monitor.oauth_auth_method; + bean.oauth_token_url = monitor.oauth_token_url; + bean.oauth_scopes = monitor.oauth_scopes; + bean.tlsCa = monitor.tlsCa; + bean.tlsCert = monitor.tlsCert; + bean.tlsKey = monitor.tlsKey; + bean.interval = monitor.interval; + bean.retryInterval = monitor.retryInterval; + bean.resendInterval = monitor.resendInterval; + bean.hostname = monitor.hostname; + bean.game = monitor.game; + bean.maxretries = monitor.maxretries; + bean.port = parseInt(monitor.port); + + if (isNaN(bean.port)) { + bean.port = null; + } + + bean.keyword = monitor.keyword; + bean.invertKeyword = monitor.invertKeyword; + bean.ignoreTls = monitor.ignoreTls; + bean.expiryNotification = monitor.expiryNotification; + bean.upsideDown = monitor.upsideDown; + bean.packetSize = monitor.packetSize; + bean.maxredirects = monitor.maxredirects; + bean.accepted_statuscodes_json = JSON.stringify(monitor.accepted_statuscodes); + bean.dns_resolve_type = monitor.dns_resolve_type; + bean.dns_resolve_server = monitor.dns_resolve_server; + bean.pushToken = monitor.pushToken; + bean.docker_container = monitor.docker_container; + bean.docker_host = monitor.docker_host; + bean.proxyId = Number.isInteger(monitor.proxyId) ? monitor.proxyId : null; + bean.mqttUsername = monitor.mqttUsername; + bean.mqttPassword = monitor.mqttPassword; + bean.mqttTopic = monitor.mqttTopic; + bean.mqttSuccessMessage = monitor.mqttSuccessMessage; + bean.mqttCheckType = monitor.mqttCheckType; + bean.databaseConnectionString = monitor.databaseConnectionString; + bean.databaseQuery = monitor.databaseQuery; + bean.authMethod = monitor.authMethod; + bean.authWorkstation = monitor.authWorkstation; + bean.authDomain = monitor.authDomain; + bean.grpcUrl = monitor.grpcUrl; + bean.grpcProtobuf = monitor.grpcProtobuf; + bean.grpcServiceName = monitor.grpcServiceName; + bean.grpcMethod = monitor.grpcMethod; + bean.grpcBody = monitor.grpcBody; + bean.grpcMetadata = monitor.grpcMetadata; + bean.grpcEnableTls = monitor.grpcEnableTls; + bean.radiusUsername = monitor.radiusUsername; + bean.radiusPassword = monitor.radiusPassword; + bean.radiusCalledStationId = monitor.radiusCalledStationId; + bean.radiusCallingStationId = monitor.radiusCallingStationId; + bean.radiusSecret = monitor.radiusSecret; + bean.httpBodyEncoding = monitor.httpBodyEncoding; + bean.expectedValue = monitor.expectedValue; + bean.jsonPath = monitor.jsonPath; + bean.kafkaProducerTopic = monitor.kafkaProducerTopic; + bean.kafkaProducerBrokers = JSON.stringify(monitor.kafkaProducerBrokers); + bean.kafkaProducerAllowAutoTopicCreation = monitor.kafkaProducerAllowAutoTopicCreation; + bean.kafkaProducerSaslOptions = JSON.stringify(monitor.kafkaProducerSaslOptions); + bean.kafkaProducerMessage = monitor.kafkaProducerMessage; + bean.cacheBust = monitor.cacheBust; + bean.kafkaProducerSsl = monitor.kafkaProducerSsl; + bean.kafkaProducerAllowAutoTopicCreation = + monitor.kafkaProducerAllowAutoTopicCreation; + bean.gamedigGivenPortOnly = monitor.gamedigGivenPortOnly; + bean.remote_browser = monitor.remote_browser; + bean.snmpVersion = monitor.snmpVersion; + bean.snmpOid = monitor.snmpOid; + bean.jsonPathOperator = monitor.jsonPathOperator; + bean.timeout = monitor.timeout; + bean.conditions = JSON.stringify(monitor.conditions); + + bean.validate(); + + await R.store(bean); + + if (removeGroupChildren) { + await Monitor.unlinkAllChildren(monitor.id); + } + + await updateMonitorNotification(bean.id, monitor.notificationIDList); + + if (await Monitor.isActive(bean.id, bean.active)) { + await restartMonitor(socket.userID, bean.id); + } + + await server.sendUpdateMonitorIntoList(socket, bean.id); + + callback({ + ok: true, + msg: "Saved.", + msgi18n: true, + monitorID: bean.id, + }); + + } catch (e) { + log.error("monitor", e); + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("getMonitorList", async (callback) => { + try { + checkLogin(socket); + await server.sendMonitorList(socket); + callback({ + ok: true, + }); + } catch (e) { + log.error("monitor", e); + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("getMonitor", async (monitorID, callback) => { + try { + checkLogin(socket); + + log.info("monitor", `Get Monitor: ${monitorID} User ID: ${socket.userID}`); + + let monitor = await R.findOne("monitor", " id = ? AND user_id = ? ", [ + monitorID, + socket.userID, + ]); + const monitorData = [{ id: monitor.id, + active: monitor.active + }]; + const preloadData = await Monitor.preparePreloadData(monitorData); + callback({ + ok: true, + monitor: monitor.toJSON(preloadData), + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("getMonitorBeats", async (monitorID, period, callback) => { + try { + checkLogin(socket); + + log.info("monitor", `Get Monitor Beats: ${monitorID} User ID: ${socket.userID}`); + + if (period == null) { + throw new Error("Invalid period."); + } + + const sqlHourOffset = Database.sqlHourOffset(); + + let list = await R.getAll(` + SELECT * + FROM heartbeat + WHERE monitor_id = ? + AND time > ${sqlHourOffset} + ORDER BY time ASC + `, [ + monitorID, + -period, + ]); + + callback({ + ok: true, + data: list, + }); + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + // Start or Resume the monitor + socket.on("resumeMonitor", async (monitorID, callback) => { + try { + checkLogin(socket); + await startMonitor(socket.userID, monitorID); + await server.sendUpdateMonitorIntoList(socket, monitorID); + + callback({ + ok: true, + msg: "successResumed", + msgi18n: true, + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("pauseMonitor", async (monitorID, callback) => { + try { + checkLogin(socket); + await pauseMonitor(socket.userID, monitorID); + await server.sendUpdateMonitorIntoList(socket, monitorID); + + callback({ + ok: true, + msg: "successPaused", + msgi18n: true, + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("deleteMonitor", async (monitorID, callback) => { + try { + checkLogin(socket); + + log.info("manage", `Delete Monitor: ${monitorID} User ID: ${socket.userID}`); + + if (monitorID in server.monitorList) { + await server.monitorList[monitorID].stop(); + delete server.monitorList[monitorID]; + } + + const startTime = Date.now(); + + await R.exec("DELETE FROM monitor WHERE id = ? AND user_id = ? ", [ + monitorID, + socket.userID, + ]); + + // Fix #2880 + apicache.clear(); + + const endTime = Date.now(); + + log.info("DB", `Delete Monitor completed in : ${endTime - startTime} ms`); + + callback({ + ok: true, + msg: "successDeleted", + msgi18n: true, + }); + await server.sendDeleteMonitorFromList(socket, monitorID); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("getTags", async (callback) => { + try { + checkLogin(socket); + + const list = await R.findAll("tag"); + + callback({ + ok: true, + tags: list.map(bean => bean.toJSON()), + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("addTag", async (tag, callback) => { + try { + checkLogin(socket); + + let bean = R.dispense("tag"); + bean.name = tag.name; + bean.color = tag.color; + await R.store(bean); + + callback({ + ok: true, + tag: await bean.toJSON(), + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("editTag", async (tag, callback) => { + try { + checkLogin(socket); + + let bean = await R.findOne("tag", " id = ? ", [ tag.id ]); + if (bean == null) { + callback({ + ok: false, + msg: "tagNotFound", + msgi18n: true, + }); + return; + } + bean.name = tag.name; + bean.color = tag.color; + await R.store(bean); + + callback({ + ok: true, + msg: "Saved.", + msgi18n: true, + tag: await bean.toJSON(), + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("deleteTag", async (tagID, callback) => { + try { + checkLogin(socket); + + await R.exec("DELETE FROM tag WHERE id = ? ", [ tagID ]); + + callback({ + ok: true, + msg: "successDeleted", + msgi18n: true, + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("addMonitorTag", async (tagID, monitorID, value, callback) => { + try { + checkLogin(socket); + + await R.exec("INSERT INTO monitor_tag (tag_id, monitor_id, value) VALUES (?, ?, ?)", [ + tagID, + monitorID, + value, + ]); + + callback({ + ok: true, + msg: "successAdded", + msgi18n: true, + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("editMonitorTag", async (tagID, monitorID, value, callback) => { + try { + checkLogin(socket); + + await R.exec("UPDATE monitor_tag SET value = ? WHERE tag_id = ? AND monitor_id = ?", [ + value, + tagID, + monitorID, + ]); + + callback({ + ok: true, + msg: "successEdited", + msgi18n: true, + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("deleteMonitorTag", async (tagID, monitorID, value, callback) => { + try { + checkLogin(socket); + + await R.exec("DELETE FROM monitor_tag WHERE tag_id = ? AND monitor_id = ? AND value = ?", [ + tagID, + monitorID, + value, + ]); + + callback({ + ok: true, + msg: "successDeleted", + msgi18n: true, + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("monitorImportantHeartbeatListCount", async (monitorID, callback) => { + try { + checkLogin(socket); + + let count; + if (monitorID == null) { + count = await R.count("heartbeat", "important = 1"); + } else { + count = await R.count("heartbeat", "monitor_id = ? AND important = 1", [ + monitorID, + ]); + } + + callback({ + ok: true, + count: count, + }); + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("monitorImportantHeartbeatListPaged", async (monitorID, offset, count, callback) => { + try { + checkLogin(socket); + + let list; + if (monitorID == null) { + list = await R.find("heartbeat", ` + important = 1 + ORDER BY time DESC + LIMIT ? + OFFSET ? + `, [ + count, + offset, + ]); + } else { + list = await R.find("heartbeat", ` + monitor_id = ? + AND important = 1 + ORDER BY time DESC + LIMIT ? + OFFSET ? + `, [ + monitorID, + count, + offset, + ]); + } + + callback({ + ok: true, + data: list, + }); + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("changePassword", async (password, callback) => { + try { + checkLogin(socket); + + if (!password.newPassword) { + throw new Error("Invalid new password"); + } + + if (passwordStrength(password.newPassword).value === "Too weak") { + throw new Error("Password is too weak. It should contain alphabetic and numeric characters. It must be at least 6 characters in length."); + } + + let user = await doubleCheckPassword(socket, password.currentPassword); + await user.resetPassword(password.newPassword); + + server.disconnectAllSocketClients(user.id, socket.id); + + callback({ + ok: true, + token: User.createJWT(user, server.jwtSecret), + msg: "successAuthChangePassword", + msgi18n: true, + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("getSettings", async (callback) => { + try { + checkLogin(socket); + const data = await getSettings("general"); + + if (!data.serverTimezone) { + data.serverTimezone = await server.getTimezone(); + } + + callback({ + ok: true, + data: data, + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("setSettings", async (data, currentPassword, callback) => { + try { + checkLogin(socket); + + // If currently is disabled auth, don't need to check + // Disabled Auth + Want to Disable Auth => No Check + // Disabled Auth + Want to Enable Auth => No Check + // Enabled Auth + Want to Disable Auth => Check!! + // Enabled Auth + Want to Enable Auth => No Check + const currentDisabledAuth = await setting("disableAuth"); + if (!currentDisabledAuth && data.disableAuth) { + await doubleCheckPassword(socket, currentPassword); + } + + // Log out all clients if enabling auth + // GHSA-23q2-5gf8-gjpp + if (currentDisabledAuth && !data.disableAuth) { + server.disconnectAllSocketClients(socket.userID, socket.id); + } + + const previousChromeExecutable = await Settings.get("chromeExecutable"); + const previousNSCDStatus = await Settings.get("nscd"); + + await setSettings("general", data); + server.entryPage = data.entryPage; + + // Also need to apply timezone globally + if (data.serverTimezone) { + await server.setTimezone(data.serverTimezone); + } + + // If Chrome Executable is changed, need to reset the browser + if (previousChromeExecutable !== data.chromeExecutable) { + log.info("settings", "Chrome executable is changed. Resetting Chrome..."); + await resetChrome(); + } + + // Update nscd status + if (previousNSCDStatus !== data.nscd) { + if (data.nscd) { + await server.startNSCDServices(); + } else { + await server.stopNSCDServices(); + } + } + + callback({ + ok: true, + msg: "Saved.", + msgi18n: true, + }); + + await sendInfo(socket); + await server.sendMaintenanceList(socket); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + // Add or Edit + socket.on("addNotification", async (notification, notificationID, callback) => { + try { + checkLogin(socket); + + let notificationBean = await Notification.save(notification, notificationID, socket.userID); + await sendNotificationList(socket); + + callback({ + ok: true, + msg: "Saved.", + msgi18n: true, + id: notificationBean.id, + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("deleteNotification", async (notificationID, callback) => { + try { + checkLogin(socket); + + await Notification.delete(notificationID, socket.userID); + await sendNotificationList(socket); + + callback({ + ok: true, + msg: "successDeleted", + msgi18n: true, + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("testNotification", async (notification, callback) => { + try { + checkLogin(socket); + + let msg = await Notification.send(notification, notification.name + " Testing"); + + callback({ + ok: true, + msg, + }); + + } catch (e) { + console.error(e); + + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("checkApprise", async (callback) => { + try { + checkLogin(socket); + callback(Notification.checkApprise()); + } catch (e) { + callback(false); + } + }); + + socket.on("clearEvents", async (monitorID, callback) => { + try { + checkLogin(socket); + + log.info("manage", `Clear Events Monitor: ${monitorID} User ID: ${socket.userID}`); + + await R.exec("UPDATE heartbeat SET msg = ?, important = ? WHERE monitor_id = ? ", [ + "", + "0", + monitorID, + ]); + + callback({ + ok: true, + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("clearHeartbeats", async (monitorID, callback) => { + try { + checkLogin(socket); + + log.info("manage", `Clear Heartbeats Monitor: ${monitorID} User ID: ${socket.userID}`); + + await R.exec("DELETE FROM heartbeat WHERE monitor_id = ?", [ + monitorID + ]); + + await sendHeartbeatList(socket, monitorID, true, true); + + callback({ + ok: true, + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + socket.on("clearStatistics", async (callback) => { + try { + checkLogin(socket); + + log.info("manage", `Clear Statistics User ID: ${socket.userID}`); + + await R.exec("DELETE FROM heartbeat"); + await R.exec("DELETE FROM stat_daily"); + await R.exec("DELETE FROM stat_hourly"); + await R.exec("DELETE FROM stat_minutely"); + + // Restart all monitors to reset the stats + for (let monitorID in server.monitorList) { + await restartMonitor(socket.userID, monitorID); + } + + callback({ + ok: true, + }); + + } catch (e) { + callback({ + ok: false, + msg: e.message, + }); + } + }); + + // Status Page Socket Handler for admin only + statusPageSocketHandler(socket); + cloudflaredSocketHandler(socket); + databaseSocketHandler(socket); + proxySocketHandler(socket); + dockerSocketHandler(socket); + maintenanceSocketHandler(socket); + apiKeySocketHandler(socket); + remoteBrowserSocketHandler(socket); + generalSocketHandler(socket, server); + chartSocketHandler(socket); + + log.debug("server", "added all socket handlers"); + + // *************************** + // Better do anything after added all socket handlers here + // *************************** + + log.debug("auth", "check auto login"); + if (await setting("disableAuth")) { + log.info("auth", "Disabled Auth: auto login to admin"); + await afterLogin(socket, await R.findOne("user")); + socket.emit("autoLogin"); + } else { + socket.emit("loginRequired"); + log.debug("auth", "need auth"); + } + + }); + + log.debug("server", "Init the server"); + + server.httpServer.once("error", async (err) => { + log.error("server", "Cannot listen: " + err.message); + await shutdownFunction(); + process.exit(1); + }); + + await server.start(); + + server.httpServer.listen(port, hostname, () => { + if (hostname) { + log.info("server", `Listening on ${hostname}:${port}`); + } else { + log.info("server", `Listening on ${port}`); + } + startMonitors(); + checkVersion.startInterval(); + }); + + await initBackgroundJobs(); + + // Start cloudflared at the end if configured + await cloudflaredAutoStart(cloudflaredToken); + +})(); + +/** + * Update notifications for a given monitor + * @param {number} monitorID ID of monitor to update + * @param {number[]} notificationIDList List of new notification + * providers to add + * @returns {Promise} + */ +async function updateMonitorNotification(monitorID, notificationIDList) { + await R.exec("DELETE FROM monitor_notification WHERE monitor_id = ? ", [ + monitorID, + ]); + + for (let notificationID in notificationIDList) { + if (notificationIDList[notificationID]) { + let relation = R.dispense("monitor_notification"); + relation.monitor_id = monitorID; + relation.notification_id = notificationID; + await R.store(relation); + } + } +} + +/** + * Check if a given user owns a specific monitor + * @param {number} userID ID of user to check + * @param {number} monitorID ID of monitor to check + * @returns {Promise} + * @throws {Error} The specified user does not own the monitor + */ +async function checkOwner(userID, monitorID) { + let row = await R.getRow("SELECT id FROM monitor WHERE id = ? AND user_id = ? ", [ + monitorID, + userID, + ]); + + if (! row) { + throw new Error("You do not own this monitor."); + } +} + +/** + * Function called after user login + * This function is used to send the heartbeat list of a monitor. + * @param {Socket} socket Socket.io instance + * @param {object} user User object + * @returns {Promise} + */ +async function afterLogin(socket, user) { + socket.userID = user.id; + socket.join(user.id); + + let monitorList = await server.sendMonitorList(socket); + await Promise.allSettled([ + sendInfo(socket), + server.sendMaintenanceList(socket), + sendNotificationList(socket), + sendProxyList(socket), + sendDockerHostList(socket), + sendAPIKeyList(socket), + sendRemoteBrowserList(socket), + sendMonitorTypeList(socket), + ]); + + await StatusPage.sendStatusPageList(io, socket); + + const monitorPromises = []; + for (let monitorID in monitorList) { + monitorPromises.push(sendHeartbeatList(socket, monitorID)); + monitorPromises.push(Monitor.sendStats(io, monitorID, user.id)); + } + + await Promise.all(monitorPromises); + + // Set server timezone from client browser if not set + // It should be run once only + if (! await Settings.get("initServerTimezone")) { + log.debug("server", "emit initServerTimezone"); + socket.emit("initServerTimezone"); + } +} + +/** + * Initialize the database + * @param {boolean} testMode Should the connection be + * started in test mode? + * @returns {Promise} + */ +async function initDatabase(testMode = false) { + log.debug("server", "Connecting to the database"); + await Database.connect(testMode); + log.info("server", "Connected to the database"); + + // Patch the database + await Database.patch(); + + let jwtSecretBean = await R.findOne("setting", " `key` = ? ", [ + "jwtSecret", + ]); + + if (! jwtSecretBean) { + log.info("server", "JWT secret is not found, generate one."); + jwtSecretBean = await initJWTSecret(); + log.info("server", "Stored JWT secret into database"); + } else { + log.debug("server", "Load JWT secret from database."); + } + + // If there is no record in user table, it is a new Uptime Kuma instance, need to setup + if ((await R.knex("user").count("id as count").first()).count === 0) { + log.info("server", "No user, need setup"); + needSetup = true; + } + + server.jwtSecret = jwtSecretBean.value; +} + +/** + * Start the specified monitor + * @param {number} userID ID of user who owns monitor + * @param {number} monitorID ID of monitor to start + * @returns {Promise} + */ +async function startMonitor(userID, monitorID) { + await checkOwner(userID, monitorID); + + log.info("manage", `Resume Monitor: ${monitorID} User ID: ${userID}`); + + await R.exec("UPDATE monitor SET active = 1 WHERE id = ? AND user_id = ? ", [ + monitorID, + userID, + ]); + + let monitor = await R.findOne("monitor", " id = ? ", [ + monitorID, + ]); + + if (monitor.id in server.monitorList) { + await server.monitorList[monitor.id].stop(); + } + + server.monitorList[monitor.id] = monitor; + await monitor.start(io); +} + +/** + * Restart a given monitor + * @param {number} userID ID of user who owns monitor + * @param {number} monitorID ID of monitor to start + * @returns {Promise} + */ +async function restartMonitor(userID, monitorID) { + return await startMonitor(userID, monitorID); +} + +/** + * Pause a given monitor + * @param {number} userID ID of user who owns monitor + * @param {number} monitorID ID of monitor to start + * @returns {Promise} + */ +async function pauseMonitor(userID, monitorID) { + await checkOwner(userID, monitorID); + + log.info("manage", `Pause Monitor: ${monitorID} User ID: ${userID}`); + + await R.exec("UPDATE monitor SET active = 0 WHERE id = ? AND user_id = ? ", [ + monitorID, + userID, + ]); + + if (monitorID in server.monitorList) { + await server.monitorList[monitorID].stop(); + server.monitorList[monitorID].active = 0; + } +} + +/** + * Resume active monitors + * @returns {Promise} + */ +async function startMonitors() { + let list = await R.find("monitor", " active = 1 "); + + for (let monitor of list) { + server.monitorList[monitor.id] = monitor; + } + + for (let monitor of list) { + await monitor.start(io); + // Give some delays, so all monitors won't make request at the same moment when just start the server. + await sleep(getRandomInt(300, 1000)); + } +} + +/** + * Shutdown the application + * Stops all monitors and closes the database connection. + * @param {string} signal The signal that triggered this function to be called. + * @returns {Promise} + */ +async function shutdownFunction(signal) { + log.info("server", "Shutdown requested"); + log.info("server", "Called signal: " + signal); + + await server.stop(); + + log.info("server", "Stopping all monitors"); + for (let id in server.monitorList) { + let monitor = server.monitorList[id]; + await monitor.stop(); + } + await sleep(2000); + await Database.close(); + + if (EmbeddedMariaDB.hasInstance()) { + EmbeddedMariaDB.getInstance().stop(); + } + + stopBackgroundJobs(); + await cloudflaredStop(); + Settings.stopCacheCleaner(); +} + +/** + * Final function called before application exits + * @returns {void} + */ +function finalFunction() { + log.info("server", "Graceful shutdown successful!"); +} + +gracefulShutdown(server.httpServer, { + signals: "SIGINT SIGTERM", + timeout: 30000, // timeout: 30 secs + development: false, // not in dev mode + forceExit: true, // triggers process.exit() at the end of shutdown process + onShutdown: shutdownFunction, // shutdown function (async) - e.g. for cleanup DB, ... + finally: finalFunction, // finally function (sync) - e.g. for logging +}); + +// Catch unexpected errors here +let unexpectedErrorHandler = (error, promise) => { + console.trace(error); + UptimeKumaServer.errorLog(error, false); + console.error("If you keep encountering errors, please report to https://github.com/louislam/uptime-kuma/issues"); +}; +process.addListener("unhandledRejection", unexpectedErrorHandler); +process.addListener("uncaughtException", unexpectedErrorHandler); diff --git a/server/uptime-calculator.js b/server/uptime-calculator.js index f2738b96a..652ae0094 100644 --- a/server/uptime-calculator.js +++ b/server/uptime-calculator.js @@ -1,832 +1,832 @@ -const dayjs = require("dayjs"); -const { UP, MAINTENANCE, DOWN, PENDING } = require("../src/util"); -const { LimitQueue } = require("./utils/limit-queue"); -const { log } = require("../src/util"); -const { R } = require("redbean-node"); - -/** - * Calculates the uptime of a monitor. - */ -class UptimeCalculator { - /** - * @private - * @type {{string:UptimeCalculator}} - */ - - static list = {}; - - /** - * For testing purposes, we can set the current date to a specific date. - * @type {dayjs.Dayjs} - */ - static currentDate = null; - - /** - * monitorID the id of the monitor - * @type {number} - */ - monitorID; - - /** - * Recent 24-hour uptime, each item is a 1-minute interval - * Key: {number} DivisionKey - * @type {LimitQueue} - */ - minutelyUptimeDataList = new LimitQueue(24 * 60); - - /** - * Recent 30-day uptime, each item is a 1-hour interval - * Key: {number} DivisionKey - * @type {LimitQueue} - */ - hourlyUptimeDataList = new LimitQueue(30 * 24); - - /** - * Daily uptime data, - * Key: {number} DailyKey - */ - dailyUptimeDataList = new LimitQueue(365); - - lastUptimeData = null; - lastHourlyUptimeData = null; - lastDailyUptimeData = null; - - lastDailyStatBean = null; - lastHourlyStatBean = null; - lastMinutelyStatBean = null; - - /** - * Get the uptime calculator for a monitor - * Initializes and returns the monitor if it does not exist - * @param {number} monitorID the id of the monitor - * @returns {Promise} UptimeCalculator - */ - static async getUptimeCalculator(monitorID) { - if (!monitorID) { - throw new Error("Monitor ID is required"); - } - - if (!UptimeCalculator.list[monitorID]) { - UptimeCalculator.list[monitorID] = new UptimeCalculator(); - await UptimeCalculator.list[monitorID].init(monitorID); - } - return UptimeCalculator.list[monitorID]; - } - - /** - * Remove a monitor from the list - * @param {number} monitorID the id of the monitor - * @returns {Promise} - */ - static async remove(monitorID) { - delete UptimeCalculator.list[monitorID]; - } - - /** - * - */ - constructor() { - if (process.env.TEST_BACKEND) { - // Override the getCurrentDate() method to return a specific date - // Only for testing - this.getCurrentDate = () => { - if (UptimeCalculator.currentDate) { - return UptimeCalculator.currentDate; - } else { - return dayjs.utc(); - } - }; - } - } - - /** - * Initialize the uptime calculator for a monitor - * @param {number} monitorID the id of the monitor - * @returns {Promise} - */ - async init(monitorID) { - this.monitorID = monitorID; - - let now = this.getCurrentDate(); - - // Load minutely data from database (recent 24 hours only) - let minutelyStatBeans = await R.find("stat_minutely", " monitor_id = ? AND timestamp > ? ORDER BY timestamp", [ - monitorID, - this.getMinutelyKey(now.subtract(24, "hour")), - ]); - - for (let bean of minutelyStatBeans) { - let data = { - up: bean.up, - down: bean.down, - avgPing: bean.ping, - minPing: bean.pingMin, - maxPing: bean.pingMax, - }; - - if (bean.extras != null) { - data = { - ...data, - ...JSON.parse(bean.extras), - }; - } - - let key = bean.timestamp; - this.minutelyUptimeDataList.push(key, data); - } - - // Load hourly data from database (recent 30 days only) - let hourlyStatBeans = await R.find("stat_hourly", " monitor_id = ? AND timestamp > ? ORDER BY timestamp", [ - monitorID, - this.getHourlyKey(now.subtract(30, "day")), - ]); - - for (let bean of hourlyStatBeans) { - let data = { - up: bean.up, - down: bean.down, - avgPing: bean.ping, - minPing: bean.pingMin, - maxPing: bean.pingMax, - }; - - if (bean.extras != null) { - data = { - ...data, - ...JSON.parse(bean.extras), - }; - } - - this.hourlyUptimeDataList.push(bean.timestamp, data); - } - - // Load daily data from database (recent 365 days only) - let dailyStatBeans = await R.find("stat_daily", " monitor_id = ? AND timestamp > ? ORDER BY timestamp", [ - monitorID, - this.getDailyKey(now.subtract(365, "day")), - ]); - - for (let bean of dailyStatBeans) { - let data = { - up: bean.up, - down: bean.down, - avgPing: bean.ping, - minPing: bean.pingMin, - maxPing: bean.pingMax, - }; - - if (bean.extras != null) { - data = { - ...data, - ...JSON.parse(bean.extras), - }; - } - - this.dailyUptimeDataList.push(bean.timestamp, data); - } - } - - /** - * @param {number} status status - * @param {number} ping Ping - * @returns {dayjs.Dayjs} date - * @throws {Error} Invalid status - */ - async update(status, ping = 0) { - let date = this.getCurrentDate(); - - let flatStatus = this.flatStatus(status); - - if (flatStatus === DOWN && ping > 0) { - log.warn("uptime-calc", "The ping is not effective when the status is DOWN"); - } - - let divisionKey = this.getMinutelyKey(date); - let hourlyKey = this.getHourlyKey(date); - let dailyKey = this.getDailyKey(date); - - let minutelyData = this.minutelyUptimeDataList[divisionKey]; - let hourlyData = this.hourlyUptimeDataList[hourlyKey]; - let dailyData = this.dailyUptimeDataList[dailyKey]; - - if (status === MAINTENANCE) { - minutelyData.maintenance = minutelyData.maintenance ? minutelyData.maintenance + 1 : 1; - hourlyData.maintenance = hourlyData.maintenance ? hourlyData.maintenance + 1 : 1; - dailyData.maintenance = dailyData.maintenance ? dailyData.maintenance + 1 : 1; - - } else if (flatStatus === UP) { - minutelyData.up += 1; - hourlyData.up += 1; - dailyData.up += 1; - - // Only UP status can update the ping - if (!isNaN(ping)) { - // Add avg ping - // The first beat of the minute, the ping is the current ping - if (minutelyData.up === 1) { - minutelyData.avgPing = ping; - minutelyData.minPing = ping; - minutelyData.maxPing = ping; - } else { - minutelyData.avgPing = (minutelyData.avgPing * (minutelyData.up - 1) + ping) / minutelyData.up; - minutelyData.minPing = Math.min(minutelyData.minPing, ping); - minutelyData.maxPing = Math.max(minutelyData.maxPing, ping); - } - - // Add avg ping - // The first beat of the hour, the ping is the current ping - if (hourlyData.up === 1) { - hourlyData.avgPing = ping; - hourlyData.minPing = ping; - hourlyData.maxPing = ping; - } else { - hourlyData.avgPing = (hourlyData.avgPing * (hourlyData.up - 1) + ping) / hourlyData.up; - hourlyData.minPing = Math.min(hourlyData.minPing, ping); - hourlyData.maxPing = Math.max(hourlyData.maxPing, ping); - } - - // Add avg ping (daily) - // The first beat of the day, the ping is the current ping - if (dailyData.up === 1) { - dailyData.avgPing = ping; - dailyData.minPing = ping; - dailyData.maxPing = ping; - } else { - dailyData.avgPing = (dailyData.avgPing * (dailyData.up - 1) + ping) / dailyData.up; - dailyData.minPing = Math.min(dailyData.minPing, ping); - dailyData.maxPing = Math.max(dailyData.maxPing, ping); - } - } - - } else if (flatStatus === DOWN) { - minutelyData.down += 1; - hourlyData.down += 1; - dailyData.down += 1; - } - - if (minutelyData !== this.lastUptimeData) { - this.lastUptimeData = minutelyData; - } - - if (hourlyData !== this.lastHourlyUptimeData) { - this.lastHourlyUptimeData = hourlyData; - } - - if (dailyData !== this.lastDailyUptimeData) { - this.lastDailyUptimeData = dailyData; - } - - // Don't store data in test mode - if (process.env.TEST_BACKEND) { - log.debug("uptime-calc", "Skip storing data in test mode"); - return date; - } - - let dailyStatBean = await this.getDailyStatBean(dailyKey); - dailyStatBean.up = dailyData.up; - dailyStatBean.down = dailyData.down; - dailyStatBean.ping = dailyData.avgPing; - dailyStatBean.pingMin = dailyData.minPing; - dailyStatBean.pingMax = dailyData.maxPing; - { - // eslint-disable-next-line no-unused-vars - const { up, down, avgPing, minPing, maxPing, timestamp, ...extras } = dailyData; - if (Object.keys(extras).length > 0) { - dailyStatBean.extras = JSON.stringify(extras); - } - } - await R.store(dailyStatBean); - - let hourlyStatBean = await this.getHourlyStatBean(hourlyKey); - hourlyStatBean.up = hourlyData.up; - hourlyStatBean.down = hourlyData.down; - hourlyStatBean.ping = hourlyData.avgPing; - hourlyStatBean.pingMin = hourlyData.minPing; - hourlyStatBean.pingMax = hourlyData.maxPing; - { - // eslint-disable-next-line no-unused-vars - const { up, down, avgPing, minPing, maxPing, timestamp, ...extras } = hourlyData; - if (Object.keys(extras).length > 0) { - hourlyStatBean.extras = JSON.stringify(extras); - } - } - await R.store(hourlyStatBean); - - let minutelyStatBean = await this.getMinutelyStatBean(divisionKey); - minutelyStatBean.up = minutelyData.up; - minutelyStatBean.down = minutelyData.down; - minutelyStatBean.ping = minutelyData.avgPing; - minutelyStatBean.pingMin = minutelyData.minPing; - minutelyStatBean.pingMax = minutelyData.maxPing; - { - // eslint-disable-next-line no-unused-vars - const { up, down, avgPing, minPing, maxPing, timestamp, ...extras } = minutelyData; - if (Object.keys(extras).length > 0) { - minutelyStatBean.extras = JSON.stringify(extras); - } - } - await R.store(minutelyStatBean); - - // Remove the old data - log.debug("uptime-calc", "Remove old data"); - await R.exec("DELETE FROM stat_minutely WHERE monitor_id = ? AND timestamp < ?", [ - this.monitorID, - this.getMinutelyKey(date.subtract(24, "hour")), - ]); - - await R.exec("DELETE FROM stat_hourly WHERE monitor_id = ? AND timestamp < ?", [ - this.monitorID, - this.getHourlyKey(date.subtract(30, "day")), - ]); - - return date; - } - - /** - * Get the daily stat bean - * @param {number} timestamp milliseconds - * @returns {Promise} stat_daily bean - */ - async getDailyStatBean(timestamp) { - if (this.lastDailyStatBean && this.lastDailyStatBean.timestamp === timestamp) { - return this.lastDailyStatBean; - } - - let bean = await R.findOne("stat_daily", " monitor_id = ? AND timestamp = ?", [ - this.monitorID, - timestamp, - ]); - - if (!bean) { - bean = R.dispense("stat_daily"); - bean.monitor_id = this.monitorID; - bean.timestamp = timestamp; - } - - this.lastDailyStatBean = bean; - return this.lastDailyStatBean; - } - - /** - * Get the hourly stat bean - * @param {number} timestamp milliseconds - * @returns {Promise} stat_hourly bean - */ - async getHourlyStatBean(timestamp) { - if (this.lastHourlyStatBean && this.lastHourlyStatBean.timestamp === timestamp) { - return this.lastHourlyStatBean; - } - - let bean = await R.findOne("stat_hourly", " monitor_id = ? AND timestamp = ?", [ - this.monitorID, - timestamp, - ]); - - if (!bean) { - bean = R.dispense("stat_hourly"); - bean.monitor_id = this.monitorID; - bean.timestamp = timestamp; - } - - this.lastHourlyStatBean = bean; - return this.lastHourlyStatBean; - } - - /** - * Get the minutely stat bean - * @param {number} timestamp milliseconds - * @returns {Promise} stat_minutely bean - */ - async getMinutelyStatBean(timestamp) { - if (this.lastMinutelyStatBean && this.lastMinutelyStatBean.timestamp === timestamp) { - return this.lastMinutelyStatBean; - } - - let bean = await R.findOne("stat_minutely", " monitor_id = ? AND timestamp = ?", [ - this.monitorID, - timestamp, - ]); - - if (!bean) { - bean = R.dispense("stat_minutely"); - bean.monitor_id = this.monitorID; - bean.timestamp = timestamp; - } - - this.lastMinutelyStatBean = bean; - return this.lastMinutelyStatBean; - } - - /** - * Convert timestamp to minutely key - * @param {dayjs.Dayjs} date The heartbeat date - * @returns {number} Timestamp - */ - getMinutelyKey(date) { - // Truncate value to minutes (e.g. 2021-01-01 12:34:56 -> 2021-01-01 12:34:00) - date = date.startOf("minute"); - - // Convert to timestamp in second - let divisionKey = date.unix(); - - if (! (divisionKey in this.minutelyUptimeDataList)) { - this.minutelyUptimeDataList.push(divisionKey, { - up: 0, - down: 0, - avgPing: 0, - minPing: 0, - maxPing: 0, - }); - } - - return divisionKey; - } - - /** - * Convert timestamp to hourly key - * @param {dayjs.Dayjs} date The heartbeat date - * @returns {number} Timestamp - */ - getHourlyKey(date) { - // Truncate value to hours (e.g. 2021-01-01 12:34:56 -> 2021-01-01 12:00:00) - date = date.startOf("hour"); - - // Convert to timestamp in second - let divisionKey = date.unix(); - - if (! (divisionKey in this.hourlyUptimeDataList)) { - this.hourlyUptimeDataList.push(divisionKey, { - up: 0, - down: 0, - avgPing: 0, - minPing: 0, - maxPing: 0, - }); - } - - return divisionKey; - } - - /** - * Convert timestamp to daily key - * @param {dayjs.Dayjs} date The heartbeat date - * @returns {number} Timestamp - */ - getDailyKey(date) { - // Truncate value to start of day (e.g. 2021-01-01 12:34:56 -> 2021-01-01 00:00:00) - // Considering if the user keep changing could affect the calculation, so use UTC time to avoid this problem. - date = date.utc().startOf("day"); - let dailyKey = date.unix(); - - if (!this.dailyUptimeDataList[dailyKey]) { - this.dailyUptimeDataList.push(dailyKey, { - up: 0, - down: 0, - avgPing: 0, - minPing: 0, - maxPing: 0, - }); - } - - return dailyKey; - } - - /** - * Convert timestamp to key - * @param {dayjs.Dayjs} datetime Datetime - * @param {"day" | "hour" | "minute"} type the type of data which is expected to be returned - * @returns {number} Timestamp - * @throws {Error} If the type is invalid - */ - getKey(datetime, type) { - switch (type) { - case "day": - return this.getDailyKey(datetime); - case "hour": - return this.getHourlyKey(datetime); - case "minute": - return this.getMinutelyKey(datetime); - default: - throw new Error("Invalid type"); - } - } - - /** - * Flat status to UP or DOWN - * @param {number} status the status which should be turned into a flat status - * @returns {UP|DOWN|PENDING} The flat status - * @throws {Error} Invalid status - */ - flatStatus(status) { - switch (status) { - case UP: - case MAINTENANCE: - return UP; - case DOWN: - case PENDING: - return DOWN; - } - throw new Error("Invalid status"); - } - - /** - * @param {number} num the number of data points which are expected to be returned - * @param {"day" | "hour" | "minute"} type the type of data which is expected to be returned - * @returns {UptimeDataResult} UptimeDataResult - * @throws {Error} The maximum number of minutes greater than 1440 - */ - getData(num, type = "day") { - - if (type === "hour" && num > 24 * 30) { - throw new Error("The maximum number of hours is 720"); - } - if (type === "minute" && num > 24 * 60) { - throw new Error("The maximum number of minutes is 1440"); - } - if (type === "day" && num > 365) { - throw new Error("The maximum number of days is 365"); - } - // Get the current time period key based on the type - let key = this.getKey(this.getCurrentDate(), type); - - let total = { - up: 0, - down: 0, - }; - - let totalPing = 0; - let endTimestamp; - - // Get the eariest timestamp of the required period based on the type - switch (type) { - case "day": - endTimestamp = key - 86400 * (num - 1); - break; - case "hour": - endTimestamp = key - 3600 * (num - 1); - break; - case "minute": - endTimestamp = key - 60 * (num - 1); - break; - default: - throw new Error("Invalid type"); - } - - // Sum up all data in the specified time range - while (key >= endTimestamp) { - let data; - - switch (type) { - case "day": - data = this.dailyUptimeDataList[key]; - break; - case "hour": - data = this.hourlyUptimeDataList[key]; - break; - case "minute": - data = this.minutelyUptimeDataList[key]; - break; - default: - throw new Error("Invalid type"); - } - - if (data) { - total.up += data.up; - total.down += data.down; - totalPing += data.avgPing * data.up; - } - - // Set key to the previous time period - switch (type) { - case "day": - key -= 86400; - break; - case "hour": - key -= 3600; - break; - case "minute": - key -= 60; - break; - default: - throw new Error("Invalid type"); - } - } - - let uptimeData = new UptimeDataResult(); - - // If there is no data in the previous time ranges, use the last data? - if (total.up === 0 && total.down === 0) { - switch (type) { - case "day": - if (this.lastDailyUptimeData) { - total = this.lastDailyUptimeData; - totalPing = total.avgPing * total.up; - } else { - return uptimeData; - } - break; - case "hour": - if (this.lastHourlyUptimeData) { - total = this.lastHourlyUptimeData; - totalPing = total.avgPing * total.up; - } else { - return uptimeData; - } - break; - case "minute": - if (this.lastUptimeData) { - total = this.lastUptimeData; - totalPing = total.avgPing * total.up; - } else { - return uptimeData; - } - break; - default: - throw new Error("Invalid type"); - } - } - - let avgPing; - - if (total.up === 0) { - avgPing = null; - } else { - avgPing = totalPing / total.up; - } - - if (total.up + total.down === 0) { - uptimeData.uptime = 0; - } else { - uptimeData.uptime = total.up / (total.up + total.down); - } - uptimeData.avgPing = avgPing; - return uptimeData; - } - - /** - * Get data in form of an array - * @param {number} num the number of data points which are expected to be returned - * @param {"day" | "hour" | "minute"} type the type of data which is expected to be returned - * @returns {Array} uptime data - * @throws {Error} The maximum number of minutes greater than 1440 - */ - getDataArray(num, type = "day") { - if (type === "hour" && num > 24 * 30) { - throw new Error("The maximum number of hours is 720"); - } - if (type === "minute" && num > 24 * 60) { - throw new Error("The maximum number of minutes is 1440"); - } - - // Get the current time period key based on the type - let key = this.getKey(this.getCurrentDate(), type); - - let result = []; - - let endTimestamp; - - // Get the eariest timestamp of the required period based on the type - switch (type) { - case "day": - endTimestamp = key - 86400 * (num - 1); - break; - case "hour": - endTimestamp = key - 3600 * (num - 1); - break; - case "minute": - endTimestamp = key - 60 * (num - 1); - break; - default: - throw new Error("Invalid type"); - } - - // Get datapoints in the specified time range - while (key >= endTimestamp) { - let data; - - switch (type) { - case "day": - data = this.dailyUptimeDataList[key]; - break; - case "hour": - data = this.hourlyUptimeDataList[key]; - break; - case "minute": - data = this.minutelyUptimeDataList[key]; - break; - default: - throw new Error("Invalid type"); - } - - if (data) { - data.timestamp = key; - result.push(data); - } - - // Set key to the previous time period - switch (type) { - case "day": - key -= 86400; - break; - case "hour": - key -= 3600; - break; - case "minute": - key -= 60; - break; - default: - throw new Error("Invalid type"); - } - } - - return result; - } - - /** - * Get the uptime data for given duration. - * @param {string} duration A string with a number and a unit (m,h,d,w,M,y), such as 24h, 30d, 1y. - * @returns {UptimeDataResult} UptimeDataResult - * @throws {Error} Invalid duration / Unsupported unit - */ - getDataByDuration(duration) { - const durationNumStr = duration.slice(0, -1); - - if (!/^[0-9]+$/.test(durationNumStr)) { - throw new Error(`Invalid duration: ${duration}`); - } - const num = Number(durationNumStr); - const unit = duration.slice(-1); - - switch (unit) { - case "m": - return this.getData(num, "minute"); - case "h": - return this.getData(num, "hour"); - case "d": - return this.getData(num, "day"); - case "w": - return this.getData(7 * num, "day"); - case "M": - return this.getData(30 * num, "day"); - case "y": - return this.getData(365 * num, "day"); - default: - throw new Error(`Unsupported unit (${unit}) for badge duration ${duration}` - ); - } - } - - /** - * 1440 = 24 * 60mins - * @returns {UptimeDataResult} UptimeDataResult - */ - get24Hour() { - return this.getData(1440, "minute"); - } - - /** - * @returns {UptimeDataResult} UptimeDataResult - */ - get7Day() { - return this.getData(168, "hour"); - } - - /** - * @returns {UptimeDataResult} UptimeDataResult - */ - get30Day() { - return this.getData(30); - } - - /** - * @returns {UptimeDataResult} UptimeDataResult - */ - get1Year() { - return this.getData(365); - } - - /** - * @returns {dayjs.Dayjs} Current datetime in UTC - */ - getCurrentDate() { - return dayjs.utc(); - } - -} - -class UptimeDataResult { - /** - * @type {number} Uptime - */ - uptime = 0; - - /** - * @type {number} Average ping - */ - avgPing = null; -} - -module.exports = { - UptimeCalculator, - UptimeDataResult, -}; +const dayjs = require("dayjs"); +const { UP, MAINTENANCE, DOWN, PENDING } = require("../src/util"); +const { LimitQueue } = require("./utils/limit-queue"); +const { log } = require("../src/util"); +const { R } = require("redbean-node"); + +/** + * Calculates the uptime of a monitor. + */ +class UptimeCalculator { + /** + * @private + * @type {{string:UptimeCalculator}} + */ + + static list = {}; + + /** + * For testing purposes, we can set the current date to a specific date. + * @type {dayjs.Dayjs} + */ + static currentDate = null; + + /** + * monitorID the id of the monitor + * @type {number} + */ + monitorID; + + /** + * Recent 24-hour uptime, each item is a 1-minute interval + * Key: {number} DivisionKey + * @type {LimitQueue} + */ + minutelyUptimeDataList = new LimitQueue(24 * 60); + + /** + * Recent 30-day uptime, each item is a 1-hour interval + * Key: {number} DivisionKey + * @type {LimitQueue} + */ + hourlyUptimeDataList = new LimitQueue(30 * 24); + + /** + * Daily uptime data, + * Key: {number} DailyKey + */ + dailyUptimeDataList = new LimitQueue(365); + + lastUptimeData = null; + lastHourlyUptimeData = null; + lastDailyUptimeData = null; + + lastDailyStatBean = null; + lastHourlyStatBean = null; + lastMinutelyStatBean = null; + + /** + * Get the uptime calculator for a monitor + * Initializes and returns the monitor if it does not exist + * @param {number} monitorID the id of the monitor + * @returns {Promise} UptimeCalculator + */ + static async getUptimeCalculator(monitorID) { + if (!monitorID) { + throw new Error("Monitor ID is required"); + } + + if (!UptimeCalculator.list[monitorID]) { + UptimeCalculator.list[monitorID] = new UptimeCalculator(); + await UptimeCalculator.list[monitorID].init(monitorID); + } + return UptimeCalculator.list[monitorID]; + } + + /** + * Remove a monitor from the list + * @param {number} monitorID the id of the monitor + * @returns {Promise} + */ + static async remove(monitorID) { + delete UptimeCalculator.list[monitorID]; + } + + /** + * + */ + constructor() { + if (process.env.TEST_BACKEND) { + // Override the getCurrentDate() method to return a specific date + // Only for testing + this.getCurrentDate = () => { + if (UptimeCalculator.currentDate) { + return UptimeCalculator.currentDate; + } else { + return dayjs.utc(); + } + }; + } + } + + /** + * Initialize the uptime calculator for a monitor + * @param {number} monitorID the id of the monitor + * @returns {Promise} + */ + async init(monitorID) { + this.monitorID = monitorID; + + let now = this.getCurrentDate(); + + // Load minutely data from database (recent 24 hours only) + let minutelyStatBeans = await R.find("stat_minutely", " monitor_id = ? AND timestamp > ? ORDER BY timestamp", [ + monitorID, + this.getMinutelyKey(now.subtract(24, "hour")), + ]); + + for (let bean of minutelyStatBeans) { + let data = { + up: bean.up, + down: bean.down, + avgPing: bean.ping, + minPing: bean.pingMin, + maxPing: bean.pingMax, + }; + + if (bean.extras != null) { + data = { + ...data, + ...JSON.parse(bean.extras), + }; + } + + let key = bean.timestamp; + this.minutelyUptimeDataList.push(key, data); + } + + // Load hourly data from database (recent 30 days only) + let hourlyStatBeans = await R.find("stat_hourly", " monitor_id = ? AND timestamp > ? ORDER BY timestamp", [ + monitorID, + this.getHourlyKey(now.subtract(30, "day")), + ]); + + for (let bean of hourlyStatBeans) { + let data = { + up: bean.up, + down: bean.down, + avgPing: bean.ping, + minPing: bean.pingMin, + maxPing: bean.pingMax, + }; + + if (bean.extras != null) { + data = { + ...data, + ...JSON.parse(bean.extras), + }; + } + + this.hourlyUptimeDataList.push(bean.timestamp, data); + } + + // Load daily data from database (recent 365 days only) + let dailyStatBeans = await R.find("stat_daily", " monitor_id = ? AND timestamp > ? ORDER BY timestamp", [ + monitorID, + this.getDailyKey(now.subtract(365, "day")), + ]); + + for (let bean of dailyStatBeans) { + let data = { + up: bean.up, + down: bean.down, + avgPing: bean.ping, + minPing: bean.pingMin, + maxPing: bean.pingMax, + }; + + if (bean.extras != null) { + data = { + ...data, + ...JSON.parse(bean.extras), + }; + } + + this.dailyUptimeDataList.push(bean.timestamp, data); + } + } + + /** + * @param {number} status status + * @param {number} ping Ping + * @returns {dayjs.Dayjs} date + * @throws {Error} Invalid status + */ + async update(status, ping = 0) { + let date = this.getCurrentDate(); + + let flatStatus = this.flatStatus(status); + + if (flatStatus === DOWN && ping > 0) { + log.warn("uptime-calc", "The ping is not effective when the status is DOWN"); + } + + let divisionKey = this.getMinutelyKey(date); + let hourlyKey = this.getHourlyKey(date); + let dailyKey = this.getDailyKey(date); + + let minutelyData = this.minutelyUptimeDataList[divisionKey]; + let hourlyData = this.hourlyUptimeDataList[hourlyKey]; + let dailyData = this.dailyUptimeDataList[dailyKey]; + + if (status === MAINTENANCE) { + minutelyData.maintenance = minutelyData.maintenance ? minutelyData.maintenance + 1 : 1; + hourlyData.maintenance = hourlyData.maintenance ? hourlyData.maintenance + 1 : 1; + dailyData.maintenance = dailyData.maintenance ? dailyData.maintenance + 1 : 1; + + } else if (flatStatus === UP) { + minutelyData.up += 1; + hourlyData.up += 1; + dailyData.up += 1; + + // Only UP status can update the ping + if (!isNaN(ping)) { + // Add avg ping + // The first beat of the minute, the ping is the current ping + if (minutelyData.up === 1) { + minutelyData.avgPing = ping; + minutelyData.minPing = ping; + minutelyData.maxPing = ping; + } else { + minutelyData.avgPing = (minutelyData.avgPing * (minutelyData.up - 1) + ping) / minutelyData.up; + minutelyData.minPing = Math.min(minutelyData.minPing, ping); + minutelyData.maxPing = Math.max(minutelyData.maxPing, ping); + } + + // Add avg ping + // The first beat of the hour, the ping is the current ping + if (hourlyData.up === 1) { + hourlyData.avgPing = ping; + hourlyData.minPing = ping; + hourlyData.maxPing = ping; + } else { + hourlyData.avgPing = (hourlyData.avgPing * (hourlyData.up - 1) + ping) / hourlyData.up; + hourlyData.minPing = Math.min(hourlyData.minPing, ping); + hourlyData.maxPing = Math.max(hourlyData.maxPing, ping); + } + + // Add avg ping (daily) + // The first beat of the day, the ping is the current ping + if (dailyData.up === 1) { + dailyData.avgPing = ping; + dailyData.minPing = ping; + dailyData.maxPing = ping; + } else { + dailyData.avgPing = (dailyData.avgPing * (dailyData.up - 1) + ping) / dailyData.up; + dailyData.minPing = Math.min(dailyData.minPing, ping); + dailyData.maxPing = Math.max(dailyData.maxPing, ping); + } + } + + } else if (flatStatus === DOWN) { + minutelyData.down += 1; + hourlyData.down += 1; + dailyData.down += 1; + } + + if (minutelyData !== this.lastUptimeData) { + this.lastUptimeData = minutelyData; + } + + if (hourlyData !== this.lastHourlyUptimeData) { + this.lastHourlyUptimeData = hourlyData; + } + + if (dailyData !== this.lastDailyUptimeData) { + this.lastDailyUptimeData = dailyData; + } + + // Don't store data in test mode + if (process.env.TEST_BACKEND) { + log.debug("uptime-calc", "Skip storing data in test mode"); + return date; + } + + let dailyStatBean = await this.getDailyStatBean(dailyKey); + dailyStatBean.up = dailyData.up; + dailyStatBean.down = dailyData.down; + dailyStatBean.ping = dailyData.avgPing; + dailyStatBean.pingMin = dailyData.minPing; + dailyStatBean.pingMax = dailyData.maxPing; + { + // eslint-disable-next-line no-unused-vars + const { up, down, avgPing, minPing, maxPing, timestamp, ...extras } = dailyData; + if (Object.keys(extras).length > 0) { + dailyStatBean.extras = JSON.stringify(extras); + } + } + await R.store(dailyStatBean); + + let hourlyStatBean = await this.getHourlyStatBean(hourlyKey); + hourlyStatBean.up = hourlyData.up; + hourlyStatBean.down = hourlyData.down; + hourlyStatBean.ping = hourlyData.avgPing; + hourlyStatBean.pingMin = hourlyData.minPing; + hourlyStatBean.pingMax = hourlyData.maxPing; + { + // eslint-disable-next-line no-unused-vars + const { up, down, avgPing, minPing, maxPing, timestamp, ...extras } = hourlyData; + if (Object.keys(extras).length > 0) { + hourlyStatBean.extras = JSON.stringify(extras); + } + } + await R.store(hourlyStatBean); + + let minutelyStatBean = await this.getMinutelyStatBean(divisionKey); + minutelyStatBean.up = minutelyData.up; + minutelyStatBean.down = minutelyData.down; + minutelyStatBean.ping = minutelyData.avgPing; + minutelyStatBean.pingMin = minutelyData.minPing; + minutelyStatBean.pingMax = minutelyData.maxPing; + { + // eslint-disable-next-line no-unused-vars + const { up, down, avgPing, minPing, maxPing, timestamp, ...extras } = minutelyData; + if (Object.keys(extras).length > 0) { + minutelyStatBean.extras = JSON.stringify(extras); + } + } + await R.store(minutelyStatBean); + + // Remove the old data + log.debug("uptime-calc", "Remove old data"); + await R.exec("DELETE FROM stat_minutely WHERE monitor_id = ? AND timestamp < ?", [ + this.monitorID, + this.getMinutelyKey(date.subtract(24, "hour")), + ]); + + await R.exec("DELETE FROM stat_hourly WHERE monitor_id = ? AND timestamp < ?", [ + this.monitorID, + this.getHourlyKey(date.subtract(30, "day")), + ]); + + return date; + } + + /** + * Get the daily stat bean + * @param {number} timestamp milliseconds + * @returns {Promise} stat_daily bean + */ + async getDailyStatBean(timestamp) { + if (this.lastDailyStatBean && this.lastDailyStatBean.timestamp === timestamp) { + return this.lastDailyStatBean; + } + + let bean = await R.findOne("stat_daily", " monitor_id = ? AND timestamp = ?", [ + this.monitorID, + timestamp, + ]); + + if (!bean) { + bean = R.dispense("stat_daily"); + bean.monitor_id = this.monitorID; + bean.timestamp = timestamp; + } + + this.lastDailyStatBean = bean; + return this.lastDailyStatBean; + } + + /** + * Get the hourly stat bean + * @param {number} timestamp milliseconds + * @returns {Promise} stat_hourly bean + */ + async getHourlyStatBean(timestamp) { + if (this.lastHourlyStatBean && this.lastHourlyStatBean.timestamp === timestamp) { + return this.lastHourlyStatBean; + } + + let bean = await R.findOne("stat_hourly", " monitor_id = ? AND timestamp = ?", [ + this.monitorID, + timestamp, + ]); + + if (!bean) { + bean = R.dispense("stat_hourly"); + bean.monitor_id = this.monitorID; + bean.timestamp = timestamp; + } + + this.lastHourlyStatBean = bean; + return this.lastHourlyStatBean; + } + + /** + * Get the minutely stat bean + * @param {number} timestamp milliseconds + * @returns {Promise} stat_minutely bean + */ + async getMinutelyStatBean(timestamp) { + if (this.lastMinutelyStatBean && this.lastMinutelyStatBean.timestamp === timestamp) { + return this.lastMinutelyStatBean; + } + + let bean = await R.findOne("stat_minutely", " monitor_id = ? AND timestamp = ?", [ + this.monitorID, + timestamp, + ]); + + if (!bean) { + bean = R.dispense("stat_minutely"); + bean.monitor_id = this.monitorID; + bean.timestamp = timestamp; + } + + this.lastMinutelyStatBean = bean; + return this.lastMinutelyStatBean; + } + + /** + * Convert timestamp to minutely key + * @param {dayjs.Dayjs} date The heartbeat date + * @returns {number} Timestamp + */ + getMinutelyKey(date) { + // Truncate value to minutes (e.g. 2021-01-01 12:34:56 -> 2021-01-01 12:34:00) + date = date.startOf("minute"); + + // Convert to timestamp in second + let divisionKey = date.unix(); + + if (! (divisionKey in this.minutelyUptimeDataList)) { + this.minutelyUptimeDataList.push(divisionKey, { + up: 0, + down: 0, + avgPing: 0, + minPing: 0, + maxPing: 0, + }); + } + + return divisionKey; + } + + /** + * Convert timestamp to hourly key + * @param {dayjs.Dayjs} date The heartbeat date + * @returns {number} Timestamp + */ + getHourlyKey(date) { + // Truncate value to hours (e.g. 2021-01-01 12:34:56 -> 2021-01-01 12:00:00) + date = date.startOf("hour"); + + // Convert to timestamp in second + let divisionKey = date.unix(); + + if (! (divisionKey in this.hourlyUptimeDataList)) { + this.hourlyUptimeDataList.push(divisionKey, { + up: 0, + down: 0, + avgPing: 0, + minPing: 0, + maxPing: 0, + }); + } + + return divisionKey; + } + + /** + * Convert timestamp to daily key + * @param {dayjs.Dayjs} date The heartbeat date + * @returns {number} Timestamp + */ + getDailyKey(date) { + // Truncate value to start of day (e.g. 2021-01-01 12:34:56 -> 2021-01-01 00:00:00) + // Considering if the user keep changing could affect the calculation, so use UTC time to avoid this problem. + date = date.utc().startOf("day"); + let dailyKey = date.unix(); + + if (!this.dailyUptimeDataList[dailyKey]) { + this.dailyUptimeDataList.push(dailyKey, { + up: 0, + down: 0, + avgPing: 0, + minPing: 0, + maxPing: 0, + }); + } + + return dailyKey; + } + + /** + * Convert timestamp to key + * @param {dayjs.Dayjs} datetime Datetime + * @param {"day" | "hour" | "minute"} type the type of data which is expected to be returned + * @returns {number} Timestamp + * @throws {Error} If the type is invalid + */ + getKey(datetime, type) { + switch (type) { + case "day": + return this.getDailyKey(datetime); + case "hour": + return this.getHourlyKey(datetime); + case "minute": + return this.getMinutelyKey(datetime); + default: + throw new Error("Invalid type"); + } + } + + /** + * Flat status to UP or DOWN + * @param {number} status the status which should be turned into a flat status + * @returns {UP|DOWN|PENDING} The flat status + * @throws {Error} Invalid status + */ + flatStatus(status) { + switch (status) { + case UP: + case MAINTENANCE: + return UP; + case DOWN: + case PENDING: + return DOWN; + } + throw new Error("Invalid status"); + } + + /** + * @param {number} num the number of data points which are expected to be returned + * @param {"day" | "hour" | "minute"} type the type of data which is expected to be returned + * @returns {UptimeDataResult} UptimeDataResult + * @throws {Error} The maximum number of minutes greater than 1440 + */ + getData(num, type = "day") { + + if (type === "hour" && num > 24 * 30) { + throw new Error("The maximum number of hours is 720"); + } + if (type === "minute" && num > 24 * 60) { + throw new Error("The maximum number of minutes is 1440"); + } + if (type === "day" && num > 365) { + throw new Error("The maximum number of days is 365"); + } + // Get the current time period key based on the type + let key = this.getKey(this.getCurrentDate(), type); + + let total = { + up: 0, + down: 0, + }; + + let totalPing = 0; + let endTimestamp; + + // Get the eariest timestamp of the required period based on the type + switch (type) { + case "day": + endTimestamp = key - 86400 * (num - 1); + break; + case "hour": + endTimestamp = key - 3600 * (num - 1); + break; + case "minute": + endTimestamp = key - 60 * (num - 1); + break; + default: + throw new Error("Invalid type"); + } + + // Sum up all data in the specified time range + while (key >= endTimestamp) { + let data; + + switch (type) { + case "day": + data = this.dailyUptimeDataList[key]; + break; + case "hour": + data = this.hourlyUptimeDataList[key]; + break; + case "minute": + data = this.minutelyUptimeDataList[key]; + break; + default: + throw new Error("Invalid type"); + } + + if (data) { + total.up += data.up; + total.down += data.down; + totalPing += data.avgPing * data.up; + } + + // Set key to the previous time period + switch (type) { + case "day": + key -= 86400; + break; + case "hour": + key -= 3600; + break; + case "minute": + key -= 60; + break; + default: + throw new Error("Invalid type"); + } + } + + let uptimeData = new UptimeDataResult(); + + // If there is no data in the previous time ranges, use the last data? + if (total.up === 0 && total.down === 0) { + switch (type) { + case "day": + if (this.lastDailyUptimeData) { + total = this.lastDailyUptimeData; + totalPing = total.avgPing * total.up; + } else { + return uptimeData; + } + break; + case "hour": + if (this.lastHourlyUptimeData) { + total = this.lastHourlyUptimeData; + totalPing = total.avgPing * total.up; + } else { + return uptimeData; + } + break; + case "minute": + if (this.lastUptimeData) { + total = this.lastUptimeData; + totalPing = total.avgPing * total.up; + } else { + return uptimeData; + } + break; + default: + throw new Error("Invalid type"); + } + } + + let avgPing; + + if (total.up === 0) { + avgPing = null; + } else { + avgPing = totalPing / total.up; + } + + if (total.up + total.down === 0) { + uptimeData.uptime = 0; + } else { + uptimeData.uptime = total.up / (total.up + total.down); + } + uptimeData.avgPing = avgPing; + return uptimeData; + } + + /** + * Get data in form of an array + * @param {number} num the number of data points which are expected to be returned + * @param {"day" | "hour" | "minute"} type the type of data which is expected to be returned + * @returns {Array} uptime data + * @throws {Error} The maximum number of minutes greater than 1440 + */ + getDataArray(num, type = "day") { + if (type === "hour" && num > 24 * 30) { + throw new Error("The maximum number of hours is 720"); + } + if (type === "minute" && num > 24 * 60) { + throw new Error("The maximum number of minutes is 1440"); + } + + // Get the current time period key based on the type + let key = this.getKey(this.getCurrentDate(), type); + + let result = []; + + let endTimestamp; + + // Get the eariest timestamp of the required period based on the type + switch (type) { + case "day": + endTimestamp = key - 86400 * (num - 1); + break; + case "hour": + endTimestamp = key - 3600 * (num - 1); + break; + case "minute": + endTimestamp = key - 60 * (num - 1); + break; + default: + throw new Error("Invalid type"); + } + + // Get datapoints in the specified time range + while (key >= endTimestamp) { + let data; + + switch (type) { + case "day": + data = this.dailyUptimeDataList[key]; + break; + case "hour": + data = this.hourlyUptimeDataList[key]; + break; + case "minute": + data = this.minutelyUptimeDataList[key]; + break; + default: + throw new Error("Invalid type"); + } + + if (data) { + data.timestamp = key; + result.push(data); + } + + // Set key to the previous time period + switch (type) { + case "day": + key -= 86400; + break; + case "hour": + key -= 3600; + break; + case "minute": + key -= 60; + break; + default: + throw new Error("Invalid type"); + } + } + + return result; + } + + /** + * Get the uptime data for given duration. + * @param {string} duration A string with a number and a unit (m,h,d,w,M,y), such as 24h, 30d, 1y. + * @returns {UptimeDataResult} UptimeDataResult + * @throws {Error} Invalid duration / Unsupported unit + */ + getDataByDuration(duration) { + const durationNumStr = duration.slice(0, -1); + + if (!/^[0-9]+$/.test(durationNumStr)) { + throw new Error(`Invalid duration: ${duration}`); + } + const num = Number(durationNumStr); + const unit = duration.slice(-1); + + switch (unit) { + case "m": + return this.getData(num, "minute"); + case "h": + return this.getData(num, "hour"); + case "d": + return this.getData(num, "day"); + case "w": + return this.getData(7 * num, "day"); + case "M": + return this.getData(30 * num, "day"); + case "y": + return this.getData(365 * num, "day"); + default: + throw new Error(`Unsupported unit (${unit}) for badge duration ${duration}` + ); + } + } + + /** + * 1440 = 24 * 60mins + * @returns {UptimeDataResult} UptimeDataResult + */ + get24Hour() { + return this.getData(1440, "minute"); + } + + /** + * @returns {UptimeDataResult} UptimeDataResult + */ + get7Day() { + return this.getData(168, "hour"); + } + + /** + * @returns {UptimeDataResult} UptimeDataResult + */ + get30Day() { + return this.getData(30); + } + + /** + * @returns {UptimeDataResult} UptimeDataResult + */ + get1Year() { + return this.getData(365); + } + + /** + * @returns {dayjs.Dayjs} Current datetime in UTC + */ + getCurrentDate() { + return dayjs.utc(); + } + +} + +class UptimeDataResult { + /** + * @type {number} Uptime + */ + uptime = 0; + + /** + * @type {number} Average ping + */ + avgPing = null; +} + +module.exports = { + UptimeCalculator, + UptimeDataResult, +}; diff --git a/server/uptime-kuma-server.js b/server/uptime-kuma-server.js index 76bf42565..620ade506 100644 --- a/server/uptime-kuma-server.js +++ b/server/uptime-kuma-server.js @@ -1,555 +1,555 @@ -const express = require("express"); -const https = require("https"); -const fs = require("fs"); -const http = require("http"); -const { Server } = require("socket.io"); -const { R } = require("redbean-node"); -const { log, isDev } = require("../src/util"); -const Database = require("./database"); -const util = require("util"); -const { Settings } = require("./settings"); -const dayjs = require("dayjs"); -const childProcessAsync = require("promisify-child-process"); -const path = require("path"); -const axios = require("axios"); -const { isSSL, sslKey, sslCert, sslKeyPassphrase } = require("./config"); -// DO NOT IMPORT HERE IF THE MODULES USED `UptimeKumaServer.getInstance()`, put at the bottom of this file instead. - -/** - * `module.exports` (alias: `server`) should be inside this class, in order to avoid circular dependency issue. - * @type {UptimeKumaServer} - */ -class UptimeKumaServer { - /** - * Current server instance - * @type {UptimeKumaServer} - */ - static instance = null; - - /** - * Main monitor list - * @type {{}} - */ - monitorList = {}; - - /** - * Main maintenance list - * @type {{}} - */ - maintenanceList = {}; - - entryPage = "dashboard"; - app = undefined; - httpServer = undefined; - io = undefined; - - /** - * Cache Index HTML - * @type {string} - */ - indexHTML = ""; - - /** - * @type {{}} - */ - static monitorTypeList = { - - }; - - /** - * Use for decode the auth object - * @type {null} - */ - jwtSecret = null; - - /** - * Get the current instance of the server if it exists, otherwise - * create a new instance. - * @returns {UptimeKumaServer} Server instance - */ - static getInstance() { - if (UptimeKumaServer.instance == null) { - UptimeKumaServer.instance = new UptimeKumaServer(); - } - return UptimeKumaServer.instance; - } - - /** - * - */ - constructor() { - // Set axios default user-agent to Uptime-Kuma/version - axios.defaults.headers.common["User-Agent"] = this.getUserAgent(); - - // Set default axios timeout to 5 minutes instead of infinity - axios.defaults.timeout = 300 * 1000; - - log.info("server", "Creating express and socket.io instance"); - this.app = express(); - if (isSSL) { - log.info("server", "Server Type: HTTPS"); - this.httpServer = https.createServer({ - key: fs.readFileSync(sslKey), - cert: fs.readFileSync(sslCert), - passphrase: sslKeyPassphrase, - }, this.app); - } else { - log.info("server", "Server Type: HTTP"); - this.httpServer = http.createServer(this.app); - } - - try { - this.indexHTML = fs.readFileSync("./dist/index.html").toString(); - } catch (e) { - // "dist/index.html" is not necessary for development - if (process.env.NODE_ENV !== "development") { - log.error("server", "Error: Cannot find 'dist/index.html', did you install correctly?"); - process.exit(1); - } - } - - // Set Monitor Types - UptimeKumaServer.monitorTypeList["real-browser"] = new RealBrowserMonitorType(); - UptimeKumaServer.monitorTypeList["tailscale-ping"] = new TailscalePing(); - UptimeKumaServer.monitorTypeList["dns"] = new DnsMonitorType(); - UptimeKumaServer.monitorTypeList["mqtt"] = new MqttMonitorType(); - UptimeKumaServer.monitorTypeList["snmp"] = new SNMPMonitorType(); - UptimeKumaServer.monitorTypeList["mongodb"] = new MongodbMonitorType(); - - // Allow all CORS origins (polling) in development - let cors = undefined; - if (isDev) { - cors = { - origin: "*", - }; - } - - this.io = new Server(this.httpServer, { - cors, - allowRequest: async (req, callback) => { - let transport; - // It should be always true, but just in case, because this property is not documented - if (req._query) { - transport = req._query.transport; - } else { - log.error("socket", "Ops!!! Cannot get transport type, assume that it is polling"); - transport = "polling"; - } - - const clientIP = await this.getClientIPwithProxy(req.connection.remoteAddress, req.headers); - log.info("socket", `New ${transport} connection, IP = ${clientIP}`); - - // The following check is only for websocket connections, polling connections are already protected by CORS - if (transport === "polling") { - callback(null, true); - } else if (transport === "websocket") { - const bypass = process.env.UPTIME_KUMA_WS_ORIGIN_CHECK === "bypass"; - if (bypass) { - log.info("auth", "WebSocket origin check is bypassed"); - callback(null, true); - } else if (!req.headers.origin) { - log.info("auth", "WebSocket with no origin is allowed"); - callback(null, true); - } else { - let host = req.headers.host; - let origin = req.headers.origin; - - try { - let originURL = new URL(origin); - let xForwardedFor; - if (await Settings.get("trustProxy")) { - xForwardedFor = req.headers["x-forwarded-for"]; - } - - if (host !== originURL.host && xForwardedFor !== originURL.host) { - callback(null, false); - log.error("auth", `Origin (${origin}) does not match host (${host}), IP: ${clientIP}`); - } else { - callback(null, true); - } - } catch (e) { - // Invalid origin url, probably not from browser - callback(null, false); - log.error("auth", `Invalid origin url (${origin}), IP: ${clientIP}`); - } - } - } - } - }); - } - - /** - * Initialise app after the database has been set up - * @returns {Promise} - */ - async initAfterDatabaseReady() { - // Static - this.app.use("/screenshots", express.static(Database.screenshotDir)); - - process.env.TZ = await this.getTimezone(); - dayjs.tz.setDefault(process.env.TZ); - log.debug("DEBUG", "Timezone: " + process.env.TZ); - log.debug("DEBUG", "Current Time: " + dayjs.tz().format()); - - await this.loadMaintenanceList(); - } - - /** - * Send list of monitors to client - * @param {Socket} socket Socket to send list on - * @returns {Promise} List of monitors - */ - async sendMonitorList(socket) { - let list = await this.getMonitorJSONList(socket.userID); - this.io.to(socket.userID).emit("monitorList", list); - return list; - } - - /** - * Update Monitor into list - * @param {Socket} socket Socket to send list on - * @param {number} monitorID update or deleted monitor id - * @returns {Promise} - */ - async sendUpdateMonitorIntoList(socket, monitorID) { - let list = await this.getMonitorJSONList(socket.userID, monitorID); - this.io.to(socket.userID).emit("updateMonitorIntoList", list); - } - - /** - * Delete Monitor from list - * @param {Socket} socket Socket to send list on - * @param {number} monitorID update or deleted monitor id - * @returns {Promise} - */ - async sendDeleteMonitorFromList(socket, monitorID) { - this.io.to(socket.userID).emit("deleteMonitorFromList", monitorID); - } - - /** - * Get a list of monitors for the given user. - * @param {string} userID - The ID of the user to get monitors for. - * @param {number} monitorID - The ID of monitor for. - * @returns {Promise} A promise that resolves to an object with monitor IDs as keys and monitor objects as values. - * - * Generated by Trelent - */ - async getMonitorJSONList(userID, monitorID = null) { - - let query = " user_id = ? "; - let queryParams = [ userID ]; - - if (monitorID) { - query += "AND id = ? "; - queryParams.push(monitorID); - } - - let monitorList = await R.find("monitor", query + "ORDER BY weight DESC, name", queryParams); - - const monitorData = monitorList.map(monitor => ({ - id: monitor.id, - active: monitor.active, - name: monitor.name, - })); - const preloadData = await Monitor.preparePreloadData(monitorData); - - const result = {}; - monitorList.forEach(monitor => result[monitor.id] = monitor.toJSON(preloadData)); - return result; - } - - /** - * Send maintenance list to client - * @param {Socket} socket Socket.io instance to send to - * @returns {Promise} Maintenance list - */ - async sendMaintenanceList(socket) { - return await this.sendMaintenanceListByUserID(socket.userID); - } - - /** - * Send list of maintenances to user - * @param {number} userID User to send list to - * @returns {Promise} Maintenance list - */ - async sendMaintenanceListByUserID(userID) { - let list = await this.getMaintenanceJSONList(userID); - this.io.to(userID).emit("maintenanceList", list); - return list; - } - - /** - * Get a list of maintenances for the given user. - * @param {string} userID - The ID of the user to get maintenances for. - * @returns {Promise} A promise that resolves to an object with maintenance IDs as keys and maintenances objects as values. - */ - async getMaintenanceJSONList(userID) { - let result = {}; - for (let maintenanceID in this.maintenanceList) { - result[maintenanceID] = await this.maintenanceList[maintenanceID].toJSON(); - } - return result; - } - - /** - * Load maintenance list and run - * @param {any} userID Unused - * @returns {Promise} - */ - async loadMaintenanceList(userID) { - let maintenanceList = await R.findAll("maintenance", " ORDER BY end_date DESC, title", [ - - ]); - - for (let maintenance of maintenanceList) { - this.maintenanceList[maintenance.id] = maintenance; - maintenance.run(this); - } - } - - /** - * Retrieve a specific maintenance - * @param {number} maintenanceID ID of maintenance to retrieve - * @returns {(object|null)} Maintenance if it exists - */ - getMaintenance(maintenanceID) { - if (this.maintenanceList[maintenanceID]) { - return this.maintenanceList[maintenanceID]; - } - return null; - } - - /** - * Write error to log file - * @param {any} error The error to write - * @param {boolean} outputToConsole Should the error also be output to console? - * @returns {void} - */ - static errorLog(error, outputToConsole = true) { - const errorLogStream = fs.createWriteStream(path.join(Database.dataDir, "/error.log"), { - flags: "a" - }); - - errorLogStream.on("error", () => { - log.info("", "Cannot write to error.log"); - }); - - if (errorLogStream) { - const dateTime = R.isoDateTime(); - errorLogStream.write(`[${dateTime}] ` + util.format(error) + "\n"); - - if (outputToConsole) { - console.error(error); - } - } - - errorLogStream.end(); - } - - /** - * Get the IP of the client connected to the socket - * @param {Socket} socket Socket to query - * @returns {Promise} IP of client - */ - getClientIP(socket) { - return this.getClientIPwithProxy(socket.client.conn.remoteAddress, socket.client.conn.request.headers); - } - - /** - * @param {string} clientIP Raw client IP - * @param {IncomingHttpHeaders} headers HTTP headers - * @returns {Promise} Client IP with proxy (if trusted) - */ - async getClientIPwithProxy(clientIP, headers) { - if (clientIP === undefined) { - clientIP = ""; - } - - if (await Settings.get("trustProxy")) { - const forwardedFor = headers["x-forwarded-for"]; - - return (typeof forwardedFor === "string" ? forwardedFor.split(",")[0].trim() : null) - || headers["x-real-ip"] - || clientIP.replace(/^::ffff:/, ""); - } else { - return clientIP.replace(/^::ffff:/, ""); - } - } - - /** - * Attempt to get the current server timezone - * If this fails, fall back to environment variables and then make a - * guess. - * @returns {Promise} Current timezone - */ - async getTimezone() { - // From process.env.TZ - try { - if (process.env.TZ) { - this.checkTimezone(process.env.TZ); - return process.env.TZ; - } - } catch (e) { - log.warn("timezone", e.message + " in process.env.TZ"); - } - - let timezone = await Settings.get("serverTimezone"); - - // From Settings - try { - log.debug("timezone", "Using timezone from settings: " + timezone); - if (timezone) { - this.checkTimezone(timezone); - return timezone; - } - } catch (e) { - log.warn("timezone", e.message + " in settings"); - } - - // Guess - try { - let guess = dayjs.tz.guess(); - log.debug("timezone", "Guessing timezone: " + guess); - if (guess) { - this.checkTimezone(guess); - return guess; - } else { - return "UTC"; - } - } catch (e) { - // Guess failed, fall back to UTC - log.debug("timezone", "Guessed an invalid timezone. Use UTC as fallback"); - return "UTC"; - } - } - - /** - * Get the current offset - * @returns {string} Time offset - */ - getTimezoneOffset() { - return dayjs().format("Z"); - } - - /** - * Throw an error if the timezone is invalid - * @param {string} timezone Timezone to test - * @returns {void} - * @throws The timezone is invalid - */ - checkTimezone(timezone) { - try { - dayjs.utc("2013-11-18 11:55").tz(timezone).format(); - } catch (e) { - throw new Error("Invalid timezone:" + timezone); - } - } - - /** - * Set the current server timezone and environment variables - * @param {string} timezone Timezone to set - * @returns {Promise} - */ - async setTimezone(timezone) { - this.checkTimezone(timezone); - await Settings.set("serverTimezone", timezone, "general"); - process.env.TZ = timezone; - dayjs.tz.setDefault(timezone); - } - - /** - * TODO: Listen logic should be moved to here - * @returns {Promise} - */ - async start() { - let enable = await Settings.get("nscd"); - - if (enable || enable === null) { - await this.startNSCDServices(); - } - } - - /** - * Stop the server - * @returns {Promise} - */ - async stop() { - let enable = await Settings.get("nscd"); - - if (enable || enable === null) { - await this.stopNSCDServices(); - } - } - - /** - * Start all system services (e.g. nscd) - * For now, only used in Docker - * @returns {void} - */ - async startNSCDServices() { - if (process.env.UPTIME_KUMA_IS_CONTAINER) { - try { - log.info("services", "Starting nscd"); - await childProcessAsync.exec("sudo service nscd start"); - } catch (e) { - log.info("services", "Failed to start nscd"); - } - } - } - - /** - * Stop all system services - * @returns {void} - */ - async stopNSCDServices() { - if (process.env.UPTIME_KUMA_IS_CONTAINER) { - try { - log.info("services", "Stopping nscd"); - await childProcessAsync.exec("sudo service nscd stop"); - } catch (e) { - log.info("services", "Failed to stop nscd"); - } - } - } - - /** - * Default User-Agent when making HTTP requests - * @returns {string} User-Agent - */ - getUserAgent() { - return "Uptime-Kuma/" + require("../package.json").version; - } - - /** - * Force connected sockets of a user to refresh and disconnect. - * Used for resetting password. - * @param {string} userID User ID - * @param {string?} currentSocketID Current socket ID - * @returns {void} - */ - disconnectAllSocketClients(userID, currentSocketID = undefined) { - for (const socket of this.io.sockets.sockets.values()) { - if (socket.userID === userID && socket.id !== currentSocketID) { - try { - socket.emit("refresh"); - socket.disconnect(); - } catch (e) { - - } - } - } - } -} - -module.exports = { - UptimeKumaServer -}; - -// Must be at the end to avoid circular dependencies -const { RealBrowserMonitorType } = require("./monitor-types/real-browser-monitor-type"); -const { TailscalePing } = require("./monitor-types/tailscale-ping"); -const { DnsMonitorType } = require("./monitor-types/dns"); -const { MqttMonitorType } = require("./monitor-types/mqtt"); -const { SNMPMonitorType } = require("./monitor-types/snmp"); -const { MongodbMonitorType } = require("./monitor-types/mongodb"); -const Monitor = require("./model/monitor"); +const express = require("express"); +const https = require("https"); +const fs = require("fs"); +const http = require("http"); +const { Server } = require("socket.io"); +const { R } = require("redbean-node"); +const { log, isDev } = require("../src/util"); +const Database = require("./database"); +const util = require("util"); +const { Settings } = require("./settings"); +const dayjs = require("dayjs"); +const childProcessAsync = require("promisify-child-process"); +const path = require("path"); +const axios = require("axios"); +const { isSSL, sslKey, sslCert, sslKeyPassphrase } = require("./config"); +// DO NOT IMPORT HERE IF THE MODULES USED `UptimeKumaServer.getInstance()`, put at the bottom of this file instead. + +/** + * `module.exports` (alias: `server`) should be inside this class, in order to avoid circular dependency issue. + * @type {UptimeKumaServer} + */ +class UptimeKumaServer { + /** + * Current server instance + * @type {UptimeKumaServer} + */ + static instance = null; + + /** + * Main monitor list + * @type {{}} + */ + monitorList = {}; + + /** + * Main maintenance list + * @type {{}} + */ + maintenanceList = {}; + + entryPage = "dashboard"; + app = undefined; + httpServer = undefined; + io = undefined; + + /** + * Cache Index HTML + * @type {string} + */ + indexHTML = ""; + + /** + * @type {{}} + */ + static monitorTypeList = { + + }; + + /** + * Use for decode the auth object + * @type {null} + */ + jwtSecret = null; + + /** + * Get the current instance of the server if it exists, otherwise + * create a new instance. + * @returns {UptimeKumaServer} Server instance + */ + static getInstance() { + if (UptimeKumaServer.instance == null) { + UptimeKumaServer.instance = new UptimeKumaServer(); + } + return UptimeKumaServer.instance; + } + + /** + * + */ + constructor() { + // Set axios default user-agent to Uptime-Kuma/version + axios.defaults.headers.common["User-Agent"] = this.getUserAgent(); + + // Set default axios timeout to 5 minutes instead of infinity + axios.defaults.timeout = 300 * 1000; + + log.info("server", "Creating express and socket.io instance"); + this.app = express(); + if (isSSL) { + log.info("server", "Server Type: HTTPS"); + this.httpServer = https.createServer({ + key: fs.readFileSync(sslKey), + cert: fs.readFileSync(sslCert), + passphrase: sslKeyPassphrase, + }, this.app); + } else { + log.info("server", "Server Type: HTTP"); + this.httpServer = http.createServer(this.app); + } + + try { + this.indexHTML = fs.readFileSync("./dist/index.html").toString(); + } catch (e) { + // "dist/index.html" is not necessary for development + if (process.env.NODE_ENV !== "development") { + log.error("server", "Error: Cannot find 'dist/index.html', did you install correctly?"); + process.exit(1); + } + } + + // Set Monitor Types + UptimeKumaServer.monitorTypeList["real-browser"] = new RealBrowserMonitorType(); + UptimeKumaServer.monitorTypeList["tailscale-ping"] = new TailscalePing(); + UptimeKumaServer.monitorTypeList["dns"] = new DnsMonitorType(); + UptimeKumaServer.monitorTypeList["mqtt"] = new MqttMonitorType(); + UptimeKumaServer.monitorTypeList["snmp"] = new SNMPMonitorType(); + UptimeKumaServer.monitorTypeList["mongodb"] = new MongodbMonitorType(); + + // Allow all CORS origins (polling) in development + let cors = undefined; + if (isDev) { + cors = { + origin: "*", + }; + } + + this.io = new Server(this.httpServer, { + cors, + allowRequest: async (req, callback) => { + let transport; + // It should be always true, but just in case, because this property is not documented + if (req._query) { + transport = req._query.transport; + } else { + log.error("socket", "Ops!!! Cannot get transport type, assume that it is polling"); + transport = "polling"; + } + + const clientIP = await this.getClientIPwithProxy(req.connection.remoteAddress, req.headers); + log.info("socket", `New ${transport} connection, IP = ${clientIP}`); + + // The following check is only for websocket connections, polling connections are already protected by CORS + if (transport === "polling") { + callback(null, true); + } else if (transport === "websocket") { + const bypass = process.env.UPTIME_KUMA_WS_ORIGIN_CHECK === "bypass"; + if (bypass) { + log.info("auth", "WebSocket origin check is bypassed"); + callback(null, true); + } else if (!req.headers.origin) { + log.info("auth", "WebSocket with no origin is allowed"); + callback(null, true); + } else { + let host = req.headers.host; + let origin = req.headers.origin; + + try { + let originURL = new URL(origin); + let xForwardedFor; + if (await Settings.get("trustProxy")) { + xForwardedFor = req.headers["x-forwarded-for"]; + } + + if (host !== originURL.host && xForwardedFor !== originURL.host) { + callback(null, false); + log.error("auth", `Origin (${origin}) does not match host (${host}), IP: ${clientIP}`); + } else { + callback(null, true); + } + } catch (e) { + // Invalid origin url, probably not from browser + callback(null, false); + log.error("auth", `Invalid origin url (${origin}), IP: ${clientIP}`); + } + } + } + } + }); + } + + /** + * Initialise app after the database has been set up + * @returns {Promise} + */ + async initAfterDatabaseReady() { + // Static + this.app.use("/screenshots", express.static(Database.screenshotDir)); + + process.env.TZ = await this.getTimezone(); + dayjs.tz.setDefault(process.env.TZ); + log.debug("DEBUG", "Timezone: " + process.env.TZ); + log.debug("DEBUG", "Current Time: " + dayjs.tz().format()); + + await this.loadMaintenanceList(); + } + + /** + * Send list of monitors to client + * @param {Socket} socket Socket to send list on + * @returns {Promise} List of monitors + */ + async sendMonitorList(socket) { + let list = await this.getMonitorJSONList(socket.userID); + this.io.to(socket.userID).emit("monitorList", list); + return list; + } + + /** + * Update Monitor into list + * @param {Socket} socket Socket to send list on + * @param {number} monitorID update or deleted monitor id + * @returns {Promise} + */ + async sendUpdateMonitorIntoList(socket, monitorID) { + let list = await this.getMonitorJSONList(socket.userID, monitorID); + this.io.to(socket.userID).emit("updateMonitorIntoList", list); + } + + /** + * Delete Monitor from list + * @param {Socket} socket Socket to send list on + * @param {number} monitorID update or deleted monitor id + * @returns {Promise} + */ + async sendDeleteMonitorFromList(socket, monitorID) { + this.io.to(socket.userID).emit("deleteMonitorFromList", monitorID); + } + + /** + * Get a list of monitors for the given user. + * @param {string} userID - The ID of the user to get monitors for. + * @param {number} monitorID - The ID of monitor for. + * @returns {Promise} A promise that resolves to an object with monitor IDs as keys and monitor objects as values. + * + * Generated by Trelent + */ + async getMonitorJSONList(userID, monitorID = null) { + + let query = " user_id = ? "; + let queryParams = [ userID ]; + + if (monitorID) { + query += "AND id = ? "; + queryParams.push(monitorID); + } + + let monitorList = await R.find("monitor", query + "ORDER BY weight DESC, name", queryParams); + + const monitorData = monitorList.map(monitor => ({ + id: monitor.id, + active: monitor.active, + name: monitor.name, + })); + const preloadData = await Monitor.preparePreloadData(monitorData); + + const result = {}; + monitorList.forEach(monitor => result[monitor.id] = monitor.toJSON(preloadData)); + return result; + } + + /** + * Send maintenance list to client + * @param {Socket} socket Socket.io instance to send to + * @returns {Promise} Maintenance list + */ + async sendMaintenanceList(socket) { + return await this.sendMaintenanceListByUserID(socket.userID); + } + + /** + * Send list of maintenances to user + * @param {number} userID User to send list to + * @returns {Promise} Maintenance list + */ + async sendMaintenanceListByUserID(userID) { + let list = await this.getMaintenanceJSONList(userID); + this.io.to(userID).emit("maintenanceList", list); + return list; + } + + /** + * Get a list of maintenances for the given user. + * @param {string} userID - The ID of the user to get maintenances for. + * @returns {Promise} A promise that resolves to an object with maintenance IDs as keys and maintenances objects as values. + */ + async getMaintenanceJSONList(userID) { + let result = {}; + for (let maintenanceID in this.maintenanceList) { + result[maintenanceID] = await this.maintenanceList[maintenanceID].toJSON(); + } + return result; + } + + /** + * Load maintenance list and run + * @param {any} userID Unused + * @returns {Promise} + */ + async loadMaintenanceList(userID) { + let maintenanceList = await R.findAll("maintenance", " ORDER BY end_date DESC, title", [ + + ]); + + for (let maintenance of maintenanceList) { + this.maintenanceList[maintenance.id] = maintenance; + maintenance.run(this); + } + } + + /** + * Retrieve a specific maintenance + * @param {number} maintenanceID ID of maintenance to retrieve + * @returns {(object|null)} Maintenance if it exists + */ + getMaintenance(maintenanceID) { + if (this.maintenanceList[maintenanceID]) { + return this.maintenanceList[maintenanceID]; + } + return null; + } + + /** + * Write error to log file + * @param {any} error The error to write + * @param {boolean} outputToConsole Should the error also be output to console? + * @returns {void} + */ + static errorLog(error, outputToConsole = true) { + const errorLogStream = fs.createWriteStream(path.join(Database.dataDir, "/error.log"), { + flags: "a" + }); + + errorLogStream.on("error", () => { + log.info("", "Cannot write to error.log"); + }); + + if (errorLogStream) { + const dateTime = R.isoDateTime(); + errorLogStream.write(`[${dateTime}] ` + util.format(error) + "\n"); + + if (outputToConsole) { + console.error(error); + } + } + + errorLogStream.end(); + } + + /** + * Get the IP of the client connected to the socket + * @param {Socket} socket Socket to query + * @returns {Promise} IP of client + */ + getClientIP(socket) { + return this.getClientIPwithProxy(socket.client.conn.remoteAddress, socket.client.conn.request.headers); + } + + /** + * @param {string} clientIP Raw client IP + * @param {IncomingHttpHeaders} headers HTTP headers + * @returns {Promise} Client IP with proxy (if trusted) + */ + async getClientIPwithProxy(clientIP, headers) { + if (clientIP === undefined) { + clientIP = ""; + } + + if (await Settings.get("trustProxy")) { + const forwardedFor = headers["x-forwarded-for"]; + + return (typeof forwardedFor === "string" ? forwardedFor.split(",")[0].trim() : null) + || headers["x-real-ip"] + || clientIP.replace(/^::ffff:/, ""); + } else { + return clientIP.replace(/^::ffff:/, ""); + } + } + + /** + * Attempt to get the current server timezone + * If this fails, fall back to environment variables and then make a + * guess. + * @returns {Promise} Current timezone + */ + async getTimezone() { + // From process.env.TZ + try { + if (process.env.TZ) { + this.checkTimezone(process.env.TZ); + return process.env.TZ; + } + } catch (e) { + log.warn("timezone", e.message + " in process.env.TZ"); + } + + let timezone = await Settings.get("serverTimezone"); + + // From Settings + try { + log.debug("timezone", "Using timezone from settings: " + timezone); + if (timezone) { + this.checkTimezone(timezone); + return timezone; + } + } catch (e) { + log.warn("timezone", e.message + " in settings"); + } + + // Guess + try { + let guess = dayjs.tz.guess(); + log.debug("timezone", "Guessing timezone: " + guess); + if (guess) { + this.checkTimezone(guess); + return guess; + } else { + return "UTC"; + } + } catch (e) { + // Guess failed, fall back to UTC + log.debug("timezone", "Guessed an invalid timezone. Use UTC as fallback"); + return "UTC"; + } + } + + /** + * Get the current offset + * @returns {string} Time offset + */ + getTimezoneOffset() { + return dayjs().format("Z"); + } + + /** + * Throw an error if the timezone is invalid + * @param {string} timezone Timezone to test + * @returns {void} + * @throws The timezone is invalid + */ + checkTimezone(timezone) { + try { + dayjs.utc("2013-11-18 11:55").tz(timezone).format(); + } catch (e) { + throw new Error("Invalid timezone:" + timezone); + } + } + + /** + * Set the current server timezone and environment variables + * @param {string} timezone Timezone to set + * @returns {Promise} + */ + async setTimezone(timezone) { + this.checkTimezone(timezone); + await Settings.set("serverTimezone", timezone, "general"); + process.env.TZ = timezone; + dayjs.tz.setDefault(timezone); + } + + /** + * TODO: Listen logic should be moved to here + * @returns {Promise} + */ + async start() { + let enable = await Settings.get("nscd"); + + if (enable || enable === null) { + await this.startNSCDServices(); + } + } + + /** + * Stop the server + * @returns {Promise} + */ + async stop() { + let enable = await Settings.get("nscd"); + + if (enable || enable === null) { + await this.stopNSCDServices(); + } + } + + /** + * Start all system services (e.g. nscd) + * For now, only used in Docker + * @returns {void} + */ + async startNSCDServices() { + if (process.env.UPTIME_KUMA_IS_CONTAINER) { + try { + log.info("services", "Starting nscd"); + await childProcessAsync.exec("sudo service nscd start"); + } catch (e) { + log.info("services", "Failed to start nscd"); + } + } + } + + /** + * Stop all system services + * @returns {void} + */ + async stopNSCDServices() { + if (process.env.UPTIME_KUMA_IS_CONTAINER) { + try { + log.info("services", "Stopping nscd"); + await childProcessAsync.exec("sudo service nscd stop"); + } catch (e) { + log.info("services", "Failed to stop nscd"); + } + } + } + + /** + * Default User-Agent when making HTTP requests + * @returns {string} User-Agent + */ + getUserAgent() { + return "Uptime-Kuma/" + require("../package.json").version; + } + + /** + * Force connected sockets of a user to refresh and disconnect. + * Used for resetting password. + * @param {string} userID User ID + * @param {string?} currentSocketID Current socket ID + * @returns {void} + */ + disconnectAllSocketClients(userID, currentSocketID = undefined) { + for (const socket of this.io.sockets.sockets.values()) { + if (socket.userID === userID && socket.id !== currentSocketID) { + try { + socket.emit("refresh"); + socket.disconnect(); + } catch (e) { + + } + } + } + } +} + +module.exports = { + UptimeKumaServer +}; + +// Must be at the end to avoid circular dependencies +const { RealBrowserMonitorType } = require("./monitor-types/real-browser-monitor-type"); +const { TailscalePing } = require("./monitor-types/tailscale-ping"); +const { DnsMonitorType } = require("./monitor-types/dns"); +const { MqttMonitorType } = require("./monitor-types/mqtt"); +const { SNMPMonitorType } = require("./monitor-types/snmp"); +const { MongodbMonitorType } = require("./monitor-types/mongodb"); +const Monitor = require("./model/monitor"); diff --git a/src/components/HeartbeatBar.vue b/src/components/HeartbeatBar.vue index 96a62cf61..d4a69d09b 100644 --- a/src/components/HeartbeatBar.vue +++ b/src/components/HeartbeatBar.vue @@ -1,328 +1,328 @@ - - - - - + + + + + diff --git a/src/lang/bg-BG.json b/src/lang/bg-BG.json index 83c08525d..d0f4eaaa1 100644 --- a/src/lang/bg-BG.json +++ b/src/lang/bg-BG.json @@ -1,1054 +1,1054 @@ -{ - "languageName": "Български", - "checkEverySecond": "Ще се извършва на всеки {0} секунди", - "retryCheckEverySecond": "Ще се извършва на всеки {0} секунди", - "retriesDescription": "Максимален брой опити преди маркиране на услугата като недостъпна и изпращане на известие", - "ignoreTLSError": "Игнорирай TLS/SSL грешки за HTTPS уеб сайтове", - "upsideDownModeDescription": "Обръща статуса от достъпен на недостъпен. Ако услугата е достъпна, ще се вижда като НЕДОСТЪПНА.", - "maxRedirectDescription": "Максимален брой пренасочвания, които да бъдат следвани. Въведете 0 за да изключите пренасочване.", - "acceptedStatusCodesDescription": "Изберете статус кодове, които да се считат за успешен отговор.", - "passwordNotMatchMsg": "Повторената парола не съвпада.", - "notificationDescription": "Моля, задайте известието към монитор(и), за да функционира.", - "keywordDescription": "Търси ключова дума в чист HTML или JSON отговор - чувствителна е към регистъра.", - "pauseDashboardHome": "Пауза", - "deleteMonitorMsg": "Наистина ли желаете да изтриете този монитор?", - "deleteNotificationMsg": "Наистина ли желаете да изтриете това известие за всички монитори?", - "resolverserverDescription": "Cloudflare е сървърът по подразбиране, но можете да го промените по всяко време.", - "rrtypeDescription": "Изберете ресурсния запис, който желаете да наблюдавате", - "pauseMonitorMsg": "Наистина ли желаете да поставите в режим пауза?", - "enableDefaultNotificationDescription": "За всеки нов монитор това известие ще бъде активирано по подразбиране. Можете да го изключите за всеки отделен монитор.", - "clearEventsMsg": "Наистина ли желаете да изтриете всички събития за този монитор?", - "clearHeartbeatsMsg": "Наистина ли желаете да изтриете всички записи за честотни проверки на този монитор?", - "confirmClearStatisticsMsg": "Наистина ли желаете да изтриете всички статистически данни?", - "importHandleDescription": "Изберете 'Пропусни съществуващите', ако желаете да пропуснете всеки монитор или известие със същото име. 'Презапис' ще изтрие всеки съществуващ монитор и известие.", - "confirmImportMsg": "Сигурни ли сте, че желаете импортирането на архива? Моля, уверете се, че сте избрали правилната опция за импортиране.", - "twoFAVerifyLabel": "Моля, въведете вашия токен код, за да проверите дали 2FA работи:", - "tokenValidSettingsMsg": "Токен кодът е валиден! Вече можете да запазите настройките за 2FA.", - "confirmEnableTwoFAMsg": "Сигурни ли сте, че желаете да активирате 2FA?", - "confirmDisableTwoFAMsg": "Сигурни ли сте, че желаете да изключите 2FA?", - "Settings": "Настройки", - "Dashboard": "Табло", - "New Update": "Налична е актуализация", - "Language": "Език", - "Appearance": "Изглед", - "Theme": "Тема", - "General": "Общи", - "Version": "Версия", - "Check Update On GitHub": "Проверка за актуализация в GitHub", - "List": "Списък", - "Add": "Добави", - "Add New Monitor": "Добави монитор", - "Quick Stats": "Кратка статистика", - "Up": "Достъпен", - "Down": "Недостъпен", - "Pending": "Изчаква", - "Unknown": "Неизвестен", - "Pause": "Пауза", - "Name": "Име", - "Status": "Статус", - "DateTime": "Дата и час", - "Message": "Отговор", - "No important events": "Все още няма събития", - "Resume": "Възобнови", - "Edit": "Редактирай", - "Delete": "Изтрий", - "Current": "Текущ", - "Uptime": "Достъпност", - "Cert Exp.": "Вал. сертификат", - "day": "ден | дни", - "-day": "-дни", - "hour": "час", - "-hour": "-часa", - "Response": "Отговор", - "Ping": "Пинг", - "Monitor Type": "Монитор тип", - "Keyword": "Ключова дума", - "Friendly Name": "Псевдоним", - "URL": "URL Адрес", - "Hostname": "Име на хост", - "Port": "Порт", - "Heartbeat Interval": "Честота на проверка", - "Retries": "Повторни опити", - "Heartbeat Retry Interval": "Честота на повторните опити", - "Advanced": "Разширени", - "Upside Down Mode": "Обърнат режим", - "Max. Redirects": "Макс. брой пренасочвания", - "Accepted Status Codes": "Допустими статус кодове", - "Save": "Запази", - "Notifications": "Известия", - "Not available, please setup.": "Не са налични. Моля, настройте.", - "Setup Notification": "Настройка на известие", - "Light": "Светла", - "Dark": "Тъмна", - "Auto": "Автоматично", - "Theme - Heartbeat Bar": "Тема - поле проверки", - "Normal": "Нормално", - "Bottom": "Долу", - "None": "Без", - "Timezone": "Часова зона", - "Search Engine Visibility": "Видимост за търсачки", - "Allow indexing": "Разреши индексиране", - "Discourage search engines from indexing site": "Не позволявай на търсачките да индексират този сайт", - "Change Password": "Промяна на парола", - "Current Password": "Текуща парола", - "New Password": "Нова парола", - "Repeat New Password": "Повторете новата парола", - "Update Password": "Актуализирай паролата", - "Disable Auth": "Изключи удостоверяване", - "Enable Auth": "Активирай удостоверяване", - "disableauth.message1": "Сигурни ли сте, че желаете да {disableAuth}?", - "disable authentication": "изключите удостоверяването", - "disableauth.message2": "Използва се в случаите, когато {intendThirdPartyAuth} преди Uptime Kuma, например Cloudflare Access, Authelia или друг механизъм за удостоверяване.", - "where you intend to implement third-party authentication": "има настроен алтернативен метод за удостоверяване", - "Please use this option carefully!": "Моля, използвайте с повишено внимание!", - "Logout": "Изход от профила", - "Leave": "Отказ", - "I understand, please disable": "Разбирам. Моля, изключи", - "Confirm": "Потвърдете", - "Yes": "Да", - "No": "Не", - "Username": "Потребител", - "Password": "Парола", - "Remember me": "Запомни ме", - "Login": "Вход", - "No Monitors, please": "Все още няма монитори. Моля,", - "add one": "добавете един.", - "Notification Type": "Тип известие", - "Email": "Имейл", - "Test": "Тест", - "Certificate Info": "Информация за сертификат", - "Resolver Server": "Преобразуващ (DNS) сървър", - "Resource Record Type": "Тип запис", - "Last Result": "Последен резултат", - "Create your admin account": "Създаване на администриращ акаунт", - "Repeat Password": "Повторете паролата", - "Import Backup": "Импорт на архив", - "Export Backup": "Експорт на архив", - "Export": "Експорт", - "Import": "Импорт", - "respTime": "Време за отговор (ms)", - "notAvailableShort": "Няма", - "Default enabled": "Активирано по подразбиране", - "Apply on all existing monitors": "Приложи върху всички съществуващи монитори", - "Create": "Създай", - "Clear Data": "Изтрий данни", - "Events": "Събития", - "Heartbeats": "Проверки", - "Auto Get": "Авт. попълване", - "backupDescription": "Можете да архивирате всички монитори и всички известия в JSON файл.", - "backupDescription2": "PS: Имайте предвид, че данните за история и събития няма да бъдат включени.", - "backupDescription3": "Чувствителни данни, като токен кодове за известия, се съдържат в експортирания файл. Моля, бъдете внимателни с неговото съхранение.", - "alertNoFile": "Моля, изберете файл за импортиране.", - "alertWrongFileType": "Моля, изберете JSON файл.", - "Clear all statistics": "Изтрий цялата статистика", - "Skip existing": "Пропусни съществуващите", - "Overwrite": "Презапиши", - "Options": "Опции", - "Keep both": "Запази двете", - "Verify Token": "Провери токен код", - "Setup 2FA": "Настройка на 2FA", - "Enable 2FA": "Активирай 2FA", - "Disable 2FA": "Деактивирай 2FA", - "2FA Settings": "Настройка за 2FA", - "Two Factor Authentication": "Двуфакторно удостоверяване", - "Active": "Активно", - "Inactive": "Неактивно", - "Token": "Токен код", - "Show URI": "Покажи URI", - "Tags": "Етикети", - "Add New below or Select...": "Добавете нов по-долу или изберете…", - "Tag with this name already exist.": "Етикет с това име вече съществува.", - "Tag with this value already exist.": "Етикет с тази стойност вече съществува.", - "color": "цвят", - "value (optional)": "стойност (по желание)", - "Gray": "Сиво", - "Red": "Червено", - "Orange": "Оранжево", - "Green": "Зелено", - "Blue": "Синьо", - "Indigo": "Индиго", - "Purple": "Лилаво", - "Pink": "Розово", - "Search...": "Търси…", - "Avg. Ping": "Ср. пинг", - "Avg. Response": "Ср. отговор", - "Entry Page": "Основна страница", - "statusPageNothing": "Все още няма нищо тук. Моля, добавете група или монитор.", - "No Services": "Няма Услуги", - "All Systems Operational": "Всички услуги са достъпни", - "Partially Degraded Service": "Част от услугите са недостъпни", - "Degraded Service": "Всички услуги са недостъпни", - "Add Group": "Добави група", - "Add a monitor": "Добави монитор", - "Edit Status Page": "Редактиране на статус страницата", - "Go to Dashboard": "Към Таблото", - "telegram": "Telegram", - "webhook": "Уеб кука", - "smtp": "Имейл (SMTP)", - "discord": "Discord", - "teams": "Microsoft Teams", - "signal": "Signal", - "gotify": "Gotify", - "slack": "Slack", - "rocket.chat": "Rocket.chat", - "pushover": "Pushover", - "pushy": "Pushy", - "octopush": "Octopush", - "promosms": "PromoSMS", - "lunasea": "LunaSea", - "apprise": "Apprise (Поддържа 50+ услуги за известяване)", - "pushbullet": "Pushbullet", - "line": "Line Messenger", - "mattermost": "Mattermost", - "Status Page": "Статус страница", - "Status Pages": "Статус страници", - "Primary Base URL": "Базов URL адрес", - "Push URL": "Генериран Push URL адрес", - "needPushEvery": "Необходимо е да извършвате заявка към този URL адрес на всеки {0} секунди.", - "pushOptionalParams": "Допълнителни, но не задължителни параметри: {0}", - "defaultNotificationName": "Моето {notification} известие ({number})", - "here": "тук", - "Required": "Задължително поле", - "Bot Token": "Бот токен", - "wayToGetTelegramToken": "Можете да получите токен от {0}.", - "Chat ID": "Чат ID", - "supportTelegramChatID": "Поддържа Direct Chat / Group / Channel's Chat ID", - "wayToGetTelegramChatID": "Можете да получите вашето чат ID, като изпратите съобщение на бота, след което е нужно да посетите този URL адрес за да го видите:", - "YOUR BOT TOKEN HERE": "ВАШИЯТ БОТ ТОКЕН ТУК", - "chatIDNotFound": "Чат ID не е намерено. Моля, първо изпратете съобщение до този бот", - "Post URL": "Post URL адрес", - "Content Type": "Тип съдържание", - "webhookJsonDesc": "{0} е подходящ за всички съвременни http сървъри, като например express.js", - "webhookFormDataDesc": "{multipart} е подходящ за PHP, нужно е да анализирате json чрез {decodeFunction}", - "secureOptionNone": "Няма (25) / STARTTLS (587)", - "secureOptionTLS": "TLS (465)", - "Ignore TLS Error": "Игнорирай TLS грешките", - "From Email": "От имейл адрес", - "emailCustomSubject": "Модифициране на тема", - "To Email": "Получател имейл адрес", - "smtpCC": "Явно копие до имейл адрес:", - "smtpBCC": "Скрито копие до имейл адрес:", - "Discord Webhook URL": "Discord URL адрес на уеб кука", - "wayToGetDiscordURL": "Можете да създадете, от меню \"Настройки на сървъра\" -> \"Интеграции\" -> \"Уеб куки\" -> \"Нова уеб кука\"", - "Bot Display Name": "Име на бота, което да се показва", - "Prefix Custom Message": "Модифицирано обръщение", - "Hello @everyone is...": "Здравейте, {'@'}everyone е…", - "Webhook URL": "Уеб кука URL адрес", - "wayToGetTeamsURL": "Можете да научите как се създава URL адрес за уеб кука {0}.", - "Number": "Номер", - "Recipients": "Получатели", - "needSignalAPI": "Необходимо е да разполагате със Signal клиент с REST API.", - "wayToCheckSignalURL": "Можете да посетите този URL адрес, ако се нуждаете от помощ при настройването:", - "signalImportant": "ВАЖНО: Не можете да смесвате \"Групи\" и \"Номера\" в поле \"Получатели\"!", - "Application Token": "Токен код за приложението", - "Server URL": "URL адрес на сървъра", - "Priority": "Приоритет", - "Icon Emoji": "Иконка Емотикон", - "Channel Name": "Канал име", - "Uptime Kuma URL": "Uptime Kuma URL адрес", - "aboutWebhooks": "Повече информация относно уеб куки на: {0}", - "aboutChannelName": "Въведете името на канала в поле {0} \"Канал име\", ако желаете да заобиколите канала от уеб куката. Например: #other-channel", - "aboutKumaURL": "Ако оставите празно полето \"Uptime Kuma URL адрес\", по подразбиране ще се използва GitHub страницата на проекта.", - "emojiCheatSheet": "Подсказки за емотикони: {0}", - "User Key": "Потребителски ключ", - "Device": "Устройство", - "Message Title": "Заглавие на съобщението", - "Notification Sound": "Звуков сигнал", - "More info on:": "Повече информация на: {0}", - "pushoverDesc1": "Приоритет Спешно (2) по подразбиране изчаква 30 секунди между повторните опити и изтича след 1 час.", - "pushoverDesc2": "Ако желаете да изпратите известия до различни устройства, попълнете полето Устройство.", - "SMS Type": "SMS тип", - "octopushTypePremium": "Премиум (Бърз - препоръчителен в случай на тревога)", - "octopushTypeLowCost": "Евтин (Бавен - понякога бива блокиран от оператора)", - "checkPrice": "Тарифни планове на {0}:", - "octopushLegacyHint": "Дали използвате съвместима версия на Octopush (2011-2020) или нова версия?", - "Check octopush prices": "Тарифни планове на octopush {0}.", - "octopushPhoneNumber": "Телефонен номер (в международен формат, например: +33612345678) ", - "octopushSMSSender": "SMS подател Име: 3-11 знака - букви, цифри и интервал (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea ID на устройство", - "Apprise URL": "Apprise URL адрес", - "Example:": "Пример: {0}", - "Read more:": "Научете повече: {0}", - "Status:": "Статус: {0}", - "Read more": "Научете повече", - "appriseInstalled": "Apprise е инсталиран.", - "appriseNotInstalled": "Apprise не е инсталиран. {0}", - "Access Token": "Токен код за достъп", - "Channel access token": "Канал токен код", - "Line Developers Console": "Line - Конзола за разработчици", - "lineDevConsoleTo": "Line - Конзола за разработчици - {0}", - "Basic Settings": "Основни настройки", - "User ID": "Потребител ID", - "Messaging API": "API за съобщаване", - "wayToGetLineChannelToken": "Необходимо е първо да посетите {0}, за да създадете (Messaging API) за доставчик и канал, след което можете да вземете токен кода за канал и потребителско ID от споменатите по-горе елементи на менюто.", - "Icon URL": "URL адрес за иконка", - "aboutIconURL": "Можете да предоставите линк към картинка в поле \"URL Адрес за иконка\" за да отмените картинката на профила по подразбиране. Няма да се използва, ако вече сте настроили емотикон.", - "aboutMattermostChannelName": "Можете да замените канала по подразбиране, към който публикува уеб куката, като въведете името на канала в полето \"Канал име\". Трябва да бъде активирано в настройките за уеб кука на Mattermost. Например: #other-channel", - "matrix": "Matrix", - "promosmsTypeEco": "SMS ECO - евтин, но бавен. Често е претоварен. Само за получатели от Полша.", - "promosmsTypeFlash": "SMS FLASH - Съобщението автоматично се показва на устройството на получателя. Само за получатели от Полша.", - "promosmsTypeFull": "SMS FULL - Високо ниво на SMS услуга. Можете да използвате Вашето име като подател (Необходимо е първо да регистрирате името). Надежден метод за съобщения тип тревога.", - "promosmsTypeSpeed": "SMS SPEED - Най-висок приоритет в системата. Много бърза и надеждна, но същевременно скъпа услуга. (Около два пъти по-висока цена в сравнение с SMS FULL).", - "promosmsPhoneNumber": "Телефонен номер (за получатели от Полша, можете да пропуснете въвеждането на код за населено място)", - "promosmsSMSSender": "SMS Подател име: Предварително регистрирано име или някое от имената по подразбиране: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu URL адрес за уеб кука", - "matrixHomeserverURL": "Сървър URL адрес (започва с http(s):// и порт по желание)", - "Internal Room Id": "ID на вътрешна стая", - "matrixDesc1": "Можете да намерите \"ID на вътрешна стая\" в разширените настройки на стаята във вашия Matrix клиент. Примерен изглед: !QMdRCpUIfLwsfjxye6:home.server.", - "matrixDesc2": "Силно препоръчваме да създадете НОВ потребител и да НЕ използвате токен кодът на вашия личен Matrix потребител, т.к. той позволява пълен достъп до вашия акаунт и всички стаи към които сте се присъединили. Вместо това създайте нов потребител и го поканете само в стаята, където желаете да получавате известията. Токен код за достъп ще получите изпълнявайки {0}", - "Method": "Метод", - "Body": "Съобщение", - "Headers": "Хедъри", - "PushUrl": "Push URL адрес", - "HeadersInvalidFormat": "Заявените хедъри не са валидни JSON: ", - "BodyInvalidFormat": "Заявеното съобщение не е валиден JSON: ", - "Monitor History": "История на мониторите", - "clearDataOlderThan": "Ще се съхранява за {0} дни.", - "records": "записа", - "One record": "Един запис", - "steamApiKeyDescription": "За да мониторирате Steam Game Server се нуждаете от Steam Web-API ключ. Можете да регистрирате Вашия API ключ тук: ", - "clicksendsms": "ClickSend SMS", - "apiCredentials": "API удостоверяване", - "PasswordsDoNotMatch": "Паролите не съвпадат.", - "Current User": "Текущ потребител", - "recent": "Скорошни", - "Done": "Готово", - "Info": "Информация", - "Security": "Сигурност", - "Steam API Key": "Steam API ключ", - "Shrink Database": "Редуцирай базата данни", - "Pick a RR-Type...": "Изберете вида на ресурсния запис за мониториране…", - "Pick Accepted Status Codes...": "Изберете статус кодове, които да се считат за успешен отговор…", - "Default": "По подразбиране", - "HTTP Options": "HTTP Опции", - "Create Incident": "Създаване на инцидент", - "Title": "Заглавие", - "Content": "Съдържание", - "Style": "Стил", - "info": "информация", - "warning": "предупреждение", - "danger": "опасност", - "primary": "основен", - "light": "светъл", - "dark": "тъмен", - "Post": "Публикувай", - "Please input title and content": "Моля, въведете заглавие и съдържание", - "Created": "Създаден", - "Last Updated": "Последно обновена", - "Unpin": "Откачи", - "Switch to Light Theme": "Превключи към светла тема", - "Switch to Dark Theme": "Превключи към тъмна тема", - "Show Tags": "Покажи етикети", - "Hide Tags": "Скрий етикети", - "Description": "Описание", - "No monitors available.": "Няма налични монитори.", - "Add one": "Добави един", - "No Monitors": "Няма монитори", - "Untitled Group": "Група без заглавие", - "Services": "Услуги", - "Discard": "Отмени", - "Cancel": "Отмени", - "Powered by": "Създадено чрез", - "serwersms": "SerwerSMS.pl", - "serwersmsAPIUser": "API Потребителско име (вкл. webapi_ prefix)", - "serwersmsAPIPassword": "API Парола", - "serwersmsPhoneNumber": "Телефон номер", - "serwersmsSenderName": "SMS Подател име (регистриран през клиентския портал)", - "stackfield": "Stackfield", - "smtpDkimSettings": "DKIM Настройки", - "smtpDkimDesc": "Моля, вижте {0} на Nodemailer DKIM за инструкции.", - "documentation": "документацията", - "smtpDkimDomain": "Домейн", - "smtpDkimKeySelector": "Селектор на ключ", - "smtpDkimPrivateKey": "Частен ключ", - "smtpDkimHashAlgo": "Хеш алгоритъм (по желание)", - "smtpDkimheaderFieldNames": "Хедър ключове за подписване (по желание)", - "smtpDkimskipFields": "Хедър ключове, които да не се подписват (по желание)", - "PushByTechulus": "Push от Techulus", - "GoogleChat": "Google Chat (Само за работното пространство на Google)", - "gorush": "Gorush", - "alerta": "Alerta", - "alertaApiEndpoint": "Крайна точка на API", - "alertaEnvironment": "Среда", - "alertaApiKey": "API Ключ", - "alertaAlertState": "Състояние на тревога", - "alertaRecoverState": "Състояние на възстановяване", - "deleteStatusPageMsg": "Сигурни ли сте, че желаете да изтриете тази статус страница?", - "Proxies": "Прокси", - "default": "По подразбиране", - "enabled": "Активирано", - "setAsDefault": "Зададен по подразбиране", - "deleteProxyMsg": "Сигурни ли сте, че желаете да изтриете това прокси за всички монитори?", - "proxyDescription": "За да функционират трябва да бъдат зададени към монитор.", - "enableProxyDescription": "Това прокси няма да има ефект върху заявките за мониторинг, докато не бъде активирано. Можете да контролирате временното деактивиране на проксито от всички монитори чрез статуса на активиране.", - "setAsDefaultProxyDescription": "Това прокси ще бъде активно по подразбиране за новите монитори. Можете да го изключвате отделно за всеки един монитор.", - "Certificate Chain": "Верига на сертификата", - "Valid": "Валиден", - "Invalid": "Невалиден", - "AccessKeyId": "ID на ключ за достъп", - "SecretAccessKey": "Тайна на ключа за достъп", - "PhoneNumbers": "Телефонни номера", - "TemplateCode": "Шаблон Код", - "SignName": "Знак име", - "Sms template must contain parameters: ": "SMS шаблонът трябва да съдържа следните параметри: ", - "Bark Endpoint": "Bark крайна точка", - "WebHookUrl": "URL адрес на уеб кука", - "SecretKey": "Таен ключ", - "For safety, must use secret key": "За сигурност, трябва да се използва таен ключ", - "Device Token": "Токен за устройство", - "Platform": "Платформа", - "Huawei": "Huawei", - "High": "Висок", - "Retry": "Повтори", - "Topic": "Тема", - "WeCom Bot Key": "WeCom бот ключ", - "Setup Proxy": "Настройка на прокси", - "Proxy Protocol": "Прокси протокол", - "Proxy Server": "Прокси сървър", - "Proxy server has authentication": "Прокси сървърът е с удостоверяване", - "User": "Потребител", - "Installed": "Инсталиран", - "Not installed": "Не е инсталиран", - "Running": "Работи", - "Not running": "Не работи", - "Remove Token": "Премахни токен", - "Start": "Стартирай", - "Stop": "Спри", - "Uptime Kuma": "Uptime Kuma", - "Add New Status Page": "Добави нова статус страница", - "Slug": "Слъг", - "Accept characters:": "Приеми символи:", - "startOrEndWithOnly": "Започва или завършва само с {0}", - "No consecutive dashes": "Без последователни тирета", - "Next": "Следващ", - "The slug is already taken. Please choose another slug.": "Този слъг вече се използва. Моля изберете друг.", - "No Proxy": "Без прокси", - "Authentication": "Удостоверяване", - "HTTP Basic Auth": "HTTP основно удостоверяване", - "New Status Page": "Нова статус страница", - "Page Not Found": "Страницата не е открита", - "Reverse Proxy": "Ревърс прокси", - "Backup": "Архивиране", - "About": "Относно", - "wayToGetCloudflaredURL": "(Свалете \"cloudflared\" от {0})", - "cloudflareWebsite": "Cloudflare уеб сайт", - "Message:": "Съобщение:", - "Don't know how to get the token? Please read the guide:": "Не знаете как да вземете токен? Моля, прочетете ръководството:", - "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Текущата връзка може да прекъсне ако в момента сте свързани чрез \"Cloudflare Tunnel\". Сигурни ли сте, че желаете да го спрете? Моля, въведете Вашата текуща парола за да потвърдите.", - "Other Software": "Друг софтуер", - "For example: nginx, Apache and Traefik.": "Например: Nginx, Apache и Traefik.", - "Please read": "Моля, прочетете", - "Subject:": "Субект:", - "Valid To:": "Валиден до:", - "Days Remaining:": "Оставащи дни:", - "Issuer:": "Издател:", - "Fingerprint:": "Пръстов отпечатък:", - "No status pages": "Няма статус страници", - "topic": "Тема", - "topicExplanation": "MQTT тема за мониториране", - "successMessage": "Съобщение при успех", - "successMessageExplanation": "MQTT съобщение, което ще бъде считано за успех", - "Customize": "Персонализирай", - "Custom Footer": "Персонализиран долен колонтитул", - "Custom CSS": "Потребителски CSS", - "Domain Name Expiry Notification": "Известие при изтичащ домейн", - "Proxy": "Прокси", - "Date Created": "Дата на създаване", - "onebotHttpAddress": "OneBot HTTP адрес", - "onebotMessageType": "OneBot тип съобщение", - "onebotGroupMessage": "Група", - "onebotPrivateMessage": "Лично", - "onebotUserOrGroupId": "Група/Потребител ID", - "onebotSafetyTips": "С цел безопасност трябва да зададете токен код за достъп", - "PushDeer Key": "PushDeer ключ", - "Footer Text": "Текст долен колонтитул", - "Show Powered By": "Покажи \"Създадено чрез\"", - "Domain Names": "Домейни", - "signedInDisp": "Вписан като {0}", - "signedInDispDisabled": "Удостоверяването е изключено.", - "Certificate Expiry Notification": "Известие за изтичане валидността на сертификата", - "API Username": "API Потребител", - "API Key": "API Ключ", - "Recipient Number": "Номер на получателя", - "From Name/Number": "От Име/Номер", - "Leave blank to use a shared sender number.": "Оставете празно, за да използвате споделен номер на подател.", - "Octopush API Version": "Octopush API версия", - "Legacy Octopush-DM": "Octopush-DM старa версия", - "endpoint": "крайна точка", - "octopushAPIKey": "\"API ключ\" от HTTP API удостоверяване в контролния панел", - "octopushLogin": "\"Вписване\" от HTTP API удостоверяване в контролния панел", - "promosmsLogin": "API Потребителско име", - "promosmsPassword": "API Парола", - "pushoversounds pushover": "Pushover (по подразбиране)", - "pushoversounds bike": "Велосипед", - "pushoversounds bugle": "Тромпет", - "pushoversounds cashregister": "Касов апарат", - "pushoversounds classical": "Класическа музика", - "pushoversounds cosmic": "Космически", - "pushoversounds falling": "Падащ", - "pushoversounds gamelan": "Гамелан", - "pushoversounds incoming": "Входящ", - "pushoversounds intermission": "Прекъсване", - "pushoversounds magic": "Магия", - "pushoversounds mechanical": "Механичен", - "pushoversounds pianobar": "Пиано бар", - "pushoversounds siren": "Сирена", - "pushoversounds spacealarm": "Космическа аларма", - "pushoversounds tugboat": "Буксир", - "pushoversounds alien": "Извънземна аларма (дълъг)", - "pushoversounds climb": "Изкачване (дълъг)", - "pushoversounds persistent": "Постоянен (дълъг)", - "pushoversounds echo": "Pushover ехо (дълъг)", - "pushoversounds updown": "Горе долу (дълъг)", - "pushoversounds vibrate": "Само вибрация", - "pushoversounds none": "Без (тих)", - "pushyAPIKey": "Таен API ключ", - "pushyToken": "Токен на устройство", - "Show update if available": "Покажи актуализация, ако е налична", - "Also check beta release": "Проверявай и за бета версии", - "Using a Reverse Proxy?": "Използвате ревърс прокси?", - "Check how to config it for WebSocket": "Проверете как да го конфигурирате за WebSocket", - "Steam Game Server": "Steam Game сървър", - "Most likely causes:": "Най-вероятни причини:", - "The resource is no longer available.": "Ресурсът вече не е наличен.", - "There might be a typing error in the address.": "Възможно е да е допусната грешка при изписването на адреса.", - "What you can try:": "Какво можете да опитате:", - "Retype the address.": "Повторно въвеждане на адреса.", - "Go back to the previous page.": "Да се върнете към предишната страница.", - "Coming Soon": "Очаквайте скоро", - "wayToGetClickSendSMSToken": "Можете да получите API потребителско име и API ключ от {0} .", - "dnsPortDescription": "DNS порт на сървъра. По подразбиране е 53. Можете да го промените по всяко време.", - "error": "грешка", - "critical": "критично", - "wayToGetPagerDutyKey": "Можете да го получите като посетите Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Тук трябва да потърсите \"Events API V2\". Повече информация {0}", - "Integration Key": "Ключ за интегриране", - "Integration URL": "URL адрес за интеграция", - "Auto resolve or acknowledged": "Автоматично разрешаване или потвърждаване", - "do nothing": "не прави нищо", - "auto acknowledged": "автоматично потвърждаване", - "auto resolve": "автоматично разрешаване", - "Connection String": "Стринг за връзка", - "Query": "Заявка", - "settingsCertificateExpiry": "Изтичане валидността на TLS сертификата", - "certificationExpiryDescription": "HTTPS мониторите ще задействат известие, ако е наличен изтичащ TLS сертификат, през следващите:", - "ntfy Topic": "ntfy Тема", - "Domain": "Домейн", - "Workstation": "Работна станция", - "disableCloudflaredNoAuthMsg": "Тъй като сте в режим \"No Auth mode\", парола не се изисква.", - "wayToGetLineNotifyToken": "Можете да получите токен код за достъп от {0}", - "resendEveryXTimes": "Изпращай повторно на всеки {0} пъти", - "resendDisabled": "Повторното изпращане е изключено", - "Resend Notification if Down X times consecutively": "Повторно изпращане на известие, ако е недостъпен X пъти последователно", - "Bark Group": "Bark група", - "Bark Sound": "Bark звук", - "HTTP Headers": "HTTP хедъри", - "Trust Proxy": "Доверено Proxy", - "HomeAssistant": "Home Assistant", - "RadiusSecret": "Radius таен код", - "RadiusSecretDescription": "Споделен таен код между клиент и сървър", - "RadiusCalledStationId": "Повиквана станция ID", - "RadiusCalledStationIdDescription": "Идентификатор на повикваното устройство", - "RadiusCallingStationId": "Повикваща станция ID", - "RadiusCallingStationIdDescription": "Идентификатор на повикващото устройство", - "Setup Docker Host": "Настройка на Docker хост", - "Connection Type": "Тип свързване", - "Docker Daemon": "Docker демон", - "deleteDockerHostMsg": "Сигурни ли сте, че желаете да изтриете този Docker хост за всички монитори?", - "socket": "Сокет", - "tcp": "TCP / HTTP", - "Docker Container": "Docker контейнер", - "Container Name / ID": "Име на контейнер / ID", - "Docker Host": "Docker хост", - "Docker Hosts": "Docker хостове", - "trustProxyDescription": "Доверяване на 'X-Forwarded-*' хедърите. В случай, че желаете да получавате реалния IP адрес на клиента и Uptime Kuma е зад системи като Nginx или Apache, трябва да разрешите тази опция.", - "Examples": "Примери", - "Home Assistant URL": "Home Assistant URL адрес", - "Long-Lived Access Token": "Long-Lived токен за достъп", - "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Access Token можете да създадете, като кликнете върху името на профила си (долу ляво) и превъртите до най-долу, след това кликнете върху Създаване на токен. ", - "Notification Service": "Услуга за известяване", - "default: notify all devices": "по подразбиране: извести всички устройства", - "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Списък с услугите за известяване може да бъде намерен в Home Assistant под \"Developer Tools > Services\", там потърсете \"notification\", за да намерите името на вашето устройство/телефон.", - "Automations can optionally be triggered in Home Assistant:": "Автоматизациите могат да се задействат при нужда в Home Assistant:", - "Trigger type:": "Задействане тип:", - "Event type:": "Събитие тип:", - "Event data:": "Събитие данни:", - "Then choose an action, for example switch the scene to where an RGB light is red.": "След което изберете действие, например да превключите сцената, където RGB светлината е червена.", - "Frontend Version": "Фронтенд версия", - "Frontend Version do not match backend version!": "Фронтенд версията не съвпада с Бекенд версията!", - "Base URL": "Базов URL адрес", - "goAlertInfo": "GoAlert е приложение с отворен код за планиране на повиквания, автоматизирани ескалации и известия (като SMS или гласови повиквания). Автоматично ангажирайте точния човек, по точния начин и в точното време! {0}", - "goAlertIntegrationKeyInfo": "Вземете общ API интеграционен ключ за услугата във формат \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" обикновено стойността на параметъра token на копирания URL адрес.", - "goAlert": "GoAlert", - "backupOutdatedWarning": "Отпаднала: Тъй като са добавени много функции, тази опция за архивиране не е достатъчно поддържана и не може да генерира или възстанови пълен архив.", - "backupRecommend": "Вместо това моля, архивирайте директно дяла или папката (./data/).", - "Maintenance": "Поддръжка", - "statusMaintenance": "Поддръжка", - "Schedule maintenance": "Планиране на поддръжка", - "Affected Monitors": "Засегнати монитори", - "Pick Affected Monitors...": "Изберете засегнатите монитори…", - "Start of maintenance": "Стартирай поддръжка", - "All Status Pages": "Всички статус страници", - "Select status pages...": "Изберете статус страници…", - "recurringIntervalMessage": "Изпълнявай ежедневно | Изпълнявай всеки {0} дни", - "affectedMonitorsDescription": "Изберете монитори, попадащи в обсега на текущата поддръжка", - "affectedStatusPages": "Покажи това съобщение за поддръжка на избрани статус страници", - "atLeastOneMonitor": "Изберете поне един засегнат монитор", - "deleteMaintenanceMsg": "Сигурни ли сте, че желаете да изтриете тази поддръжка?", - "Optional": "По желание", - "squadcast": "Squadcast", - "SendKey": "SendKey", - "SMSManager API Docs": "SMSManager API Документация ", - "Gateway Type": "Тип на шлюза", - "SMSManager": "SMSManager", - "You can divide numbers with": "Можете да разделяте числата с", - "or": "или", - "recurringInterval": "Интервал", - "Recurring": "Повтаряне", - "strategyManual": "Активен/Неактивен ръчно", - "warningTimezone": "Използва се часовата зона на сървъра", - "weekdayShortMon": "Пон", - "weekdayShortTue": "Вт", - "weekdayShortWed": "Ср", - "weekdayShortThu": "Чет", - "weekdayShortFri": "Пет", - "weekdayShortSat": "Съб", - "weekdayShortSun": "Нед", - "dayOfWeek": "Ден", - "dayOfMonth": "Дата", - "lastDay": "Последен ден", - "lastDay1": "Последен ден от месеца", - "lastDay2": "2-ри последен ден на месеца", - "lastDay3": "3-ти последен ден на месеца", - "lastDay4": "4-ти последен ден на месеца", - "No Maintenance": "Няма поддръжка", - "pauseMaintenanceMsg": "Сигурни ли сте, че желаете да направите пауза?", - "maintenanceStatus-under-maintenance": "В режим поддръжка", - "maintenanceStatus-inactive": "Неактивна", - "maintenanceStatus-scheduled": "Планирана", - "maintenanceStatus-ended": "Приключена", - "maintenanceStatus-unknown": "Неизвестна", - "Display Timezone": "Покажи часова зона", - "Server Timezone": "Часова зона на сървъра", - "statusPageMaintenanceEndDate": "Край", - "enableGRPCTls": "Разреши изпращане на gRPC заявка с TLS връзка", - "grpcMethodDescription": "Името на метода се форматира в \"camelCase\", например sayHello, check, и т.н.", - "smseagle": "SMSEagle", - "smseagleTo": "Тел. номер(а)", - "smseagleGroup": "Име на група/и от тел. указател", - "smseagleContact": "Име(на) от тел. указател", - "smseagleRecipientType": "Получател тип", - "smseagleRecipient": "Получател(и) (при повече от един разделете със запетая)", - "smseagleToken": "API токен за достъп", - "smseagleUrl": "Вашият SMSEagle URL на устройството", - "smseagleEncoding": "Изпрати като Unicode", - "smseaglePriority": "Приоритет на съобщението (0-9, по подразбиране = 0)", - "IconUrl": "Икона URL адрес", - "webhookAdditionalHeadersTitle": "Допълнителни хедъри", - "webhookAdditionalHeadersDesc": "Задава допълнителни хедъри, изпратени с уеб куката. Всеки хедър трябва да бъде дефиниран като JSON ключ/стойност.", - "Enable DNS Cache": "(Отпаднала) Активирай DNS кеширане за HTTP(S) монитори", - "Enable": "Активирай", - "Disable": "Деактивирай", - "dnsCacheDescription": "Възможно е да не работи в IPv6 среда - деактивирайте, ако срещнете проблеми.", - "Single Maintenance Window": "Единичен времеви интервал за поддръжка", - "Maintenance Time Window of a Day": "Времеви интервал от деня за поддръжка", - "Effective Date Range": "Ефективен интервал от дни (по желание)", - "Schedule Maintenance": "Планирай поддръжка", - "Date and Time": "Дата и час", - "DateTime Range": "Изтрий времеви интервал", - "Strategy": "Стратегия", - "Free Mobile User Identifier": "Free Mobile потребителски идентификатор", - "Free Mobile API Key": "Free Mobile API ключ", - "Enable TLS": "Активирай TLS", - "Proto Service Name": "Proto име на услугата", - "Proto Method": "Proto метод", - "Proto Content": "Proto съдържание", - "Economy": "Икономичен", - "Lowcost": "Евтин", - "high": "висок", - "General Monitor Type": "Общ тип монитор", - "Passive Monitor Type": "Пасивет тип монитор", - "Specific Monitor Type": "Специфичен тип монитор", - "ZohoCliq": "ZohoCliq", - "wayToGetZohoCliqURL": "Можете да научите как се създава URL адрес за уеб кука {0}.", - "Kook": "Kook", - "wayToGetKookBotToken": "Създайте приложение и вземете вашия бот токен на {0}", - "wayToGetKookGuildID": "Превключете в 'Developer Mode' в 'Kook' настройките, след което десен клик върху 'guild' за да вземете неговото 'ID'", - "Guild ID": "Guild ID", - "Help": "Помощ", - "Game": "Игра", - "Custom": "Потребителски", - "infiniteRetention": "Задайте стойност 0 за безкрайно съхранение.", - "Monitor": "Монитор | Монитори", - "dataRetentionTimeError": "Периодът на съхранение трябва да е 0 или по-голям", - "confirmDeleteTagMsg": "Сигурни ли сте, че желаете да изтриете този етикет? Мониторите, свързани с него, няма да бъдат изтрити.", - "promosmsAllowLongSMS": "Позволи дълъг SMS", - "Packet Size": "Размер на пакет", - "Custom Monitor Type": "Потребителски тип монитор", - "loadingError": "Данните не могат да бъдат изтеглени. Моля, опитайте отново по-късно.", - "plugin": "Плъгин | Плъгини", - "install": "Инсталирай", - "installing": "Инсталиране", - "uninstall": "Деинсталирай", - "uninstalling": "Деинсталиране", - "confirmUninstallPlugin": "Сигурни ли сте, че желаете да деинсталирате този плъгин?", - "markdownSupported": "Поддържа се Markdown синтаксис", - "Google Analytics ID": "Google Analytics ID", - "Edit Tag": "Редактиране на етикет", - "Learn More": "Научете повече", - "Server Address": "Сървър адрес", - "notificationRegional": "Регионални", - "Body Encoding": "Кодировка на тялото", - "telegramMessageThreadID": "(По избор) Thread ID на съобщението", - "telegramMessageThreadIDDescription": "Незадължителен уникален идентификатор за целевата нишка от съобщения (тема) на форума; само за форумни супергрупи", - "telegramProtectContent": "Защита на препращане/записване", - "telegramProtectContentDescription": "Ако е активирано, съобщенията от ботове в Telegram ще бъдат защитени от препращане и запазване.", - "telegramSendSilentlyDescription": "Изпраща съобщението тихо. Потребителите ще получат известие без звук.", - "telegramSendSilently": "Изпрати тихо", - "Clone Monitor": "Клониране на монитор", - "Clone": "Клонирай", - "cloneOf": "Клониран {0}", - "Expiry": "Валиден до", - "Expiry date": "Дата на изтичане", - "Add Another": "Добави друг", - "Key Added": "Ключът е добавен", - "Add API Key": "Добави API ключ", - "No API Keys": "Няма API ключове", - "apiKey-active": "Активен", - "Expires": "Изтича на", - "deleteAPIKeyMsg": "Сигурни ли сте, че желаете да изтриете този API ключ?", - "Generate": "Генерирай", - "API Keys": "API Ключове", - "Don't expire": "Не изтича", - "Continue": "Продължи", - "apiKeyAddedMsg": "Вашият API ключ е добавен. Моля, запишете го, тъй като той няма да бъде показан отново.", - "apiKey-expired": "Изтекъл", - "apiKey-inactive": "Неактивен", - "disableAPIKeyMsg": "Сигурни ли сте, че желаете да деактивирате този API ключ?", - "pagertreeUrgency": "Спешност", - "pagertreeSilent": "Тих", - "pagertreeLow": "Ниска", - "pagertreeHigh": "Висока", - "pagertreeResolve": "Автоматично разрешаване", - "pagertreeDoNothing": "Не прави нищо", - "wayToGetPagerTreeIntegrationURL": "След като създадете интеграция на Uptime Kuma в PagerTree, копирайте крайната точка. За пълни подробности вижте {0}", - "pagertreeIntegrationUrl": "URL Адрес за интеграция", - "pagertreeMedium": "Средна", - "pagertreeCritical": "Критична", - "Add New Tag": "Добави нов етикет", - "lunaseaTarget": "Цел", - "lunaseaDeviceID": "ID на устройството", - "lunaseaUserID": "ID на потребител", - "twilioAccountSID": "Профил SID", - "twilioAuthToken": "Удостоверяващ токен / Тайна на API ключа", - "twilioFromNumber": "От номер", - "twilioToNumber": "Към номер", - "sameAsServerTimezone": "Kато часовата зона на сървъра", - "startDateTime": "Старт Дата/Час", - "endDateTime": "Край Дата/Час", - "cronSchedule": "График: ", - "invalidCronExpression": "Невалиден \"Cron\" израз: {0}", - "cronExpression": "Израз тип \"Cron\"", - "statusPageRefreshIn": "Ще се обнови след: {0}", - "ntfyUsernameAndPassword": "Потребителско име и парола", - "ntfyAuthenticationMethod": "Метод за удостоверяване", - "pushoverMessageTtl": "TTL на съобщението (секунди)", - "Open Badge Generator": "Отвори генератора на баджове", - "Badge Generator": "Генератор на баджове на {0}", - "Badge Type": "Тип бадж", - "Badge Duration": "Продължителност на баджа", - "Badge Prefix": "Префикс за стйността на баджа", - "Badge Label Color": "Цвят на етикета на баджа", - "Badge Color": "Цвят на баджа", - "Badge Label Suffix": "Суфикс на етикета на значката", - "Badge Up Color": "Цвят на баджа за достъпен", - "Badge Down Color": "Цвят на баджа за недостъпен", - "Badge Maintenance Color": "Цвят на баджа за поддръжка", - "Badge Warn Color": "Цвят на баджа за предупреждение", - "Badge Warn Days": "Дни за показване на баджа", - "Badge Style": "Стил на баджа", - "Badge value (For Testing only.)": "Стойност на баджа (само за тест.)", - "Badge URL": "URL адрес на баджа", - "Monitor Setting": "Настройка на монитор {0}", - "Show Clickable Link": "Покажи връзка, която може да се кликне", - "Show Clickable Link Description": "Ако е отбелязано, всеки който има достъп до тази статус страница, ще може да достъпва мониторирания URL адрес.", - "Badge Label": "Етикет на баджа", - "Badge Suffix": "Суфикс за стойността на баджа", - "Badge Label Prefix": "Префикс на етикета на значката", - "Badge Pending Color": "Цвят на баджа за изчакващ", - "Badge Down Days": "Колко дни баджът да не се показва", - "Group": "Група", - "Monitor Group": "Монитор група", - "Cannot connect to the socket server": "Не може да се свърже със сокет сървъра", - "Reconnecting...": "Повторно свързване...", - "Edit Maintenance": "Редактиране на поддръжка", - "Home": "Главна страница", - "noGroupMonitorMsg": "Не е налично. Първо създайте групов монитор.", - "Close": "Затвори", - "nostrRelays": "Nostr релета", - "nostrRelaysHelp": "Един URL адрес за реле на ред", - "nostrSender": "Частен ключ на изпращача (nsec)", - "nostrRecipients": "Публични ключове на получатели (npub)", - "nostrRecipientsHelp": "npub формат, по един на ред", - "chromeExecutable": "Chrome/Chromium изпълним файл", - "chromeExecutableAutoDetect": "Автоматично откриване", - "chromeExecutableDescription": "За потребителите на Docker, ако Chromium все още не е инсталиран, инсталирането и показването на резултата от теста може да отнеме няколко минути. Заема 1GB дисково пространство.", - "Invert Keyword": "Обърнат режим за ключова дума", - "invertKeywordDescription": "При търсене ключовата дума трябва да отсъства, а не да присъства.", - "webhookBodyPresetOption": "Предварителна настройка - {0}", - "webhookBodyCustomOption": "Персонализирано тяло", - "webhookCustomBodyDesc": "Дефинирайте персонализирано HTTP тяло за заявката. Приемат се шаблонни променливи {msg}, {heartbeat}, {monitor}.", - "Request Body": "Тяло на заявката", - "twilioApiKey": "API ключ (по избор)", - "Expected Value": "Очаквана стойност", - "Json Query": "Заявка тип JSON", - "Badge Duration (in hours)": "Времетраене на баджа (в часове)", - "Badge Preview": "Преглед на баджа", - "Notify Channel": "Канал за известяване", - "aboutNotifyChannel": "Каналът за известяване ще задейства известие на настолен компютър или мобилно устройство за всички членове на канала, независимо дали тяхната наличност е в състояние активен или отсъстващ.", - "filterActive": "Активен", - "filterActivePaused": "На пауза", - "Kafka Brokers": "Kafka брокери", - "Enter the list of brokers": "Въведете списъка с брокери", - "Press Enter to add broker": "Натиснете Enter, за да добавите брокер", - "Kafka Topic Name": "Име на темата за Kafka", - "Enable Kafka SSL": "Активирай Kafka SSL", - "Enable Kafka Producer Auto Topic Creation": "Активирай автоматично създаване на темa в Kafka Producer", - "Kafka Producer Message": "Съобщение на Kafka Producer", - "Kafka SASL Options": "Опции на Kafka SASL", - "Mechanism": "Механизъм", - "Pick a SASL Mechanism...": "Изберете SASL механизъм…", - "Authorization Identity": "Идентичност за оторизиране", - "AccessKey Id": "AccessKey ID", - "Secret AccessKey": "Таен ключ за достъп", - "Session Token": "Токен за сесия", - "tailscalePingWarning": "За да използвате Tailscale Ping монитор, трябва да инсталирате Uptime Kuma без Docker и също така да инсталирате Tailscale клиент на вашия сървър.", - "Server URL should not contain the nfty topic": "URL адресът на сървъра не трябва да съдържа nfty темата", - "FlashDuty Severity": "Степен на тежест", - "showCertificateExpiry": "Показвай изтичащ сертификат", - "noOrBadCertificate": "Няма/лош сертификат", - "Select": "Избери", - "selectedMonitorCount": "Избрано: {0}", - "wayToGetFlashDutyKey": "Можете да отидете на страница 'Channel -> (Select a Channel) -> Integrations -> Add a new integration' и да добавите 'UptimeKuma', за да получите 'push' адрес и да копирате ключа за интегриране в адреса. За повече информация, моля посетете", - "PushDeer Server": "PushDeer сървър", - "pushDeerServerDescription": "Оставете празно, за да използвате официалния сървър", - "Check/Uncheck": "Постави/Премахни отметка", - "Request Timeout": "Време за изтичане на заявката", - "timeoutAfter": "Времето изтича след {0} секунди", - "styleElapsedTime": "Изминало време под лентата с проверки", - "styleElapsedTimeShowNoLine": "Покажи (без ред)", - "gamedigGuessPort": "Gamedig: Познай порт", - "gamedigGuessPortDescription": "Портът, използван от Valve Server Query Protocol, може да е различен от клиентския порт. Опитайте това, ако мониторът не може да се свърже с вашия сървър.", - "styleElapsedTimeShowWithLine": "Покажи (с ред)", - "enableNSCD": "Активирай NSCD (Name Service Cache Daemon) за кеширане на всички DNS заявки", - "dbName": "Име на базата данни", - "setupDatabaseChooseDatabase": "Коя база данни желаете да използвате?", - "Saved.": "Запазено.", - "toastErrorTimeout": "Време за изчакване на известията при грешка", - "toastSuccessTimeout": "Време за изчакване на известията при успех", - "monitorToastMessagesDescription": "Известието за състояние на монитора изчезва след определено време в секунди. Задаване на -1, деактивира времето за изчакване. Задаване на 0 деактивира тост известията.", - "monitorToastMessagesLabel": "Мониторинг на известията при промяна на състоянието", - "setupDatabaseEmbeddedMariaDB": "Не е нужно да настройвате нищо. Този Docker имидж автоматично е вградил и конфигурирал MariaDB за Вас. Uptime Kuma ще се свърже с тази база данни чрез Unix сокет.", - "setupDatabaseMariaDB": "Свързване към външна MariaDB база данни. Трябва да зададете информацията за връзка с базата данни.", - "setupDatabaseSQLite": "Обикновен файл с база данни, препоръчително при маломащабен тип внедрявания. Преди v2.0.0 Uptime Kuma използва SQLite като база данни по подразбиране.", - "Bark API Version": "Версия на Bark API", - "pushViewCode": "Как да използвате Push монитор? (Вижте кода)", - "pushOthers": "Други", - "programmingLanguages": "Програмни езици", - "authInvalidToken": "Невалиден токен.", - "authUserInactiveOrDeleted": "Потребителят е неактивен или изтрит.", - "authIncorrectCreds": "Неправилно потребителско име или парола.", - "2faAlreadyEnabled": "2FA вече е активирано.", - "2faEnabled": "2FA е активирано.", - "2faDisabled": "2FA е деактивирано.", - "successAdded": "Добавен успешно.", - "successPaused": "Успешно поставен на пауза.", - "successDeleted": "Успешно изтрит.", - "successEdited": "Успешно редактиран.", - "successBackupRestored": "Резервното копие е възстановено успешно.", - "successDisabled": "Успешно деактивиран.", - "successEnabled": "Успешно активиран.", - "tagNotFound": "Етикетът не е намерен.", - "successResumed": "Успешно възобновен.", - "successAuthChangePassword": "Паролата е актуализирана успешно.", - "foundChromiumVersion": "Намерен Chromium/Chrome. Версия: {0}", - "Reset Token": "Нулиране на токен код", - "leave blank for default subject": "оставете празно за използване на тема по подразбиране", - "emailCustomBody": "Персонализирано съдържание", - "emailCustomisableContent": "Съдържание подлежащо на персонализиране", - "leave blank for default body": "оставете празно за използване на съдържание по подразбиране", - "emailTemplateServiceName": "Име на услугата", - "emailTemplateHostnameOrURL": "Име на хост или URL адрес", - "emailTemplateStatus": "Статус", - "emailTemplateMonitorJSON": "обект описващ монитора", - "emailTemplateHeartbeatJSON": "обект описващ проверката", - "liquidIntroduction": "Създаването на шаблони се постига чрез езика \"Liquid templating \". Моля, вижте {0} относно инструкции за употреба. Наличните променливи са:", - "templateLimitedToUpDownCertNotifications": "налично само за известия от тип Достъпен/Недостъпен/Изтичане вал. на сертификата", - "smtpLiquidIntroduction": "Следните две полета могат да бъдат създадени чрез шаблони, посредством езика \"Liquid templating \". Моля, вижте {0} относно инструкции за употреба. Наличните променливи са:", - "templateMsg": "съобщение на известието", - "templateHeartbeatJSON": "обект описващ проверките", - "templateMonitorJSON": "обект описващ монитора", - "templateLimitedToUpDownNotifications": "налично само за известия от тип Достъпен/Недостъпен", - "emailTemplateMsg": "съобщение на известието", - "emailTemplateLimitedToUpDownNotification": "налично само за проверки от тип Достъпен/Недостъпен, в противен случай null", - "GrafanaOncallUrl": "Grafana Oncall URL адрес", - "noDockerHostMsg": "Не е наличен. Първо настройте \"Docker\" хост.", - "DockerHostRequired": "Моля, задайте \"Docker\" хоста за този монитор.", - "Browser Screenshot": "Екранна снимка на браузър", - "remoteBrowserToggle": "По подразбиране Chromium работи в контейнера Uptime Kuma. Можете да използвате отдалечен браузър, като превключите този ключ.", - "remoteBrowsersDescription": "Отдалечените браузъри са алтернатива на локалното стартиране на Chromium. Настройте с услуга като \"browserless.io\" или свържете с Вашата собствена", - "Remove the expiry notification": "Премахни деня за известяване при изтичане", - "Add a new expiry notification day": "Добави нов ден за известяване при изтичане", - "setup a new monitor group": "настройка на нова група от монитори", - "openModalTo": "отвори модален прозорец към {0}", - "Add a domain": "Добави домейн", - "Remove domain": "Премахни домейн '{0}'", - "Remote Browsers": "Отдалечени браузъри", - "Remote Browser": "Отдалечен браузър", - "Add a Remote Browser": "Добави отдалечен браузър", - "Remote Browser not found!": "Отдалеченият браузър не е намерен!", - "self-hosted container": "самостоятелно хостван контейнер", - "useRemoteBrowser": "Използвай отдалечен браузър", - "deleteRemoteBrowserMessage": "Сигурни ли сте, че желаете да изтриете този отдалечен браузър за всички монитори?", - "successKeyword": "Ключова дума за успех", - "successKeywordExplanation": "MQTT ключова дума, която ще се счита за успех", - "ntfyPriorityHelptextAllExceptDown": "Всички събития се изпращат с този приоритет, с изключение на {0}-събития, които имат приоритет {1}", - "statusPageSpecialSlugDesc": "Специален слъг {0}: тази страница ще бъде показана, когато не е предоставен слъг", - "ntfyPriorityHelptextAllEvents": "Всички събития се изпращат с максимален приоритет", - "settingUpDatabaseMSG": "Настройка на базата данни. Може да отнеме известно време, моля, бъдете търпеливи.", - "Search monitored sites": "Търсене на мониторирани сайтове", - "What is a Remote Browser?": "Какво е отдалечен браузър?", - "Channel access token (Long-lived)": "Токен код за достъп до канал (дълготраен)", - "Your User ID": "Вашето потребителско ID", - "documentationOf": "{0} Документация", - "wayToGetHeiiOnCallDetails": "Как да получите Trigger ID и API ключове е обяснено в {documentation}", - "To Phone Number": "До телефонен номер", - "gtxMessagingToHint": "Международен формат, като първо въведете знака \"+\" ({e164}, {e212} or {e214})", - "gtxMessagingApiKeyHint": "Можете да намерите вашия API ключ в: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)", - "From Phone Number / Transmission Path Originating Address (TPOA)": "От телефонен номер / Изходен Адрес на Пътя на Предаване (ИАПП)", - "gtxMessagingFromHint": "На мобилни телефони, вашите получатели виждат ИАПП показан като подател на съобщението. Позволени са до 11 буквено-цифрови знака, кратък код, местен дълъг код или международни номера ({e164}, {e212} or {e214})", - "Alphanumeric (recommended)": "Буквено-цифров (препоръчително)", - "Telephone number": "Телефонен номер", - "Originator type": "Тип автор", - "Originator": "Автор", - "cellsyntOriginator": "Вижда се на мобилния телефон на получателя като автор на съобщението. Позволените стойности и функция зависят от параметъра - тип автор.", - "Destination": "Дестинация", - "Allow Long SMS": "Разреши дълъг SMS", - "cellsyntSplitLongMessages": "Раздели дългите съобщения до 6 части. 153 x 6 = 918 знака.", - "max 15 digits": "Максимум 15 цифри", - "max 11 alphanumeric characters": "Максимум 11 буквено-цифрови знака", - "cellsyntOriginatortypeAlphanumeric": "Буквено-цифров низ (максимум 11 буквено-цифрови знака). Получателите не могат да отговорят на съобщението.", - "cellsyntOriginatortypeNumeric": "Числова стойност (максимум 15 цифри) с телефонен номер в международен формат, без предхождащо въвеждане на 00 (примерен номер в България 088 123 45 67 трябва да бъде зададен като 359881234567). Получателите могат да отговорят на съобщението.", - "cellsyntDestination": "Телефонен номер на получателя в международен формат, предхождан от 00, последвано от код на държавата, напр. 00359881234567 за номер в България 088 123 45 67 (максимум 17 цифри). Максимум 25 000 получатели, разделени със запетая, на HTTP заявка.", - "callMeBotGet": "Тук можете да генерирате крайна точка за {0}, {1} и {2}. Имайте предвид, че може да получите ограничения в опитите. Ограниченията в опитите изглеждат: {3}", - "wayToGetWhapiUrlAndToken": "Можете да получите URL адреса на API и токена, като влезете в желания от вас канал от {0}", - "whapiRecipient": "Телефонен номер / ID на контакт / ID на група", - "API URL": "URL адрес на API", - "wayToWriteWhapiRecipient": "Телефонният номер с международния префикс, но без знака плюс в началото ({0}), ID на контакта ({1}) или ID на групата ({2}).", - "locally configured mail transfer agent": "локално конфигуриран \"mail transfer agent\"", - "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Или въведете името на хоста на сървъра, към който желаете да се свържете, или {localhost}, ако възнамерявате да използвате {local_mta}", - "Mentioning": "Споменаване", - "Don't mention people": "Не споменавай хора", - "Mention group": "Споменавай {group}", - "wayToGetSevenIOApiKey": "Посетете таблото за управление в app.seven.io > developer > api key > зеленият бутон за добавяне", - "receiverSevenIO": "Номер на получател", - "senderSevenIO": "Номер или име на подател", - "receiverInfoSevenIO": "Ако номерът на получателя не се намира в Германия, трябва да добавите кода на държавата пред номера (напр. за код на държавата 1 от САЩ използвайте 117612121212 вместо 017612121212)", - "apiKeySevenIO": "SevenIO API ключ", - "Host URL": "Хост URL адрес", - "Command": "Команда", - "mongodbCommandDescription": "Изпълни MongoDB команда срещу базата данни. За информация относно наличните команди, вижте {documentation}", - "Bitrix24 Webhook URL": "Bitrix24 Webhook URL адрес", - "wayToGetBitrix24Webhook": "Можете да създадете webhook, като следвате стъпките на {0}", - "bitrix24SupportUserID": "Въведете Вашето потребителско ID в Bitrix24. Можете да го намерите от връзката, като отидете в профила на потребителя.", - "Refresh Interval": "Интервал на опресняване", - "Refresh Interval Description": "Статус страницата ще извършва пълно опресняване на всеки {0} секунди", - "e.g. {discordThreadID}": "напр. {discordThreadID}", - "whatHappensAtForumPost": "Създава нова публикация във форума. Това НЕ публикува съобщения в съществуваща публикация. За да публикувате в съществуваща публикация, използвайте \"{option}\"", - "wayToGetDiscordThreadId": "Получаването на ID на тема/публикация във форум е подобно на получаването на ID на канал. Прочетете повече за това как да получите ID-та {0}", - "Select message type": "Изберете тип съобщение", - "Send to channel": "Изпрати до канал", - "ignoreTLSErrorGeneral": "Игнорирай TLS/SSL грешка зa връзка", - "Create new forum post": "Създай нова публикация във форум", - "postToExistingThread": "Публикувай в съществуваща тема/публикация във форум", - "forumPostName": "Име на публикацията във форума", - "threadForumPostID": "ID на публикация в темата/форум", - "smspartnerApiurl": "Можете да намерите вашия API ключ в таблото на {0}", - "smspartnerPhoneNumber": "Телефон номер(а)", - "smspartnerPhoneNumberHelptext": "Номерът задължително е в международен формат {0}, {1}. Отделните номера трябва да бъдат разделени посредством {2}", - "smspartnerSenderName": "Име на изпращащия на SMS", - "smspartnerSenderNameInfo": "Трябва да е между 3..=11 стандартни знака", - "wayToGetThreemaGateway": "Можете да се регистрирате за Threema Gateway {0}.", - "threemaRecipient": "Получател", - "threemaRecipientType": "Тип получател", - "threemaRecipientTypeIdentity": "Threema-ID", - "threemaRecipientTypePhone": "Телефонен номер", - "threemaRecipientTypeEmail": "Имейл адрес", - "threemaSenderIdentity": "Gateway-ID", - "threemaSenderIdentityFormat": "8 знака, обикновено започва с *", - "threemaApiAuthenticationSecret": "Gateway-ID Тайна фраза", - "threemaRecipientTypeIdentityFormat": "8 знака", - "threemaRecipientTypePhoneFormat": "E.164, без водещ +", - "threemaBasicModeInfo": "Забележка: Тази интеграция използва Threema Gateway в основен режим (сървърно базирано криптиране). Допълнителни подробности можете да намерите {0}.", - "apiKeysDisabledMsg": "API ключовете са деактивирани, защото удостоверяването е деактивирано.", - "jsonQueryDescription": "Анализира и извлича конкретни данни от JSON отговора на сървъра, използвайки JSON заявка или чрез \"$\" за необработения отговор, ако не очаква JSON. След това резултатът се сравнява с очакваната стойност като низове. Вижте {0} за документация и използвайте {1}, за да експериментирате със заявки.", - "starts with": "започва с", - "less than or equal to": "по-малко или равно на", - "now": "сега", - "time ago": "преди {0}", - "-year": "-година", - "Json Query Expression": "Json израз на заявка", - "and": "и", - "cacheBusterParam": "Добави параметъра {0}", - "cacheBusterParamDescription": "Произволно генериран параметър за пропускане на кешове.", - "Community String": "Общностен низ", - "snmpCommunityStringHelptext": "Този низ функционира като парола за удостоверяване и контрол на достъпа до устройства с активиран SNMP. Сравнете го с конфигурацията на вашето SNMP устройство.", - "OID (Object Identifier)": "OID (Идентификатор на обект)", - "snmpOIDHelptext": "Въведете OID за сензора или състоянието, които искате да мониторирате. Използвайте инструменти за управление на мрежата като MIB браузъри или SNMP софтуер, ако не сте сигурни за OID.", - "SNMP Version": "SNMP Версия", - "Please enter a valid OID.": "Моля, въведете валиден OID.", - "Host Onesender": "Onesender хост", - "Token Onesender": "Onesender токен", - "Recipient Type": "Тип получател", - "Private Number": "Частен номер", - "privateOnesenderDesc": "Уверете се, че телефонният номер е валиден. За да изпратите съобщение на личен телефонен номер, напр.: 628123456789", - "groupOnesenderDesc": "Уверете се, че GroupID е валиден. За да изпратите съобщение в група, напр.: 628123456789-342345", - "Group ID": "ID на групата", - "wayToGetOnesenderUrlandToken": "Можете да получите URL адреса и токена, като посетите уебсайта на Onesender. Повече информация {0}", - "Add Remote Browser": "Добави отдалечен браузър", - "New Group": "Нова група", - "Group Name": "Име на групата", - "OAuth2: Client Credentials": "OAuth2: Идентификационни данни на клиента", - "Condition": "Условие", - "Authentication Method": "Метод за удостоверяване", - "Authorization Header": "Хедър за оторизация", - "Form Data Body": "Тяло на формата за данни", - "OAuth Token URL": "URL адрес на OAuth токена", - "Client ID": "ID на клиента", - "Client Secret": "Тайна на клиента", - "OAuth Scope": "Обхват на OAuth", - "Optional: Space separated list of scopes": "По избор: разделен с интервал списък с обхвати", - "Go back to home page.": "Обратно към началната страница.", - "No tags found.": "Няма намерени етикети.", - "Lost connection to the socket server.": "Изгубена връзка със сокет сървъра.", - "Cannot connect to the socket server.": "Не може да се свърже със сокет сървъра.", - "SIGNL4": "SIGNL4", - "SIGNL4 Webhook URL": "SIGNL4 URL адрес на уеб кука", - "signl4Docs": "Повече информация относно конфигуриране на SIGNL4 и получаване на URL адрес за уеб кука SIGNL4 в {0}.", - "Conditions": "Условия", - "conditionAdd": "Добави условие", - "conditionDelete": "Изтрий условие", - "conditionAddGroup": "Добави група", - "conditionDeleteGroup": "Изтрий група", - "conditionValuePlaceholder": "Стойност", - "contains": "съдържа", - "equals": "равно на", - "not equals": "не е равно на", - "not contains": "не съдържа", - "not starts with": "не започва с", - "ends with": "завършва с", - "not ends with": "не завършва с", - "less than": "по-малко от", - "greater than": "по-голямо от", - "greater than or equal to": "по-голямо или равно на", - "record": "запис" -} +{ + "languageName": "Български", + "checkEverySecond": "Ще се извършва на всеки {0} секунди", + "retryCheckEverySecond": "Ще се извършва на всеки {0} секунди", + "retriesDescription": "Максимален брой опити преди маркиране на услугата като недостъпна и изпращане на известие", + "ignoreTLSError": "Игнорирай TLS/SSL грешки за HTTPS уеб сайтове", + "upsideDownModeDescription": "Обръща статуса от достъпен на недостъпен. Ако услугата е достъпна, ще се вижда като НЕДОСТЪПНА.", + "maxRedirectDescription": "Максимален брой пренасочвания, които да бъдат следвани. Въведете 0 за да изключите пренасочване.", + "acceptedStatusCodesDescription": "Изберете статус кодове, които да се считат за успешен отговор.", + "passwordNotMatchMsg": "Повторената парола не съвпада.", + "notificationDescription": "Моля, задайте известието към монитор(и), за да функционира.", + "keywordDescription": "Търси ключова дума в чист HTML или JSON отговор - чувствителна е към регистъра.", + "pauseDashboardHome": "Пауза", + "deleteMonitorMsg": "Наистина ли желаете да изтриете този монитор?", + "deleteNotificationMsg": "Наистина ли желаете да изтриете това известие за всички монитори?", + "resolverserverDescription": "Cloudflare е сървърът по подразбиране, но можете да го промените по всяко време.", + "rrtypeDescription": "Изберете ресурсния запис, който желаете да наблюдавате", + "pauseMonitorMsg": "Наистина ли желаете да поставите в режим пауза?", + "enableDefaultNotificationDescription": "За всеки нов монитор това известие ще бъде активирано по подразбиране. Можете да го изключите за всеки отделен монитор.", + "clearEventsMsg": "Наистина ли желаете да изтриете всички събития за този монитор?", + "clearHeartbeatsMsg": "Наистина ли желаете да изтриете всички записи за честотни проверки на този монитор?", + "confirmClearStatisticsMsg": "Наистина ли желаете да изтриете всички статистически данни?", + "importHandleDescription": "Изберете 'Пропусни съществуващите', ако желаете да пропуснете всеки монитор или известие със същото име. 'Презапис' ще изтрие всеки съществуващ монитор и известие.", + "confirmImportMsg": "Сигурни ли сте, че желаете импортирането на архива? Моля, уверете се, че сте избрали правилната опция за импортиране.", + "twoFAVerifyLabel": "Моля, въведете вашия токен код, за да проверите дали 2FA работи:", + "tokenValidSettingsMsg": "Токен кодът е валиден! Вече можете да запазите настройките за 2FA.", + "confirmEnableTwoFAMsg": "Сигурни ли сте, че желаете да активирате 2FA?", + "confirmDisableTwoFAMsg": "Сигурни ли сте, че желаете да изключите 2FA?", + "Settings": "Настройки", + "Dashboard": "Табло", + "New Update": "Налична е актуализация", + "Language": "Език", + "Appearance": "Изглед", + "Theme": "Тема", + "General": "Общи", + "Version": "Версия", + "Check Update On GitHub": "Проверка за актуализация в GitHub", + "List": "Списък", + "Add": "Добави", + "Add New Monitor": "Добави монитор", + "Quick Stats": "Кратка статистика", + "Up": "Достъпен", + "Down": "Недостъпен", + "Pending": "Изчаква", + "Unknown": "Неизвестен", + "Pause": "Пауза", + "Name": "Име", + "Status": "Статус", + "DateTime": "Дата и час", + "Message": "Отговор", + "No important events": "Все още няма събития", + "Resume": "Възобнови", + "Edit": "Редактирай", + "Delete": "Изтрий", + "Current": "Текущ", + "Uptime": "Достъпност", + "Cert Exp.": "Вал. сертификат", + "day": "ден | дни", + "-day": "-дни", + "hour": "час", + "-hour": "-часa", + "Response": "Отговор", + "Ping": "Пинг", + "Monitor Type": "Монитор тип", + "Keyword": "Ключова дума", + "Friendly Name": "Псевдоним", + "URL": "URL Адрес", + "Hostname": "Име на хост", + "Port": "Порт", + "Heartbeat Interval": "Честота на проверка", + "Retries": "Повторни опити", + "Heartbeat Retry Interval": "Честота на повторните опити", + "Advanced": "Разширени", + "Upside Down Mode": "Обърнат режим", + "Max. Redirects": "Макс. брой пренасочвания", + "Accepted Status Codes": "Допустими статус кодове", + "Save": "Запази", + "Notifications": "Известия", + "Not available, please setup.": "Не са налични. Моля, настройте.", + "Setup Notification": "Настройка на известие", + "Light": "Светла", + "Dark": "Тъмна", + "Auto": "Автоматично", + "Theme - Heartbeat Bar": "Тема - поле проверки", + "Normal": "Нормално", + "Bottom": "Долу", + "None": "Без", + "Timezone": "Часова зона", + "Search Engine Visibility": "Видимост за търсачки", + "Allow indexing": "Разреши индексиране", + "Discourage search engines from indexing site": "Не позволявай на търсачките да индексират този сайт", + "Change Password": "Промяна на парола", + "Current Password": "Текуща парола", + "New Password": "Нова парола", + "Repeat New Password": "Повторете новата парола", + "Update Password": "Актуализирай паролата", + "Disable Auth": "Изключи удостоверяване", + "Enable Auth": "Активирай удостоверяване", + "disableauth.message1": "Сигурни ли сте, че желаете да {disableAuth}?", + "disable authentication": "изключите удостоверяването", + "disableauth.message2": "Използва се в случаите, когато {intendThirdPartyAuth} преди Uptime Kuma, например Cloudflare Access, Authelia или друг механизъм за удостоверяване.", + "where you intend to implement third-party authentication": "има настроен алтернативен метод за удостоверяване", + "Please use this option carefully!": "Моля, използвайте с повишено внимание!", + "Logout": "Изход от профила", + "Leave": "Отказ", + "I understand, please disable": "Разбирам. Моля, изключи", + "Confirm": "Потвърдете", + "Yes": "Да", + "No": "Не", + "Username": "Потребител", + "Password": "Парола", + "Remember me": "Запомни ме", + "Login": "Вход", + "No Monitors, please": "Все още няма монитори. Моля,", + "add one": "добавете един.", + "Notification Type": "Тип известие", + "Email": "Имейл", + "Test": "Тест", + "Certificate Info": "Информация за сертификат", + "Resolver Server": "Преобразуващ (DNS) сървър", + "Resource Record Type": "Тип запис", + "Last Result": "Последен резултат", + "Create your admin account": "Създаване на администриращ акаунт", + "Repeat Password": "Повторете паролата", + "Import Backup": "Импорт на архив", + "Export Backup": "Експорт на архив", + "Export": "Експорт", + "Import": "Импорт", + "respTime": "Време за отговор (ms)", + "notAvailableShort": "Няма", + "Default enabled": "Активирано по подразбиране", + "Apply on all existing monitors": "Приложи върху всички съществуващи монитори", + "Create": "Създай", + "Clear Data": "Изтрий данни", + "Events": "Събития", + "Heartbeats": "Проверки", + "Auto Get": "Авт. попълване", + "backupDescription": "Можете да архивирате всички монитори и всички известия в JSON файл.", + "backupDescription2": "PS: Имайте предвид, че данните за история и събития няма да бъдат включени.", + "backupDescription3": "Чувствителни данни, като токен кодове за известия, се съдържат в експортирания файл. Моля, бъдете внимателни с неговото съхранение.", + "alertNoFile": "Моля, изберете файл за импортиране.", + "alertWrongFileType": "Моля, изберете JSON файл.", + "Clear all statistics": "Изтрий цялата статистика", + "Skip existing": "Пропусни съществуващите", + "Overwrite": "Презапиши", + "Options": "Опции", + "Keep both": "Запази двете", + "Verify Token": "Провери токен код", + "Setup 2FA": "Настройка на 2FA", + "Enable 2FA": "Активирай 2FA", + "Disable 2FA": "Деактивирай 2FA", + "2FA Settings": "Настройка за 2FA", + "Two Factor Authentication": "Двуфакторно удостоверяване", + "Active": "Активно", + "Inactive": "Неактивно", + "Token": "Токен код", + "Show URI": "Покажи URI", + "Tags": "Етикети", + "Add New below or Select...": "Добавете нов по-долу или изберете…", + "Tag with this name already exist.": "Етикет с това име вече съществува.", + "Tag with this value already exist.": "Етикет с тази стойност вече съществува.", + "color": "цвят", + "value (optional)": "стойност (по желание)", + "Gray": "Сиво", + "Red": "Червено", + "Orange": "Оранжево", + "Green": "Зелено", + "Blue": "Синьо", + "Indigo": "Индиго", + "Purple": "Лилаво", + "Pink": "Розово", + "Search...": "Търси…", + "Avg. Ping": "Ср. пинг", + "Avg. Response": "Ср. отговор", + "Entry Page": "Основна страница", + "statusPageNothing": "Все още няма нищо тук. Моля, добавете група или монитор.", + "No Services": "Няма Услуги", + "All Systems Operational": "Всички услуги са достъпни", + "Partially Degraded Service": "Част от услугите са недостъпни", + "Degraded Service": "Всички услуги са недостъпни", + "Add Group": "Добави група", + "Add a monitor": "Добави монитор", + "Edit Status Page": "Редактиране на статус страницата", + "Go to Dashboard": "Към Таблото", + "telegram": "Telegram", + "webhook": "Уеб кука", + "smtp": "Имейл (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Поддържа 50+ услуги за известяване)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "Status Page": "Статус страница", + "Status Pages": "Статус страници", + "Primary Base URL": "Базов URL адрес", + "Push URL": "Генериран Push URL адрес", + "needPushEvery": "Необходимо е да извършвате заявка към този URL адрес на всеки {0} секунди.", + "pushOptionalParams": "Допълнителни, но не задължителни параметри: {0}", + "defaultNotificationName": "Моето {notification} известие ({number})", + "here": "тук", + "Required": "Задължително поле", + "Bot Token": "Бот токен", + "wayToGetTelegramToken": "Можете да получите токен от {0}.", + "Chat ID": "Чат ID", + "supportTelegramChatID": "Поддържа Direct Chat / Group / Channel's Chat ID", + "wayToGetTelegramChatID": "Можете да получите вашето чат ID, като изпратите съобщение на бота, след което е нужно да посетите този URL адрес за да го видите:", + "YOUR BOT TOKEN HERE": "ВАШИЯТ БОТ ТОКЕН ТУК", + "chatIDNotFound": "Чат ID не е намерено. Моля, първо изпратете съобщение до този бот", + "Post URL": "Post URL адрес", + "Content Type": "Тип съдържание", + "webhookJsonDesc": "{0} е подходящ за всички съвременни http сървъри, като например express.js", + "webhookFormDataDesc": "{multipart} е подходящ за PHP, нужно е да анализирате json чрез {decodeFunction}", + "secureOptionNone": "Няма (25) / STARTTLS (587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Игнорирай TLS грешките", + "From Email": "От имейл адрес", + "emailCustomSubject": "Модифициране на тема", + "To Email": "Получател имейл адрес", + "smtpCC": "Явно копие до имейл адрес:", + "smtpBCC": "Скрито копие до имейл адрес:", + "Discord Webhook URL": "Discord URL адрес на уеб кука", + "wayToGetDiscordURL": "Можете да създадете, от меню \"Настройки на сървъра\" -> \"Интеграции\" -> \"Уеб куки\" -> \"Нова уеб кука\"", + "Bot Display Name": "Име на бота, което да се показва", + "Prefix Custom Message": "Модифицирано обръщение", + "Hello @everyone is...": "Здравейте, {'@'}everyone е…", + "Webhook URL": "Уеб кука URL адрес", + "wayToGetTeamsURL": "Можете да научите как се създава URL адрес за уеб кука {0}.", + "Number": "Номер", + "Recipients": "Получатели", + "needSignalAPI": "Необходимо е да разполагате със Signal клиент с REST API.", + "wayToCheckSignalURL": "Можете да посетите този URL адрес, ако се нуждаете от помощ при настройването:", + "signalImportant": "ВАЖНО: Не можете да смесвате \"Групи\" и \"Номера\" в поле \"Получатели\"!", + "Application Token": "Токен код за приложението", + "Server URL": "URL адрес на сървъра", + "Priority": "Приоритет", + "Icon Emoji": "Иконка Емотикон", + "Channel Name": "Канал име", + "Uptime Kuma URL": "Uptime Kuma URL адрес", + "aboutWebhooks": "Повече информация относно уеб куки на: {0}", + "aboutChannelName": "Въведете името на канала в поле {0} \"Канал име\", ако желаете да заобиколите канала от уеб куката. Например: #other-channel", + "aboutKumaURL": "Ако оставите празно полето \"Uptime Kuma URL адрес\", по подразбиране ще се използва GitHub страницата на проекта.", + "emojiCheatSheet": "Подсказки за емотикони: {0}", + "User Key": "Потребителски ключ", + "Device": "Устройство", + "Message Title": "Заглавие на съобщението", + "Notification Sound": "Звуков сигнал", + "More info on:": "Повече информация на: {0}", + "pushoverDesc1": "Приоритет Спешно (2) по подразбиране изчаква 30 секунди между повторните опити и изтича след 1 час.", + "pushoverDesc2": "Ако желаете да изпратите известия до различни устройства, попълнете полето Устройство.", + "SMS Type": "SMS тип", + "octopushTypePremium": "Премиум (Бърз - препоръчителен в случай на тревога)", + "octopushTypeLowCost": "Евтин (Бавен - понякога бива блокиран от оператора)", + "checkPrice": "Тарифни планове на {0}:", + "octopushLegacyHint": "Дали използвате съвместима версия на Octopush (2011-2020) или нова версия?", + "Check octopush prices": "Тарифни планове на octopush {0}.", + "octopushPhoneNumber": "Телефонен номер (в международен формат, например: +33612345678) ", + "octopushSMSSender": "SMS подател Име: 3-11 знака - букви, цифри и интервал (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea ID на устройство", + "Apprise URL": "Apprise URL адрес", + "Example:": "Пример: {0}", + "Read more:": "Научете повече: {0}", + "Status:": "Статус: {0}", + "Read more": "Научете повече", + "appriseInstalled": "Apprise е инсталиран.", + "appriseNotInstalled": "Apprise не е инсталиран. {0}", + "Access Token": "Токен код за достъп", + "Channel access token": "Канал токен код", + "Line Developers Console": "Line - Конзола за разработчици", + "lineDevConsoleTo": "Line - Конзола за разработчици - {0}", + "Basic Settings": "Основни настройки", + "User ID": "Потребител ID", + "Messaging API": "API за съобщаване", + "wayToGetLineChannelToken": "Необходимо е първо да посетите {0}, за да създадете (Messaging API) за доставчик и канал, след което можете да вземете токен кода за канал и потребителско ID от споменатите по-горе елементи на менюто.", + "Icon URL": "URL адрес за иконка", + "aboutIconURL": "Можете да предоставите линк към картинка в поле \"URL Адрес за иконка\" за да отмените картинката на профила по подразбиране. Няма да се използва, ако вече сте настроили емотикон.", + "aboutMattermostChannelName": "Можете да замените канала по подразбиране, към който публикува уеб куката, като въведете името на канала в полето \"Канал име\". Трябва да бъде активирано в настройките за уеб кука на Mattermost. Например: #other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - евтин, но бавен. Често е претоварен. Само за получатели от Полша.", + "promosmsTypeFlash": "SMS FLASH - Съобщението автоматично се показва на устройството на получателя. Само за получатели от Полша.", + "promosmsTypeFull": "SMS FULL - Високо ниво на SMS услуга. Можете да използвате Вашето име като подател (Необходимо е първо да регистрирате името). Надежден метод за съобщения тип тревога.", + "promosmsTypeSpeed": "SMS SPEED - Най-висок приоритет в системата. Много бърза и надеждна, но същевременно скъпа услуга. (Около два пъти по-висока цена в сравнение с SMS FULL).", + "promosmsPhoneNumber": "Телефонен номер (за получатели от Полша, можете да пропуснете въвеждането на код за населено място)", + "promosmsSMSSender": "SMS Подател име: Предварително регистрирано име или някое от имената по подразбиране: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu URL адрес за уеб кука", + "matrixHomeserverURL": "Сървър URL адрес (започва с http(s):// и порт по желание)", + "Internal Room Id": "ID на вътрешна стая", + "matrixDesc1": "Можете да намерите \"ID на вътрешна стая\" в разширените настройки на стаята във вашия Matrix клиент. Примерен изглед: !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Силно препоръчваме да създадете НОВ потребител и да НЕ използвате токен кодът на вашия личен Matrix потребител, т.к. той позволява пълен достъп до вашия акаунт и всички стаи към които сте се присъединили. Вместо това създайте нов потребител и го поканете само в стаята, където желаете да получавате известията. Токен код за достъп ще получите изпълнявайки {0}", + "Method": "Метод", + "Body": "Съобщение", + "Headers": "Хедъри", + "PushUrl": "Push URL адрес", + "HeadersInvalidFormat": "Заявените хедъри не са валидни JSON: ", + "BodyInvalidFormat": "Заявеното съобщение не е валиден JSON: ", + "Monitor History": "История на мониторите", + "clearDataOlderThan": "Ще се съхранява за {0} дни.", + "records": "записа", + "One record": "Един запис", + "steamApiKeyDescription": "За да мониторирате Steam Game Server се нуждаете от Steam Web-API ключ. Можете да регистрирате Вашия API ключ тук: ", + "clicksendsms": "ClickSend SMS", + "apiCredentials": "API удостоверяване", + "PasswordsDoNotMatch": "Паролите не съвпадат.", + "Current User": "Текущ потребител", + "recent": "Скорошни", + "Done": "Готово", + "Info": "Информация", + "Security": "Сигурност", + "Steam API Key": "Steam API ключ", + "Shrink Database": "Редуцирай базата данни", + "Pick a RR-Type...": "Изберете вида на ресурсния запис за мониториране…", + "Pick Accepted Status Codes...": "Изберете статус кодове, които да се считат за успешен отговор…", + "Default": "По подразбиране", + "HTTP Options": "HTTP Опции", + "Create Incident": "Създаване на инцидент", + "Title": "Заглавие", + "Content": "Съдържание", + "Style": "Стил", + "info": "информация", + "warning": "предупреждение", + "danger": "опасност", + "primary": "основен", + "light": "светъл", + "dark": "тъмен", + "Post": "Публикувай", + "Please input title and content": "Моля, въведете заглавие и съдържание", + "Created": "Създаден", + "Last Updated": "Последно обновена", + "Unpin": "Откачи", + "Switch to Light Theme": "Превключи към светла тема", + "Switch to Dark Theme": "Превключи към тъмна тема", + "Show Tags": "Покажи етикети", + "Hide Tags": "Скрий етикети", + "Description": "Описание", + "No monitors available.": "Няма налични монитори.", + "Add one": "Добави един", + "No Monitors": "Няма монитори", + "Untitled Group": "Група без заглавие", + "Services": "Услуги", + "Discard": "Отмени", + "Cancel": "Отмени", + "Powered by": "Създадено чрез", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Потребителско име (вкл. webapi_ prefix)", + "serwersmsAPIPassword": "API Парола", + "serwersmsPhoneNumber": "Телефон номер", + "serwersmsSenderName": "SMS Подател име (регистриран през клиентския портал)", + "stackfield": "Stackfield", + "smtpDkimSettings": "DKIM Настройки", + "smtpDkimDesc": "Моля, вижте {0} на Nodemailer DKIM за инструкции.", + "documentation": "документацията", + "smtpDkimDomain": "Домейн", + "smtpDkimKeySelector": "Селектор на ключ", + "smtpDkimPrivateKey": "Частен ключ", + "smtpDkimHashAlgo": "Хеш алгоритъм (по желание)", + "smtpDkimheaderFieldNames": "Хедър ключове за подписване (по желание)", + "smtpDkimskipFields": "Хедър ключове, които да не се подписват (по желание)", + "PushByTechulus": "Push от Techulus", + "GoogleChat": "Google Chat (Само за работното пространство на Google)", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "Крайна точка на API", + "alertaEnvironment": "Среда", + "alertaApiKey": "API Ключ", + "alertaAlertState": "Състояние на тревога", + "alertaRecoverState": "Състояние на възстановяване", + "deleteStatusPageMsg": "Сигурни ли сте, че желаете да изтриете тази статус страница?", + "Proxies": "Прокси", + "default": "По подразбиране", + "enabled": "Активирано", + "setAsDefault": "Зададен по подразбиране", + "deleteProxyMsg": "Сигурни ли сте, че желаете да изтриете това прокси за всички монитори?", + "proxyDescription": "За да функционират трябва да бъдат зададени към монитор.", + "enableProxyDescription": "Това прокси няма да има ефект върху заявките за мониторинг, докато не бъде активирано. Можете да контролирате временното деактивиране на проксито от всички монитори чрез статуса на активиране.", + "setAsDefaultProxyDescription": "Това прокси ще бъде активно по подразбиране за новите монитори. Можете да го изключвате отделно за всеки един монитор.", + "Certificate Chain": "Верига на сертификата", + "Valid": "Валиден", + "Invalid": "Невалиден", + "AccessKeyId": "ID на ключ за достъп", + "SecretAccessKey": "Тайна на ключа за достъп", + "PhoneNumbers": "Телефонни номера", + "TemplateCode": "Шаблон Код", + "SignName": "Знак име", + "Sms template must contain parameters: ": "SMS шаблонът трябва да съдържа следните параметри: ", + "Bark Endpoint": "Bark крайна точка", + "WebHookUrl": "URL адрес на уеб кука", + "SecretKey": "Таен ключ", + "For safety, must use secret key": "За сигурност, трябва да се използва таен ключ", + "Device Token": "Токен за устройство", + "Platform": "Платформа", + "Huawei": "Huawei", + "High": "Висок", + "Retry": "Повтори", + "Topic": "Тема", + "WeCom Bot Key": "WeCom бот ключ", + "Setup Proxy": "Настройка на прокси", + "Proxy Protocol": "Прокси протокол", + "Proxy Server": "Прокси сървър", + "Proxy server has authentication": "Прокси сървърът е с удостоверяване", + "User": "Потребител", + "Installed": "Инсталиран", + "Not installed": "Не е инсталиран", + "Running": "Работи", + "Not running": "Не работи", + "Remove Token": "Премахни токен", + "Start": "Стартирай", + "Stop": "Спри", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Добави нова статус страница", + "Slug": "Слъг", + "Accept characters:": "Приеми символи:", + "startOrEndWithOnly": "Започва или завършва само с {0}", + "No consecutive dashes": "Без последователни тирета", + "Next": "Следващ", + "The slug is already taken. Please choose another slug.": "Този слъг вече се използва. Моля изберете друг.", + "No Proxy": "Без прокси", + "Authentication": "Удостоверяване", + "HTTP Basic Auth": "HTTP основно удостоверяване", + "New Status Page": "Нова статус страница", + "Page Not Found": "Страницата не е открита", + "Reverse Proxy": "Ревърс прокси", + "Backup": "Архивиране", + "About": "Относно", + "wayToGetCloudflaredURL": "(Свалете \"cloudflared\" от {0})", + "cloudflareWebsite": "Cloudflare уеб сайт", + "Message:": "Съобщение:", + "Don't know how to get the token? Please read the guide:": "Не знаете как да вземете токен? Моля, прочетете ръководството:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Текущата връзка може да прекъсне ако в момента сте свързани чрез \"Cloudflare Tunnel\". Сигурни ли сте, че желаете да го спрете? Моля, въведете Вашата текуща парола за да потвърдите.", + "Other Software": "Друг софтуер", + "For example: nginx, Apache and Traefik.": "Например: Nginx, Apache и Traefik.", + "Please read": "Моля, прочетете", + "Subject:": "Субект:", + "Valid To:": "Валиден до:", + "Days Remaining:": "Оставащи дни:", + "Issuer:": "Издател:", + "Fingerprint:": "Пръстов отпечатък:", + "No status pages": "Няма статус страници", + "topic": "Тема", + "topicExplanation": "MQTT тема за мониториране", + "successMessage": "Съобщение при успех", + "successMessageExplanation": "MQTT съобщение, което ще бъде считано за успех", + "Customize": "Персонализирай", + "Custom Footer": "Персонализиран долен колонтитул", + "Custom CSS": "Потребителски CSS", + "Domain Name Expiry Notification": "Известие при изтичащ домейн", + "Proxy": "Прокси", + "Date Created": "Дата на създаване", + "onebotHttpAddress": "OneBot HTTP адрес", + "onebotMessageType": "OneBot тип съобщение", + "onebotGroupMessage": "Група", + "onebotPrivateMessage": "Лично", + "onebotUserOrGroupId": "Група/Потребител ID", + "onebotSafetyTips": "С цел безопасност трябва да зададете токен код за достъп", + "PushDeer Key": "PushDeer ключ", + "Footer Text": "Текст долен колонтитул", + "Show Powered By": "Покажи \"Създадено чрез\"", + "Domain Names": "Домейни", + "signedInDisp": "Вписан като {0}", + "signedInDispDisabled": "Удостоверяването е изключено.", + "Certificate Expiry Notification": "Известие за изтичане валидността на сертификата", + "API Username": "API Потребител", + "API Key": "API Ключ", + "Recipient Number": "Номер на получателя", + "From Name/Number": "От Име/Номер", + "Leave blank to use a shared sender number.": "Оставете празно, за да използвате споделен номер на подател.", + "Octopush API Version": "Octopush API версия", + "Legacy Octopush-DM": "Octopush-DM старa версия", + "endpoint": "крайна точка", + "octopushAPIKey": "\"API ключ\" от HTTP API удостоверяване в контролния панел", + "octopushLogin": "\"Вписване\" от HTTP API удостоверяване в контролния панел", + "promosmsLogin": "API Потребителско име", + "promosmsPassword": "API Парола", + "pushoversounds pushover": "Pushover (по подразбиране)", + "pushoversounds bike": "Велосипед", + "pushoversounds bugle": "Тромпет", + "pushoversounds cashregister": "Касов апарат", + "pushoversounds classical": "Класическа музика", + "pushoversounds cosmic": "Космически", + "pushoversounds falling": "Падащ", + "pushoversounds gamelan": "Гамелан", + "pushoversounds incoming": "Входящ", + "pushoversounds intermission": "Прекъсване", + "pushoversounds magic": "Магия", + "pushoversounds mechanical": "Механичен", + "pushoversounds pianobar": "Пиано бар", + "pushoversounds siren": "Сирена", + "pushoversounds spacealarm": "Космическа аларма", + "pushoversounds tugboat": "Буксир", + "pushoversounds alien": "Извънземна аларма (дълъг)", + "pushoversounds climb": "Изкачване (дълъг)", + "pushoversounds persistent": "Постоянен (дълъг)", + "pushoversounds echo": "Pushover ехо (дълъг)", + "pushoversounds updown": "Горе долу (дълъг)", + "pushoversounds vibrate": "Само вибрация", + "pushoversounds none": "Без (тих)", + "pushyAPIKey": "Таен API ключ", + "pushyToken": "Токен на устройство", + "Show update if available": "Покажи актуализация, ако е налична", + "Also check beta release": "Проверявай и за бета версии", + "Using a Reverse Proxy?": "Използвате ревърс прокси?", + "Check how to config it for WebSocket": "Проверете как да го конфигурирате за WebSocket", + "Steam Game Server": "Steam Game сървър", + "Most likely causes:": "Най-вероятни причини:", + "The resource is no longer available.": "Ресурсът вече не е наличен.", + "There might be a typing error in the address.": "Възможно е да е допусната грешка при изписването на адреса.", + "What you can try:": "Какво можете да опитате:", + "Retype the address.": "Повторно въвеждане на адреса.", + "Go back to the previous page.": "Да се върнете към предишната страница.", + "Coming Soon": "Очаквайте скоро", + "wayToGetClickSendSMSToken": "Можете да получите API потребителско име и API ключ от {0} .", + "dnsPortDescription": "DNS порт на сървъра. По подразбиране е 53. Можете да го промените по всяко време.", + "error": "грешка", + "critical": "критично", + "wayToGetPagerDutyKey": "Можете да го получите като посетите Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Тук трябва да потърсите \"Events API V2\". Повече информация {0}", + "Integration Key": "Ключ за интегриране", + "Integration URL": "URL адрес за интеграция", + "Auto resolve or acknowledged": "Автоматично разрешаване или потвърждаване", + "do nothing": "не прави нищо", + "auto acknowledged": "автоматично потвърждаване", + "auto resolve": "автоматично разрешаване", + "Connection String": "Стринг за връзка", + "Query": "Заявка", + "settingsCertificateExpiry": "Изтичане валидността на TLS сертификата", + "certificationExpiryDescription": "HTTPS мониторите ще задействат известие, ако е наличен изтичащ TLS сертификат, през следващите:", + "ntfy Topic": "ntfy Тема", + "Domain": "Домейн", + "Workstation": "Работна станция", + "disableCloudflaredNoAuthMsg": "Тъй като сте в режим \"No Auth mode\", парола не се изисква.", + "wayToGetLineNotifyToken": "Можете да получите токен код за достъп от {0}", + "resendEveryXTimes": "Изпращай повторно на всеки {0} пъти", + "resendDisabled": "Повторното изпращане е изключено", + "Resend Notification if Down X times consecutively": "Повторно изпращане на известие, ако е недостъпен X пъти последователно", + "Bark Group": "Bark група", + "Bark Sound": "Bark звук", + "HTTP Headers": "HTTP хедъри", + "Trust Proxy": "Доверено Proxy", + "HomeAssistant": "Home Assistant", + "RadiusSecret": "Radius таен код", + "RadiusSecretDescription": "Споделен таен код между клиент и сървър", + "RadiusCalledStationId": "Повиквана станция ID", + "RadiusCalledStationIdDescription": "Идентификатор на повикваното устройство", + "RadiusCallingStationId": "Повикваща станция ID", + "RadiusCallingStationIdDescription": "Идентификатор на повикващото устройство", + "Setup Docker Host": "Настройка на Docker хост", + "Connection Type": "Тип свързване", + "Docker Daemon": "Docker демон", + "deleteDockerHostMsg": "Сигурни ли сте, че желаете да изтриете този Docker хост за всички монитори?", + "socket": "Сокет", + "tcp": "TCP / HTTP", + "Docker Container": "Docker контейнер", + "Container Name / ID": "Име на контейнер / ID", + "Docker Host": "Docker хост", + "Docker Hosts": "Docker хостове", + "trustProxyDescription": "Доверяване на 'X-Forwarded-*' хедърите. В случай, че желаете да получавате реалния IP адрес на клиента и Uptime Kuma е зад системи като Nginx или Apache, трябва да разрешите тази опция.", + "Examples": "Примери", + "Home Assistant URL": "Home Assistant URL адрес", + "Long-Lived Access Token": "Long-Lived токен за достъп", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Access Token можете да създадете, като кликнете върху името на профила си (долу ляво) и превъртите до най-долу, след това кликнете върху Създаване на токен. ", + "Notification Service": "Услуга за известяване", + "default: notify all devices": "по подразбиране: извести всички устройства", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Списък с услугите за известяване може да бъде намерен в Home Assistant под \"Developer Tools > Services\", там потърсете \"notification\", за да намерите името на вашето устройство/телефон.", + "Automations can optionally be triggered in Home Assistant:": "Автоматизациите могат да се задействат при нужда в Home Assistant:", + "Trigger type:": "Задействане тип:", + "Event type:": "Събитие тип:", + "Event data:": "Събитие данни:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "След което изберете действие, например да превключите сцената, където RGB светлината е червена.", + "Frontend Version": "Фронтенд версия", + "Frontend Version do not match backend version!": "Фронтенд версията не съвпада с Бекенд версията!", + "Base URL": "Базов URL адрес", + "goAlertInfo": "GoAlert е приложение с отворен код за планиране на повиквания, автоматизирани ескалации и известия (като SMS или гласови повиквания). Автоматично ангажирайте точния човек, по точния начин и в точното време! {0}", + "goAlertIntegrationKeyInfo": "Вземете общ API интеграционен ключ за услугата във формат \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" обикновено стойността на параметъра token на копирания URL адрес.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Отпаднала: Тъй като са добавени много функции, тази опция за архивиране не е достатъчно поддържана и не може да генерира или възстанови пълен архив.", + "backupRecommend": "Вместо това моля, архивирайте директно дяла или папката (./data/).", + "Maintenance": "Поддръжка", + "statusMaintenance": "Поддръжка", + "Schedule maintenance": "Планиране на поддръжка", + "Affected Monitors": "Засегнати монитори", + "Pick Affected Monitors...": "Изберете засегнатите монитори…", + "Start of maintenance": "Стартирай поддръжка", + "All Status Pages": "Всички статус страници", + "Select status pages...": "Изберете статус страници…", + "recurringIntervalMessage": "Изпълнявай ежедневно | Изпълнявай всеки {0} дни", + "affectedMonitorsDescription": "Изберете монитори, попадащи в обсега на текущата поддръжка", + "affectedStatusPages": "Покажи това съобщение за поддръжка на избрани статус страници", + "atLeastOneMonitor": "Изберете поне един засегнат монитор", + "deleteMaintenanceMsg": "Сигурни ли сте, че желаете да изтриете тази поддръжка?", + "Optional": "По желание", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "SMSManager API Документация ", + "Gateway Type": "Тип на шлюза", + "SMSManager": "SMSManager", + "You can divide numbers with": "Можете да разделяте числата с", + "or": "или", + "recurringInterval": "Интервал", + "Recurring": "Повтаряне", + "strategyManual": "Активен/Неактивен ръчно", + "warningTimezone": "Използва се часовата зона на сървъра", + "weekdayShortMon": "Пон", + "weekdayShortTue": "Вт", + "weekdayShortWed": "Ср", + "weekdayShortThu": "Чет", + "weekdayShortFri": "Пет", + "weekdayShortSat": "Съб", + "weekdayShortSun": "Нед", + "dayOfWeek": "Ден", + "dayOfMonth": "Дата", + "lastDay": "Последен ден", + "lastDay1": "Последен ден от месеца", + "lastDay2": "2-ри последен ден на месеца", + "lastDay3": "3-ти последен ден на месеца", + "lastDay4": "4-ти последен ден на месеца", + "No Maintenance": "Няма поддръжка", + "pauseMaintenanceMsg": "Сигурни ли сте, че желаете да направите пауза?", + "maintenanceStatus-under-maintenance": "В режим поддръжка", + "maintenanceStatus-inactive": "Неактивна", + "maintenanceStatus-scheduled": "Планирана", + "maintenanceStatus-ended": "Приключена", + "maintenanceStatus-unknown": "Неизвестна", + "Display Timezone": "Покажи часова зона", + "Server Timezone": "Часова зона на сървъра", + "statusPageMaintenanceEndDate": "Край", + "enableGRPCTls": "Разреши изпращане на gRPC заявка с TLS връзка", + "grpcMethodDescription": "Името на метода се форматира в \"camelCase\", например sayHello, check, и т.н.", + "smseagle": "SMSEagle", + "smseagleTo": "Тел. номер(а)", + "smseagleGroup": "Име на група/и от тел. указател", + "smseagleContact": "Име(на) от тел. указател", + "smseagleRecipientType": "Получател тип", + "smseagleRecipient": "Получател(и) (при повече от един разделете със запетая)", + "smseagleToken": "API токен за достъп", + "smseagleUrl": "Вашият SMSEagle URL на устройството", + "smseagleEncoding": "Изпрати като Unicode", + "smseaglePriority": "Приоритет на съобщението (0-9, по подразбиране = 0)", + "IconUrl": "Икона URL адрес", + "webhookAdditionalHeadersTitle": "Допълнителни хедъри", + "webhookAdditionalHeadersDesc": "Задава допълнителни хедъри, изпратени с уеб куката. Всеки хедър трябва да бъде дефиниран като JSON ключ/стойност.", + "Enable DNS Cache": "(Отпаднала) Активирай DNS кеширане за HTTP(S) монитори", + "Enable": "Активирай", + "Disable": "Деактивирай", + "dnsCacheDescription": "Възможно е да не работи в IPv6 среда - деактивирайте, ако срещнете проблеми.", + "Single Maintenance Window": "Единичен времеви интервал за поддръжка", + "Maintenance Time Window of a Day": "Времеви интервал от деня за поддръжка", + "Effective Date Range": "Ефективен интервал от дни (по желание)", + "Schedule Maintenance": "Планирай поддръжка", + "Date and Time": "Дата и час", + "DateTime Range": "Изтрий времеви интервал", + "Strategy": "Стратегия", + "Free Mobile User Identifier": "Free Mobile потребителски идентификатор", + "Free Mobile API Key": "Free Mobile API ключ", + "Enable TLS": "Активирай TLS", + "Proto Service Name": "Proto име на услугата", + "Proto Method": "Proto метод", + "Proto Content": "Proto съдържание", + "Economy": "Икономичен", + "Lowcost": "Евтин", + "high": "висок", + "General Monitor Type": "Общ тип монитор", + "Passive Monitor Type": "Пасивет тип монитор", + "Specific Monitor Type": "Специфичен тип монитор", + "ZohoCliq": "ZohoCliq", + "wayToGetZohoCliqURL": "Можете да научите как се създава URL адрес за уеб кука {0}.", + "Kook": "Kook", + "wayToGetKookBotToken": "Създайте приложение и вземете вашия бот токен на {0}", + "wayToGetKookGuildID": "Превключете в 'Developer Mode' в 'Kook' настройките, след което десен клик върху 'guild' за да вземете неговото 'ID'", + "Guild ID": "Guild ID", + "Help": "Помощ", + "Game": "Игра", + "Custom": "Потребителски", + "infiniteRetention": "Задайте стойност 0 за безкрайно съхранение.", + "Monitor": "Монитор | Монитори", + "dataRetentionTimeError": "Периодът на съхранение трябва да е 0 или по-голям", + "confirmDeleteTagMsg": "Сигурни ли сте, че желаете да изтриете този етикет? Мониторите, свързани с него, няма да бъдат изтрити.", + "promosmsAllowLongSMS": "Позволи дълъг SMS", + "Packet Size": "Размер на пакет", + "Custom Monitor Type": "Потребителски тип монитор", + "loadingError": "Данните не могат да бъдат изтеглени. Моля, опитайте отново по-късно.", + "plugin": "Плъгин | Плъгини", + "install": "Инсталирай", + "installing": "Инсталиране", + "uninstall": "Деинсталирай", + "uninstalling": "Деинсталиране", + "confirmUninstallPlugin": "Сигурни ли сте, че желаете да деинсталирате този плъгин?", + "markdownSupported": "Поддържа се Markdown синтаксис", + "Google Analytics ID": "Google Analytics ID", + "Edit Tag": "Редактиране на етикет", + "Learn More": "Научете повече", + "Server Address": "Сървър адрес", + "notificationRegional": "Регионални", + "Body Encoding": "Кодировка на тялото", + "telegramMessageThreadID": "(По избор) Thread ID на съобщението", + "telegramMessageThreadIDDescription": "Незадължителен уникален идентификатор за целевата нишка от съобщения (тема) на форума; само за форумни супергрупи", + "telegramProtectContent": "Защита на препращане/записване", + "telegramProtectContentDescription": "Ако е активирано, съобщенията от ботове в Telegram ще бъдат защитени от препращане и запазване.", + "telegramSendSilentlyDescription": "Изпраща съобщението тихо. Потребителите ще получат известие без звук.", + "telegramSendSilently": "Изпрати тихо", + "Clone Monitor": "Клониране на монитор", + "Clone": "Клонирай", + "cloneOf": "Клониран {0}", + "Expiry": "Валиден до", + "Expiry date": "Дата на изтичане", + "Add Another": "Добави друг", + "Key Added": "Ключът е добавен", + "Add API Key": "Добави API ключ", + "No API Keys": "Няма API ключове", + "apiKey-active": "Активен", + "Expires": "Изтича на", + "deleteAPIKeyMsg": "Сигурни ли сте, че желаете да изтриете този API ключ?", + "Generate": "Генерирай", + "API Keys": "API Ключове", + "Don't expire": "Не изтича", + "Continue": "Продължи", + "apiKeyAddedMsg": "Вашият API ключ е добавен. Моля, запишете го, тъй като той няма да бъде показан отново.", + "apiKey-expired": "Изтекъл", + "apiKey-inactive": "Неактивен", + "disableAPIKeyMsg": "Сигурни ли сте, че желаете да деактивирате този API ключ?", + "pagertreeUrgency": "Спешност", + "pagertreeSilent": "Тих", + "pagertreeLow": "Ниска", + "pagertreeHigh": "Висока", + "pagertreeResolve": "Автоматично разрешаване", + "pagertreeDoNothing": "Не прави нищо", + "wayToGetPagerTreeIntegrationURL": "След като създадете интеграция на Uptime Kuma в PagerTree, копирайте крайната точка. За пълни подробности вижте {0}", + "pagertreeIntegrationUrl": "URL Адрес за интеграция", + "pagertreeMedium": "Средна", + "pagertreeCritical": "Критична", + "Add New Tag": "Добави нов етикет", + "lunaseaTarget": "Цел", + "lunaseaDeviceID": "ID на устройството", + "lunaseaUserID": "ID на потребител", + "twilioAccountSID": "Профил SID", + "twilioAuthToken": "Удостоверяващ токен / Тайна на API ключа", + "twilioFromNumber": "От номер", + "twilioToNumber": "Към номер", + "sameAsServerTimezone": "Kато часовата зона на сървъра", + "startDateTime": "Старт Дата/Час", + "endDateTime": "Край Дата/Час", + "cronSchedule": "График: ", + "invalidCronExpression": "Невалиден \"Cron\" израз: {0}", + "cronExpression": "Израз тип \"Cron\"", + "statusPageRefreshIn": "Ще се обнови след: {0}", + "ntfyUsernameAndPassword": "Потребителско име и парола", + "ntfyAuthenticationMethod": "Метод за удостоверяване", + "pushoverMessageTtl": "TTL на съобщението (секунди)", + "Open Badge Generator": "Отвори генератора на баджове", + "Badge Generator": "Генератор на баджове на {0}", + "Badge Type": "Тип бадж", + "Badge Duration": "Продължителност на баджа", + "Badge Prefix": "Префикс за стйността на баджа", + "Badge Label Color": "Цвят на етикета на баджа", + "Badge Color": "Цвят на баджа", + "Badge Label Suffix": "Суфикс на етикета на значката", + "Badge Up Color": "Цвят на баджа за достъпен", + "Badge Down Color": "Цвят на баджа за недостъпен", + "Badge Maintenance Color": "Цвят на баджа за поддръжка", + "Badge Warn Color": "Цвят на баджа за предупреждение", + "Badge Warn Days": "Дни за показване на баджа", + "Badge Style": "Стил на баджа", + "Badge value (For Testing only.)": "Стойност на баджа (само за тест.)", + "Badge URL": "URL адрес на баджа", + "Monitor Setting": "Настройка на монитор {0}", + "Show Clickable Link": "Покажи връзка, която може да се кликне", + "Show Clickable Link Description": "Ако е отбелязано, всеки който има достъп до тази статус страница, ще може да достъпва мониторирания URL адрес.", + "Badge Label": "Етикет на баджа", + "Badge Suffix": "Суфикс за стойността на баджа", + "Badge Label Prefix": "Префикс на етикета на значката", + "Badge Pending Color": "Цвят на баджа за изчакващ", + "Badge Down Days": "Колко дни баджът да не се показва", + "Group": "Група", + "Monitor Group": "Монитор група", + "Cannot connect to the socket server": "Не може да се свърже със сокет сървъра", + "Reconnecting...": "Повторно свързване...", + "Edit Maintenance": "Редактиране на поддръжка", + "Home": "Главна страница", + "noGroupMonitorMsg": "Не е налично. Първо създайте групов монитор.", + "Close": "Затвори", + "nostrRelays": "Nostr релета", + "nostrRelaysHelp": "Един URL адрес за реле на ред", + "nostrSender": "Частен ключ на изпращача (nsec)", + "nostrRecipients": "Публични ключове на получатели (npub)", + "nostrRecipientsHelp": "npub формат, по един на ред", + "chromeExecutable": "Chrome/Chromium изпълним файл", + "chromeExecutableAutoDetect": "Автоматично откриване", + "chromeExecutableDescription": "За потребителите на Docker, ако Chromium все още не е инсталиран, инсталирането и показването на резултата от теста може да отнеме няколко минути. Заема 1GB дисково пространство.", + "Invert Keyword": "Обърнат режим за ключова дума", + "invertKeywordDescription": "При търсене ключовата дума трябва да отсъства, а не да присъства.", + "webhookBodyPresetOption": "Предварителна настройка - {0}", + "webhookBodyCustomOption": "Персонализирано тяло", + "webhookCustomBodyDesc": "Дефинирайте персонализирано HTTP тяло за заявката. Приемат се шаблонни променливи {msg}, {heartbeat}, {monitor}.", + "Request Body": "Тяло на заявката", + "twilioApiKey": "API ключ (по избор)", + "Expected Value": "Очаквана стойност", + "Json Query": "Заявка тип JSON", + "Badge Duration (in hours)": "Времетраене на баджа (в часове)", + "Badge Preview": "Преглед на баджа", + "Notify Channel": "Канал за известяване", + "aboutNotifyChannel": "Каналът за известяване ще задейства известие на настолен компютър или мобилно устройство за всички членове на канала, независимо дали тяхната наличност е в състояние активен или отсъстващ.", + "filterActive": "Активен", + "filterActivePaused": "На пауза", + "Kafka Brokers": "Kafka брокери", + "Enter the list of brokers": "Въведете списъка с брокери", + "Press Enter to add broker": "Натиснете Enter, за да добавите брокер", + "Kafka Topic Name": "Име на темата за Kafka", + "Enable Kafka SSL": "Активирай Kafka SSL", + "Enable Kafka Producer Auto Topic Creation": "Активирай автоматично създаване на темa в Kafka Producer", + "Kafka Producer Message": "Съобщение на Kafka Producer", + "Kafka SASL Options": "Опции на Kafka SASL", + "Mechanism": "Механизъм", + "Pick a SASL Mechanism...": "Изберете SASL механизъм…", + "Authorization Identity": "Идентичност за оторизиране", + "AccessKey Id": "AccessKey ID", + "Secret AccessKey": "Таен ключ за достъп", + "Session Token": "Токен за сесия", + "tailscalePingWarning": "За да използвате Tailscale Ping монитор, трябва да инсталирате Uptime Kuma без Docker и също така да инсталирате Tailscale клиент на вашия сървър.", + "Server URL should not contain the nfty topic": "URL адресът на сървъра не трябва да съдържа nfty темата", + "FlashDuty Severity": "Степен на тежест", + "showCertificateExpiry": "Показвай изтичащ сертификат", + "noOrBadCertificate": "Няма/лош сертификат", + "Select": "Избери", + "selectedMonitorCount": "Избрано: {0}", + "wayToGetFlashDutyKey": "Можете да отидете на страница 'Channel -> (Select a Channel) -> Integrations -> Add a new integration' и да добавите 'UptimeKuma', за да получите 'push' адрес и да копирате ключа за интегриране в адреса. За повече информация, моля посетете", + "PushDeer Server": "PushDeer сървър", + "pushDeerServerDescription": "Оставете празно, за да използвате официалния сървър", + "Check/Uncheck": "Постави/Премахни отметка", + "Request Timeout": "Време за изтичане на заявката", + "timeoutAfter": "Времето изтича след {0} секунди", + "styleElapsedTime": "Изминало време под лентата с проверки", + "styleElapsedTimeShowNoLine": "Покажи (без ред)", + "gamedigGuessPort": "Gamedig: Познай порт", + "gamedigGuessPortDescription": "Портът, използван от Valve Server Query Protocol, може да е различен от клиентския порт. Опитайте това, ако мониторът не може да се свърже с вашия сървър.", + "styleElapsedTimeShowWithLine": "Покажи (с ред)", + "enableNSCD": "Активирай NSCD (Name Service Cache Daemon) за кеширане на всички DNS заявки", + "dbName": "Име на базата данни", + "setupDatabaseChooseDatabase": "Коя база данни желаете да използвате?", + "Saved.": "Запазено.", + "toastErrorTimeout": "Време за изчакване на известията при грешка", + "toastSuccessTimeout": "Време за изчакване на известията при успех", + "monitorToastMessagesDescription": "Известието за състояние на монитора изчезва след определено време в секунди. Задаване на -1, деактивира времето за изчакване. Задаване на 0 деактивира тост известията.", + "monitorToastMessagesLabel": "Мониторинг на известията при промяна на състоянието", + "setupDatabaseEmbeddedMariaDB": "Не е нужно да настройвате нищо. Този Docker имидж автоматично е вградил и конфигурирал MariaDB за Вас. Uptime Kuma ще се свърже с тази база данни чрез Unix сокет.", + "setupDatabaseMariaDB": "Свързване към външна MariaDB база данни. Трябва да зададете информацията за връзка с базата данни.", + "setupDatabaseSQLite": "Обикновен файл с база данни, препоръчително при маломащабен тип внедрявания. Преди v2.0.0 Uptime Kuma използва SQLite като база данни по подразбиране.", + "Bark API Version": "Версия на Bark API", + "pushViewCode": "Как да използвате Push монитор? (Вижте кода)", + "pushOthers": "Други", + "programmingLanguages": "Програмни езици", + "authInvalidToken": "Невалиден токен.", + "authUserInactiveOrDeleted": "Потребителят е неактивен или изтрит.", + "authIncorrectCreds": "Неправилно потребителско име или парола.", + "2faAlreadyEnabled": "2FA вече е активирано.", + "2faEnabled": "2FA е активирано.", + "2faDisabled": "2FA е деактивирано.", + "successAdded": "Добавен успешно.", + "successPaused": "Успешно поставен на пауза.", + "successDeleted": "Успешно изтрит.", + "successEdited": "Успешно редактиран.", + "successBackupRestored": "Резервното копие е възстановено успешно.", + "successDisabled": "Успешно деактивиран.", + "successEnabled": "Успешно активиран.", + "tagNotFound": "Етикетът не е намерен.", + "successResumed": "Успешно възобновен.", + "successAuthChangePassword": "Паролата е актуализирана успешно.", + "foundChromiumVersion": "Намерен Chromium/Chrome. Версия: {0}", + "Reset Token": "Нулиране на токен код", + "leave blank for default subject": "оставете празно за използване на тема по подразбиране", + "emailCustomBody": "Персонализирано съдържание", + "emailCustomisableContent": "Съдържание подлежащо на персонализиране", + "leave blank for default body": "оставете празно за използване на съдържание по подразбиране", + "emailTemplateServiceName": "Име на услугата", + "emailTemplateHostnameOrURL": "Име на хост или URL адрес", + "emailTemplateStatus": "Статус", + "emailTemplateMonitorJSON": "обект описващ монитора", + "emailTemplateHeartbeatJSON": "обект описващ проверката", + "liquidIntroduction": "Създаването на шаблони се постига чрез езика \"Liquid templating \". Моля, вижте {0} относно инструкции за употреба. Наличните променливи са:", + "templateLimitedToUpDownCertNotifications": "налично само за известия от тип Достъпен/Недостъпен/Изтичане вал. на сертификата", + "smtpLiquidIntroduction": "Следните две полета могат да бъдат създадени чрез шаблони, посредством езика \"Liquid templating \". Моля, вижте {0} относно инструкции за употреба. Наличните променливи са:", + "templateMsg": "съобщение на известието", + "templateHeartbeatJSON": "обект описващ проверките", + "templateMonitorJSON": "обект описващ монитора", + "templateLimitedToUpDownNotifications": "налично само за известия от тип Достъпен/Недостъпен", + "emailTemplateMsg": "съобщение на известието", + "emailTemplateLimitedToUpDownNotification": "налично само за проверки от тип Достъпен/Недостъпен, в противен случай null", + "GrafanaOncallUrl": "Grafana Oncall URL адрес", + "noDockerHostMsg": "Не е наличен. Първо настройте \"Docker\" хост.", + "DockerHostRequired": "Моля, задайте \"Docker\" хоста за този монитор.", + "Browser Screenshot": "Екранна снимка на браузър", + "remoteBrowserToggle": "По подразбиране Chromium работи в контейнера Uptime Kuma. Можете да използвате отдалечен браузър, като превключите този ключ.", + "remoteBrowsersDescription": "Отдалечените браузъри са алтернатива на локалното стартиране на Chromium. Настройте с услуга като \"browserless.io\" или свържете с Вашата собствена", + "Remove the expiry notification": "Премахни деня за известяване при изтичане", + "Add a new expiry notification day": "Добави нов ден за известяване при изтичане", + "setup a new monitor group": "настройка на нова група от монитори", + "openModalTo": "отвори модален прозорец към {0}", + "Add a domain": "Добави домейн", + "Remove domain": "Премахни домейн '{0}'", + "Remote Browsers": "Отдалечени браузъри", + "Remote Browser": "Отдалечен браузър", + "Add a Remote Browser": "Добави отдалечен браузър", + "Remote Browser not found!": "Отдалеченият браузър не е намерен!", + "self-hosted container": "самостоятелно хостван контейнер", + "useRemoteBrowser": "Използвай отдалечен браузър", + "deleteRemoteBrowserMessage": "Сигурни ли сте, че желаете да изтриете този отдалечен браузър за всички монитори?", + "successKeyword": "Ключова дума за успех", + "successKeywordExplanation": "MQTT ключова дума, която ще се счита за успех", + "ntfyPriorityHelptextAllExceptDown": "Всички събития се изпращат с този приоритет, с изключение на {0}-събития, които имат приоритет {1}", + "statusPageSpecialSlugDesc": "Специален слъг {0}: тази страница ще бъде показана, когато не е предоставен слъг", + "ntfyPriorityHelptextAllEvents": "Всички събития се изпращат с максимален приоритет", + "settingUpDatabaseMSG": "Настройка на базата данни. Може да отнеме известно време, моля, бъдете търпеливи.", + "Search monitored sites": "Търсене на мониторирани сайтове", + "What is a Remote Browser?": "Какво е отдалечен браузър?", + "Channel access token (Long-lived)": "Токен код за достъп до канал (дълготраен)", + "Your User ID": "Вашето потребителско ID", + "documentationOf": "{0} Документация", + "wayToGetHeiiOnCallDetails": "Как да получите Trigger ID и API ключове е обяснено в {documentation}", + "To Phone Number": "До телефонен номер", + "gtxMessagingToHint": "Международен формат, като първо въведете знака \"+\" ({e164}, {e212} or {e214})", + "gtxMessagingApiKeyHint": "Можете да намерите вашия API ключ в: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)", + "From Phone Number / Transmission Path Originating Address (TPOA)": "От телефонен номер / Изходен Адрес на Пътя на Предаване (ИАПП)", + "gtxMessagingFromHint": "На мобилни телефони, вашите получатели виждат ИАПП показан като подател на съобщението. Позволени са до 11 буквено-цифрови знака, кратък код, местен дълъг код или международни номера ({e164}, {e212} or {e214})", + "Alphanumeric (recommended)": "Буквено-цифров (препоръчително)", + "Telephone number": "Телефонен номер", + "Originator type": "Тип автор", + "Originator": "Автор", + "cellsyntOriginator": "Вижда се на мобилния телефон на получателя като автор на съобщението. Позволените стойности и функция зависят от параметъра - тип автор.", + "Destination": "Дестинация", + "Allow Long SMS": "Разреши дълъг SMS", + "cellsyntSplitLongMessages": "Раздели дългите съобщения до 6 части. 153 x 6 = 918 знака.", + "max 15 digits": "Максимум 15 цифри", + "max 11 alphanumeric characters": "Максимум 11 буквено-цифрови знака", + "cellsyntOriginatortypeAlphanumeric": "Буквено-цифров низ (максимум 11 буквено-цифрови знака). Получателите не могат да отговорят на съобщението.", + "cellsyntOriginatortypeNumeric": "Числова стойност (максимум 15 цифри) с телефонен номер в международен формат, без предхождащо въвеждане на 00 (примерен номер в България 088 123 45 67 трябва да бъде зададен като 359881234567). Получателите могат да отговорят на съобщението.", + "cellsyntDestination": "Телефонен номер на получателя в международен формат, предхождан от 00, последвано от код на държавата, напр. 00359881234567 за номер в България 088 123 45 67 (максимум 17 цифри). Максимум 25 000 получатели, разделени със запетая, на HTTP заявка.", + "callMeBotGet": "Тук можете да генерирате крайна точка за {0}, {1} и {2}. Имайте предвид, че може да получите ограничения в опитите. Ограниченията в опитите изглеждат: {3}", + "wayToGetWhapiUrlAndToken": "Можете да получите URL адреса на API и токена, като влезете в желания от вас канал от {0}", + "whapiRecipient": "Телефонен номер / ID на контакт / ID на група", + "API URL": "URL адрес на API", + "wayToWriteWhapiRecipient": "Телефонният номер с международния префикс, но без знака плюс в началото ({0}), ID на контакта ({1}) или ID на групата ({2}).", + "locally configured mail transfer agent": "локално конфигуриран \"mail transfer agent\"", + "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Или въведете името на хоста на сървъра, към който желаете да се свържете, или {localhost}, ако възнамерявате да използвате {local_mta}", + "Mentioning": "Споменаване", + "Don't mention people": "Не споменавай хора", + "Mention group": "Споменавай {group}", + "wayToGetSevenIOApiKey": "Посетете таблото за управление в app.seven.io > developer > api key > зеленият бутон за добавяне", + "receiverSevenIO": "Номер на получател", + "senderSevenIO": "Номер или име на подател", + "receiverInfoSevenIO": "Ако номерът на получателя не се намира в Германия, трябва да добавите кода на държавата пред номера (напр. за код на държавата 1 от САЩ използвайте 117612121212 вместо 017612121212)", + "apiKeySevenIO": "SevenIO API ключ", + "Host URL": "Хост URL адрес", + "Command": "Команда", + "mongodbCommandDescription": "Изпълни MongoDB команда срещу базата данни. За информация относно наличните команди, вижте {documentation}", + "Bitrix24 Webhook URL": "Bitrix24 Webhook URL адрес", + "wayToGetBitrix24Webhook": "Можете да създадете webhook, като следвате стъпките на {0}", + "bitrix24SupportUserID": "Въведете Вашето потребителско ID в Bitrix24. Можете да го намерите от връзката, като отидете в профила на потребителя.", + "Refresh Interval": "Интервал на опресняване", + "Refresh Interval Description": "Статус страницата ще извършва пълно опресняване на всеки {0} секунди", + "e.g. {discordThreadID}": "напр. {discordThreadID}", + "whatHappensAtForumPost": "Създава нова публикация във форума. Това НЕ публикува съобщения в съществуваща публикация. За да публикувате в съществуваща публикация, използвайте \"{option}\"", + "wayToGetDiscordThreadId": "Получаването на ID на тема/публикация във форум е подобно на получаването на ID на канал. Прочетете повече за това как да получите ID-та {0}", + "Select message type": "Изберете тип съобщение", + "Send to channel": "Изпрати до канал", + "ignoreTLSErrorGeneral": "Игнорирай TLS/SSL грешка зa връзка", + "Create new forum post": "Създай нова публикация във форум", + "postToExistingThread": "Публикувай в съществуваща тема/публикация във форум", + "forumPostName": "Име на публикацията във форума", + "threadForumPostID": "ID на публикация в темата/форум", + "smspartnerApiurl": "Можете да намерите вашия API ключ в таблото на {0}", + "smspartnerPhoneNumber": "Телефон номер(а)", + "smspartnerPhoneNumberHelptext": "Номерът задължително е в международен формат {0}, {1}. Отделните номера трябва да бъдат разделени посредством {2}", + "smspartnerSenderName": "Име на изпращащия на SMS", + "smspartnerSenderNameInfo": "Трябва да е между 3..=11 стандартни знака", + "wayToGetThreemaGateway": "Можете да се регистрирате за Threema Gateway {0}.", + "threemaRecipient": "Получател", + "threemaRecipientType": "Тип получател", + "threemaRecipientTypeIdentity": "Threema-ID", + "threemaRecipientTypePhone": "Телефонен номер", + "threemaRecipientTypeEmail": "Имейл адрес", + "threemaSenderIdentity": "Gateway-ID", + "threemaSenderIdentityFormat": "8 знака, обикновено започва с *", + "threemaApiAuthenticationSecret": "Gateway-ID Тайна фраза", + "threemaRecipientTypeIdentityFormat": "8 знака", + "threemaRecipientTypePhoneFormat": "E.164, без водещ +", + "threemaBasicModeInfo": "Забележка: Тази интеграция използва Threema Gateway в основен режим (сървърно базирано криптиране). Допълнителни подробности можете да намерите {0}.", + "apiKeysDisabledMsg": "API ключовете са деактивирани, защото удостоверяването е деактивирано.", + "jsonQueryDescription": "Анализира и извлича конкретни данни от JSON отговора на сървъра, използвайки JSON заявка или чрез \"$\" за необработения отговор, ако не очаква JSON. След това резултатът се сравнява с очакваната стойност като низове. Вижте {0} за документация и използвайте {1}, за да експериментирате със заявки.", + "starts with": "започва с", + "less than or equal to": "по-малко или равно на", + "now": "сега", + "time ago": "преди {0}", + "-year": "-година", + "Json Query Expression": "Json израз на заявка", + "and": "и", + "cacheBusterParam": "Добави параметъра {0}", + "cacheBusterParamDescription": "Произволно генериран параметър за пропускане на кешове.", + "Community String": "Общностен низ", + "snmpCommunityStringHelptext": "Този низ функционира като парола за удостоверяване и контрол на достъпа до устройства с активиран SNMP. Сравнете го с конфигурацията на вашето SNMP устройство.", + "OID (Object Identifier)": "OID (Идентификатор на обект)", + "snmpOIDHelptext": "Въведете OID за сензора или състоянието, които искате да мониторирате. Използвайте инструменти за управление на мрежата като MIB браузъри или SNMP софтуер, ако не сте сигурни за OID.", + "SNMP Version": "SNMP Версия", + "Please enter a valid OID.": "Моля, въведете валиден OID.", + "Host Onesender": "Onesender хост", + "Token Onesender": "Onesender токен", + "Recipient Type": "Тип получател", + "Private Number": "Частен номер", + "privateOnesenderDesc": "Уверете се, че телефонният номер е валиден. За да изпратите съобщение на личен телефонен номер, напр.: 628123456789", + "groupOnesenderDesc": "Уверете се, че GroupID е валиден. За да изпратите съобщение в група, напр.: 628123456789-342345", + "Group ID": "ID на групата", + "wayToGetOnesenderUrlandToken": "Можете да получите URL адреса и токена, като посетите уебсайта на Onesender. Повече информация {0}", + "Add Remote Browser": "Добави отдалечен браузър", + "New Group": "Нова група", + "Group Name": "Име на групата", + "OAuth2: Client Credentials": "OAuth2: Идентификационни данни на клиента", + "Condition": "Условие", + "Authentication Method": "Метод за удостоверяване", + "Authorization Header": "Хедър за оторизация", + "Form Data Body": "Тяло на формата за данни", + "OAuth Token URL": "URL адрес на OAuth токена", + "Client ID": "ID на клиента", + "Client Secret": "Тайна на клиента", + "OAuth Scope": "Обхват на OAuth", + "Optional: Space separated list of scopes": "По избор: разделен с интервал списък с обхвати", + "Go back to home page.": "Обратно към началната страница.", + "No tags found.": "Няма намерени етикети.", + "Lost connection to the socket server.": "Изгубена връзка със сокет сървъра.", + "Cannot connect to the socket server.": "Не може да се свърже със сокет сървъра.", + "SIGNL4": "SIGNL4", + "SIGNL4 Webhook URL": "SIGNL4 URL адрес на уеб кука", + "signl4Docs": "Повече информация относно конфигуриране на SIGNL4 и получаване на URL адрес за уеб кука SIGNL4 в {0}.", + "Conditions": "Условия", + "conditionAdd": "Добави условие", + "conditionDelete": "Изтрий условие", + "conditionAddGroup": "Добави група", + "conditionDeleteGroup": "Изтрий група", + "conditionValuePlaceholder": "Стойност", + "contains": "съдържа", + "equals": "равно на", + "not equals": "не е равно на", + "not contains": "не съдържа", + "not starts with": "не започва с", + "ends with": "завършва с", + "not ends with": "не завършва с", + "less than": "по-малко от", + "greater than": "по-голямо от", + "greater than or equal to": "по-голямо или равно на", + "record": "запис" +} diff --git a/src/lang/de-CH.json b/src/lang/de-CH.json index 6a6920cf5..e5a206f7b 100644 --- a/src/lang/de-CH.json +++ b/src/lang/de-CH.json @@ -1,1052 +1,1052 @@ -{ - "languageName": "Deutsch (Schweiz)", - "Settings": "Einstellungen", - "Dashboard": "Überblick", - "New Update": "Update verfügbar", - "Language": "Sprache", - "Appearance": "Erscheinungsbild", - "Theme": "Erscheinungsbild", - "General": "Allgemein", - "Version": "Version", - "Check Update On GitHub": "Auf GitHub nach Updates suchen", - "List": "Liste", - "Home": "Home", - "Add": "Hinzufügen", - "Add New Monitor": "Neuen Monitor hinzufügen", - "Quick Stats": "Übersicht", - "Up": "Aktiv", - "Down": "Inaktiv", - "Pending": "Ausstehend", - "Unknown": "Unbekannt", - "Cannot connect to the socket server": "Es kann keine Verbindung zum Socket-Server hergestellt werden", - "Reconnecting...": "Die Verbindung wird wiederhergestellt...", - "Pause": "Pausieren", - "pauseDashboardHome": "Pausiert", - "Name": "Name", - "Status": "Status", - "DateTime": "Datum / Uhrzeit", - "Message": "Nachricht", - "No important events": "Keine wichtigen Ereignisse", - "Resume": "Fortsetzen", - "Edit": "Bearbeiten", - "Delete": "Löschen", - "Current": "Aktuell", - "Uptime": "Verfügbarkeit", - "Cert Exp.": "Zertifikatsablauf", - "day": "Tag | Tage", - "-day": "-Tage", - "hour": "Stunde", - "-hour": "-Stunden", - "checkEverySecond": "Überprüfe alle {0} Sekunden", - "Response": "Antwortzeit", - "Ping": "Ping", - "Monitor Type": "Monitor-Typ", - "Keyword": "Suchwort", - "Friendly Name": "Anzeigename", - "URL": "URL", - "Hostname": "Hostname", - "Port": "Port", - "Heartbeat Interval": "Prüfintervall", - "Retries": "Wiederholungen", - "retriesDescription": "Maximale Wiederholungen, bevor der Dienst als inaktiv markiert und eine Benachrichtigung gesendet wird", - "Advanced": "Erweitert", - "ignoreTLSError": "Ignoriere TLS-/SSL-Fehler von Webseiten", - "Upside Down Mode": "Umgekehrter Modus", - "upsideDownModeDescription": "Im umgekehrten Modus wird der Dienst als inaktiv angezeigt, wenn er erreichbar ist.", - "Max. Redirects": "Max. Weiterleitungen", - "maxRedirectDescription": "Maximale Anzahl von Weiterleitungen, denen gefolgt werden soll. Auf 0 setzen, um Weiterleitungen zu deaktivieren.", - "Accepted Status Codes": "Erlaubte HTTP-Statuscodes", - "acceptedStatusCodesDescription": "Statuscodes auswählen, die als erfolgreiche Verbindung gelten sollen.", - "Save": "Speichern", - "Notifications": "Benachrichtigungen", - "Not available, please setup.": "Nicht verfügbar, bitte einrichten.", - "Setup Notification": "Benachrichtigung einrichten", - "Light": "Hell", - "Dark": "Dunkel", - "Auto": "Auto", - "Theme - Heartbeat Bar": "Erscheinungsbild - Zeitleiste", - "Normal": "Normal", - "Bottom": "Unten", - "None": "Keine", - "Timezone": "Zeitzone", - "Search Engine Visibility": "Sichtbarkeit für Suchmaschinen", - "Allow indexing": "Indizierung zulassen", - "Discourage search engines from indexing site": "Suchmaschinen darum bitten, die Seite nicht zu indizieren", - "Change Password": "Passwort ändern", - "Current Password": "Aktuelles Passwort", - "New Password": "Neues Passwort", - "Repeat New Password": "Neues Passwort wiederholen", - "passwordNotMatchMsg": "Passwörter stimmen nicht überein.", - "Update Password": "Passwort aktualisieren", - "Disable Auth": "Authentifizierung deaktivieren", - "Enable Auth": "Authentifizierung aktivieren", - "disableauth.message1": "Bist du sicher das du die {disableAuth} möchtest?", - "disable authentication": "Authentifizierung deaktivieren", - "disableauth.message2": "Dies ist für Szenarien gedacht, {intendThirdPartyAuth} vor Uptime Kuma geschaltet hat, wie z.B. Cloudflare Access, Authelia oder andere Authentifizierungsmechanismen.", - "where you intend to implement third-party authentication": "in denen man eine externe Authentifizierung", - "Please use this option carefully!": "Bitte mit Vorsicht nutzen!", - "Logout": "Ausloggen", - "notificationDescription": "Benachrichtigungen müssen einem Monitor zugewiesen werden, damit diese funktionieren.", - "Leave": "Verlassen", - "I understand, please disable": "Ich verstehe, bitte deaktivieren", - "Confirm": "Bestätigen", - "Yes": "Ja", - "No": "Nein", - "Username": "Benutzername", - "Password": "Passwort", - "Remember me": "Angemeldet bleiben", - "Login": "Einloggen", - "No Monitors, please": "Keine Monitore, bitte", - "add one": "hinzufügen", - "Notification Type": "Benachrichtigungsdienst", - "Email": "E-Mail", - "Test": "Test", - "Certificate Info": "Zertifikatsinformation", - "keywordDescription": "Ein Suchwort in der HTML- oder JSON-Ausgabe finden. Bitte beachte: es wird zwischen Gross-/Kleinschreibung unterschieden.", - "deleteMonitorMsg": "Bist du sicher, dass du den Monitor löschen möchtest?", - "deleteNotificationMsg": "Möchtest du diese Benachrichtigung wirklich für alle Monitore löschen?", - "resolverserverDescription": "Cloudflare ist als der Standardserver festgelegt. Dieser kann jederzeit geändert werden.", - "Resolver Server": "Auflösungsserver", - "rrtypeDescription": "Wähle den RR Typ aus, welchen du überwachen möchtest", - "Last Result": "Letztes Ergebnis", - "pauseMonitorMsg": "Bist du sicher, dass du den Monitor pausieren möchtest?", - "clearEventsMsg": "Bist du sicher, dass du alle Ereignisse für diesen Monitor löschen möchtest?", - "clearHeartbeatsMsg": "Bist du sicher, dass du alle Prüfintervalle für diesen Monitor löschen möchtest?", - "Clear Data": "Lösche Daten", - "Events": "Ereignisse", - "Heartbeats": "Prüfintervalle", - "confirmClearStatisticsMsg": "Bist du dir sicher, dass du ALLE Statistiken löschen möchtest?", - "Create your admin account": "Erstelle dein Admin-Konto", - "Repeat Password": "Passwort erneut eingeben", - "Resource Record Type": "Ressourcen Record Typ", - "Export": "Export", - "Import": "Import", - "respTime": "Antw.-Zeit (ms)", - "notAvailableShort": "N/A", - "Default enabled": "Standardmässig aktiviert", - "Apply on all existing monitors": "Auf alle existierenden Monitore anwenden", - "enableDefaultNotificationDescription": "Für jeden neuen Monitor wird diese Benachrichtigung standardmässig aktiviert. Die Benachrichtigung kann weiterhin für jeden Monitor separat deaktiviert werden.", - "Create": "Erstellen", - "Auto Get": "Auto Get", - "backupDescription": "Es können alle Monitore und Benachrichtigungen in einer JSON-Datei gesichert werden.", - "backupDescription2": "PS: Verlaufs- und Ereignisdaten sind nicht enthalten.", - "backupDescription3": "Sensible Daten wie Benachrichtigungs-Token sind in der Exportdatei enthalten, bitte bewahre sie sorgfältig auf.", - "alertNoFile": "Bitte wähle eine Datei zum Importieren aus.", - "alertWrongFileType": "Bitte wähle eine JSON-Datei aus.", - "Clear all statistics": "Lösche alle Statistiken", - "importHandleDescription": "Wähle 'Vorhandene überspringen' aus, wenn jeder Monitor oder jede Benachrichtigung mit demselben Namen übersprungen werden soll. 'Überschreiben' löscht jeden vorhandenen Monitor sowie Benachrichtigungen.", - "Skip existing": "Vorhandene überspringen", - "Overwrite": "Überschreiben", - "Options": "Optionen", - "confirmImportMsg": "Möchtest du das Backup wirklich importieren? Bitte stelle sicher, dass die richtige Import-Option ausgewählt ist.", - "Keep both": "Beide behalten", - "twoFAVerifyLabel": "Bitte trage deinen Token ein, um zu verifizieren, dass 2FA funktioniert:", - "Verify Token": "Token verifizieren", - "Setup 2FA": "2FA einrichten", - "Enable 2FA": "2FA aktivieren", - "Disable 2FA": "2FA deaktivieren", - "2FA Settings": "2FA-Einstellungen", - "confirmEnableTwoFAMsg": "Bist du sicher, dass du 2FA aktivieren möchtest?", - "confirmDisableTwoFAMsg": "Bist du sicher, dass du 2FA deaktivieren möchtest?", - "tokenValidSettingsMsg": "Token gültig! Du kannst jetzt die 2FA-Einstellungen speichern.", - "Two Factor Authentication": "Zwei-Faktor-Authentifizierung", - "Active": "Aktiv", - "Inactive": "Inaktiv", - "Token": "Token", - "Show URI": "URI anzeigen", - "Tags": "Tags", - "Add New below or Select...": "Einen bestehenden Tag auswählen oder neuen hinzufügen…", - "Tag with this name already exist.": "Ein Tag mit diesem Namen existiert bereits.", - "Tag with this value already exist.": "Ein Tag mit diesem Wert existiert bereits.", - "color": "Farbe", - "value (optional)": "Wert (optional)", - "Gray": "Grau", - "Red": "Rot", - "Orange": "Orange", - "Green": "Grün", - "Blue": "Blau", - "Indigo": "Indigo", - "Purple": "Lila", - "Pink": "Pink", - "Search...": "Suchen…", - "Heartbeat Retry Interval": "Überprüfungsintervall", - "Resend Notification if Down X times consecutively": "Benachrichtigung erneut senden, wenn Inaktiv X mal hintereinander", - "retryCheckEverySecond": "Alle {0} Sekunden neu versuchen", - "resendEveryXTimes": "Erneut versenden alle {0} mal", - "resendDisabled": "Erneut versenden deaktiviert", - "Import Backup": "Backup importieren", - "Export Backup": "Backup exportieren", - "Avg. Ping": "Ping ø", - "Avg. Response": "Antwortzeit ø", - "Entry Page": "Einstiegsseite", - "statusPageNothing": "Noch ist hier nichts. Bitte füge eine Gruppe oder einen Monitor hinzu.", - "No Services": "Keine Dienste", - "All Systems Operational": "Alle Systeme betriebsbereit", - "Partially Degraded Service": "Teilweise beeinträchtigter Dienst", - "Degraded Service": "Eingeschränkter Dienst", - "Add Group": "Gruppe hinzufügen", - "Add a monitor": "Monitor hinzufügen", - "Edit Status Page": "Bearbeite Status-Seite", - "Go to Dashboard": "Gehe zum Dashboard", - "Status Page": "Status-Seite", - "Status Pages": "Status-Seiten", - "telegram": "Telegram", - "webhook": "Webhook", - "smtp": "E-Mail (SMTP)", - "discord": "Discord", - "teams": "Microsoft Teams", - "signal": "Signal", - "gotify": "Gotify", - "slack": "Slack", - "rocket.chat": "Rocket.chat", - "pushover": "Pushover", - "pushy": "Pushy", - "octopush": "Octopush", - "promosms": "PromoSMS", - "lunasea": "LunaSea", - "apprise": "Apprise (Unterstützung für 50+ Benachrichtigungsdienste)", - "GoogleChat": "Google Chat (nur Google Workspace)", - "pushbullet": "Pushbullet", - "line": "Line Messenger", - "mattermost": "Mattermost", - "Primary Base URL": "Primär URL", - "Push URL": "Push URL", - "needPushEvery": "Du solltest diese URL alle {0} Sekunden aufrufen.", - "pushOptionalParams": "Optionale Parameter: {0}", - "defaultNotificationName": "Mein {notification} Alarm ({number})", - "here": "hier", - "Required": "Erforderlich", - "Bot Token": "Bot Token", - "wayToGetTelegramToken": "Hier kannst du einen Token erhalten {0}.", - "Chat ID": "Chat ID", - "supportTelegramChatID": "Unterstützt Direkt Chat / Gruppe / Kanal Chat-ID's", - "wayToGetTelegramChatID": "Du kannst die Chat-ID erhalten, indem du eine Nachricht an den Bot sendest und zu dieser URL gehst, um die chat_id zu sehen", - "YOUR BOT TOKEN HERE": "HIER DEIN BOT TOKEN", - "chatIDNotFound": "Chat-ID wurde nicht gefunden: bitte sende zuerst eine Nachricht an diesen Bot", - "Post URL": "Post URL", - "Content Type": "Content Type", - "webhookJsonDesc": "{0} ist gut für alle modernen HTTP-Server, wie z.B. Express.js, geeignet", - "webhookFormDataDesc": "{multipart} ist gut für PHP. Das JSON muss mit {decodeFunction} verarbeitet werden", - "secureOptionNone": "Keine / STARTTLS (25, 587)", - "secureOptionTLS": "TLS (465)", - "Ignore TLS Error": "TLS-Fehler ignorieren", - "From Email": "Absender E-Mail", - "emailCustomSubject": "Benutzerdefinierter Betreff", - "To Email": "Empfänger E-Mail", - "smtpCC": "CC", - "smtpBCC": "BCC", - "Discord Webhook URL": "Discord Webhook URL", - "wayToGetDiscordURL": "Du kannst diese erhalten, indem du zu den Servereinstellungen gehst -> Notifikationen -> Webhooks -> Neuer Webhook", - "Bot Display Name": "Bot-Anzeigename", - "Prefix Custom Message": "Benutzerdefinierter Nachrichten Präfix", - "Hello @everyone is...": "Hallo {'@'}everyone ist…", - "Webhook URL": "Webhook URL", - "wayToGetTeamsURL": "Wie eine Webhook-URL erstellt werden kann, erfährst du {0}.", - "Number": "Nummer", - "Recipients": "Empfänger", - "needSignalAPI": "Es wird ein Signal Client mit REST-API benötigt.", - "wayToCheckSignalURL": "Du kannst diese URL aufrufen, um zu sehen, wie du eine einrichtest:", - "signalImportant": "WICHTIG: Gruppen und Nummern können in Empfängern nicht gemischt werden!", - "Application Token": "Anwendungstoken", - "Server URL": "Server URL", - "Priority": "Priorität", - "Icon Emoji": "Icon Emoji", - "Channel Name": "Kanalname", - "Uptime Kuma URL": "Uptime Kuma URL", - "aboutWebhooks": "Weitere Informationen zu Webhooks auf: {0}", - "aboutChannelName": "Gebe den Kanalnamen ein in {0} Feld Kanalname, falls du den Webhook-Kanal umgehen möchtest. Ex: #other-channel", - "aboutKumaURL": "Wenn das Feld für die Uptime Kuma URL leer gelassen wird, wird standardmässig die GitHub Projekt Seite verwendet.", - "emojiCheatSheet": "Emoji Cheat Sheet: {0}", - "User Key": "Benutzerschlüssel", - "Device": "Gerät", - "Message Title": "Nachrichtentitel", - "Notification Sound": "Benachrichtigungston", - "More info on:": "Mehr Infos auf: {0}", - "pushoverDesc1": "Notfallpriorität (2) hat standardmässig 30 Sekunden Auszeit zwischen den Versuchen und läuft nach 1 Stunde ab.", - "pushoverDesc2": "Fülle das Geräte Feld aus, wenn du Benachrichtigungen an verschiedene Geräte senden möchtest.", - "pushoverMessageTtl": "Message TTL (Sekunden)", - "SMS Type": "SMS Typ", - "octopushTypePremium": "Premium (Schnell - zur Benachrichtigung empfohlen)", - "octopushTypeLowCost": "Kostengünstig (Langsam - manchmal vom Betreiber gesperrt)", - "checkPrice": "Prüfe {0} Preise:", - "octopushLegacyHint": "Verwendest du die Legacy-Version von Octopush (2011-2020) oder die neue Version?", - "Check octopush prices": "Vergleiche die Oktopush Preise {0}.", - "octopushPhoneNumber": "Telefonnummer (Internationales Format, z.B : +49612345678) ", - "octopushSMSSender": "Name des SMS-Absenders : 3-11 alphanumerische Zeichen und Leerzeichen (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea Geräte ID", - "Apprise URL": "Apprise URL", - "Example:": "Beispiel: {0}", - "Read more:": "Weiterlesen: {0}", - "Status:": "Status: {0}", - "Read more": "Weiterlesen", - "appriseInstalled": "Apprise ist installiert.", - "appriseNotInstalled": "Apprise ist nicht installiert. {0}", - "Access Token": "Access Token", - "Channel access token": "Kanalzugriffstoken", - "Line Developers Console": "Line Developers Console", - "lineDevConsoleTo": "Line Developers Console - {0}", - "Basic Settings": "Grundeinstellungen", - "User ID": "User ID", - "Messaging API": "Messaging API", - "wayToGetLineChannelToken": "Rufe zuerst {0} auf, erstelle dann einen Provider und Channel (Messaging API). Als nächstes kannst du den Channel access token und die User ID aus den oben genannten Menüpunkten abrufen.", - "Icon URL": "Icon URL", - "aboutIconURL": "Du kannst einen Link zu einem Bild in 'Icon URL' übergeben um das Standardprofilbild zu überschreiben. Wird nicht verwendet, wenn ein Icon Emoji gesetzt ist.", - "aboutMattermostChannelName": "Du kannst den Standardkanal, auf dem der Webhook gesendet wird überschreiben, indem der Kanalnamen in das Feld 'Channel Name' eingeben wird. Dies muss in den Mattermost Webhook-Einstellungen aktiviert werden. Ex: #other-channel", - "matrix": "Matrix", - "promosmsTypeEco": "SMS ECO - billig, aber langsam und oft überladen. Auf polnische Empfänger beschränkt.", - "promosmsTypeFlash": "SMS FLASH - Die Nachricht wird automatisch auf dem Empfängergerät angezeigt. Auf polnische Empfänger beschränkt.", - "promosmsTypeFull": "SMS FULL - Premium Stufe von SMS, es kann der Absendernamen verwendet werden (Der Name musst zuerst registriert werden). Zuverlässig für Warnungen.", - "promosmsTypeSpeed": "SMS SPEED - Höchste Priorität im System. Sehr schnell und zuverlässig, aber teuer (Ungefähr das doppelte von SMS FULL).", - "promosmsPhoneNumber": "Telefonnummer (für polnische Empfänger können die Vorwahlen übersprungen werden)", - "promosmsSMSSender": "Name des SMS-Absenders : vorregistrierter Name oder einer der Standardwerte: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu Webhook URL", - "matrixHomeserverURL": "Heimserver URL (mit http(s):// und optionalen Ports)", - "Internal Room Id": "Interne Raum-ID", - "matrixDesc1": "Die interne Raum-ID findest du im erweiterten Bereich der Raumeinstellungen im Matrix-Client. Es sollte aussehen wie z.B. !QMdRCpUIfLwsfjxye6:home.server.", - "matrixDesc2": "Es wird dringend empfohlen einen neuen Benutzer anzulegen und nicht den Zugriffstoken deines eigenen Matrix-Benutzers zu verwenden. Anderenfalls ermöglicht es vollen Zugriff auf dein Konto und alle Räume, denen du beigetreten bist. Erstelle stattdessen einen neuen Benutzer und lade ihn nur in den Raum ein, in dem du die Benachrichtigung erhalten möchtest. Du kannst den Zugriffstoken erhalten, indem du Folgendes ausführst {0}", - "Method": "Methode", - "Body": "Body", - "Headers": "Headers", - "PushUrl": "Push URL", - "HeadersInvalidFormat": "Der Header ist kein gültiges JSON: ", - "BodyInvalidFormat": "Der Body ist kein gültiges JSON: ", - "Monitor History": "Monitor Verlauf", - "clearDataOlderThan": "Bewahre die Aufzeichnungsdaten für {0} Tage auf.", - "PasswordsDoNotMatch": "Passwörter stimmen nicht überein.", - "records": "Einträge", - "One record": "Ein Eintrag", - "steamApiKeyDescription": "Um einen Steam Game Server zu überwachen, wird ein Steam Web-API-Schlüssel benötigt. Dieser kann hier registriert werden: ", - "Current User": "Aktueller Benutzer", - "recent": "Letzte", - "Done": "Fertig", - "Info": "Info", - "Security": "Sicherheit", - "Steam API Key": "Steam API Key", - "Shrink Database": "Datenbank verkleinern", - "Pick a RR-Type...": "Wähle ein RR-Typ aus…", - "Pick Accepted Status Codes...": "Wähle akzeptierte Statuscodes aus…", - "Default": "Standard", - "HTTP Options": "HTTP Optionen", - "Create Incident": "Vorfall erstellen", - "Title": "Titel", - "Content": "Inhalt", - "Style": "Stil", - "info": "info", - "warning": "warnung", - "danger": "gefahr", - "primary": "primär", - "light": "hell", - "dark": "dunkel", - "Post": "Veröffentlichen", - "Please input title and content": "Bitte Titel und Inhalt eingeben", - "Created": "Erstellt", - "Last Updated": "Zuletzt aktualisiert", - "Unpin": "Loslösen", - "Switch to Light Theme": "Zu hellem Thema wechseln", - "Switch to Dark Theme": "Zum dunklen Thema wechseln", - "Show Tags": "Tags anzeigen", - "Hide Tags": "Tags ausblenden", - "Description": "Beschreibung", - "No monitors available.": "Keine Monitore verfügbar.", - "Add one": "Hinzufügen", - "No Monitors": "Keine Monitore", - "Untitled Group": "Gruppe ohne Titel", - "Services": "Dienste", - "Discard": "Verwerfen", - "Cancel": "Abbrechen", - "Powered by": "Erstellt mit", - "serwersms": "SerwerSMS.pl", - "serwersmsAPIUser": "API Benutzername (inkl. webapi_ prefix)", - "serwersmsAPIPassword": "API Passwort", - "serwersmsPhoneNumber": "Telefonnummer", - "serwersmsSenderName": "Name des SMS-Absenders (über Kundenportal registriert)", - "stackfield": "Stackfield", - "clicksendsms": "ClickSend SMS", - "apiCredentials": "API Zugangsdaten", - "smtpDkimSettings": "DKIM Einstellungen", - "smtpDkimDesc": "Details zur Konfiguration sind in der Nodemailer DKIM {0} zu finden.", - "documentation": "Dokumentation", - "smtpDkimDomain": "Domain Name", - "smtpDkimKeySelector": "Schlüssel Auswahl", - "smtpDkimPrivateKey": "Privater Schlüssel", - "smtpDkimHashAlgo": "Hash-Algorithmus (Optional)", - "smtpDkimheaderFieldNames": "Zu validierende Header-Schlüssel (optional)", - "smtpDkimskipFields": "Zu ignorierende Header Schlüssel (optional)", - "PushByTechulus": "Push by Techulus", - "gorush": "Gorush", - "alerta": "Alerta", - "alertaApiEndpoint": "API Endpunkt", - "alertaEnvironment": "Umgebung", - "alertaApiKey": "API Schlüssel", - "alertaAlertState": "Alarmstatus", - "alertaRecoverState": "Wiederherstellungsstatus", - "deleteStatusPageMsg": "Bist du sicher, dass du diese Status-Seite löschen willst?", - "Proxies": "Proxys", - "default": "Standard", - "enabled": "Aktiviert", - "setAsDefault": "Als Standard setzen", - "deleteProxyMsg": "Bist du sicher, dass du diesen Proxy für alle Monitore löschen willst?", - "proxyDescription": "Proxys müssen einem Monitor zugewiesen werden, um zu funktionieren.", - "enableProxyDescription": "Dieser Proxy wird keinen Effekt auf Monitor-Anfragen haben, bis er aktiviert ist. Du kannst ihn temporär von allen Monitoren nach Aktivierungsstatus deaktivieren.", - "setAsDefaultProxyDescription": "Dieser Proxy wird standardmässig für alle neuen Monitore aktiviert sein. Du kannst den Proxy immer noch für jeden Monitor einzeln deaktivieren.", - "Certificate Chain": "Zertifikatskette", - "Valid": "Gültig", - "Invalid": "Ungültig", - "AccessKeyId": "AccessKey ID", - "SecretAccessKey": "Geheimer Zugriffsschlüssel", - "PhoneNumbers": "Telefonnummern", - "TemplateCode": "Vorlagencode", - "SignName": "Signaturname", - "Sms template must contain parameters: ": "SMS Vorlage muss folgende Parameter enthalten: ", - "Bark Endpoint": "Bark Endpunkt", - "WebHookUrl": "Webhook URL", - "SecretKey": "Geheimer Schlüssel", - "For safety, must use secret key": "Zur Sicherheit muss ein geheimer Schlüssel verwendet werden", - "Device Token": "Gerätetoken", - "Platform": "Platform", - "Huawei": "Huawei", - "High": "Hoch", - "Retry": "Wiederholungen", - "Topic": "Thema", - "WeCom Bot Key": "WeCom Bot Schlüssel", - "Setup Proxy": "Proxy einrichten", - "Proxy Protocol": "Proxy Protokoll", - "Proxy Server": "Proxy-Server", - "Proxy server has authentication": "Proxy-Server hat Authentifizierung", - "User": "Benutzer", - "Installed": "Installiert", - "Not installed": "Nicht installiert", - "Running": "Läuft", - "Not running": "Gestoppt", - "Remove Token": "Token entfernen", - "Start": "Start", - "Stop": "Stop", - "Uptime Kuma": "Uptime Kuma", - "Add New Status Page": "Neue Status-Seite hinzufügen", - "Slug": "Slug", - "Accept characters:": "Akzeptierte Zeichen:", - "startOrEndWithOnly": "Nur mit {0} anfangen und enden", - "No consecutive dashes": "Keine aufeinanderfolgenden Bindestriche", - "Next": "Weiter", - "The slug is already taken. Please choose another slug.": "Der Slug ist bereits in Verwendung. Bitte wähle einen anderen.", - "No Proxy": "Kein Proxy", - "Authentication": "Authentifizierung", - "HTTP Basic Auth": "HTTP Basisauthentifizierung", - "New Status Page": "Neue Status-Seite", - "Page Not Found": "Seite nicht gefunden", - "Reverse Proxy": "Reverse Proxy", - "Backup": "Sicherung", - "About": "Über", - "wayToGetCloudflaredURL": "(Lade Cloudflare von {0} herunter)", - "cloudflareWebsite": "Cloudflare Website", - "Message:": "Nachricht:", - "Don't know how to get the token? Please read the guide:": "Du weisst nicht, wie man den Token bekommt? Lies die Anleitung dazu:", - "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Die aktuelle Verbindung kann unterbrochen werden, wenn du aktuell über Cloudflare Tunnel verbunden bist. Bist du sicher, dass du es stoppen willst? Gib zur Bestätigung dein aktuelles Passwort ein.", - "Other Software": "Andere Software", - "For example: nginx, Apache and Traefik.": "Zum Beispiel: nginx, Apache und Traefik.", - "Please read": "Bitte lesen", - "Subject:": "Betreff:", - "Valid To:": "Gültig bis:", - "Days Remaining:": "Tage verbleibend:", - "Issuer:": "Aussteller:", - "Fingerprint:": "Fingerabdruck:", - "No status pages": "Keine Status-Seiten", - "Domain Name Expiry Notification": "Benachrichtigung bei Ablauf des Domainnamens", - "Customize": "Anpassen", - "Custom Footer": "Eigener Footer", - "Custom CSS": "Eigenes CSS", - "Footer Text": "Fusszeile", - "Show Powered By": "Zeige 'Powered By'", - "Date Created": "Erstellt am", - "Domain Names": "Domainnamen", - "signedInDisp": "Angemeldet als {0}", - "signedInDispDisabled": "Authentifizierung deaktiviert.", - "dnsPortDescription": "DNS Server Port. Standard ist 53. Der Port kann jederzeit geändert werden.", - "topic": "Thema", - "topicExplanation": "MQTT Thema für den monitor", - "successMessage": "Erfolgsnachricht", - "successMessageExplanation": "MQTT Nachricht, die als Erfolg angesehen wird", - "error": "Fehler", - "critical": "kritisch", - "wayToGetPagerDutyKey": "Dieser kann unter Service -> Service Directory -> (Select a service) -> Integrations -> Add integration gefunden werden. Hier muss nach \"Events API V2\" gesucht werden. Mehr informationen {0}", - "Integration Key": "Schlüssel der Integration", - "Integration URL": "URL der Integration", - "Auto resolve or acknowledged": "Automatisch lösen oder bestätigen", - "do nothing": "nichts tun", - "auto acknowledged": "automatisch bestätigen", - "auto resolve": "automatisch lösen", - "Bark Group": "Bark Gruppe", - "Bark Sound": "Bark Klang", - "HTTP Headers": "HTTP Kopfzeilen", - "Trust Proxy": "Vertrauenswürdiger Proxy", - "Proxy": "Proxy", - "HomeAssistant": "Home Assistant", - "onebotHttpAddress": "OneBot HTTP Adresse", - "onebotMessageType": "OneBot Nachrichtentyp", - "onebotGroupMessage": "Gruppe", - "onebotPrivateMessage": "Privat", - "onebotUserOrGroupId": "Gruppe/Nutzer ID", - "onebotSafetyTips": "Zur Sicherheit ein access token setzen", - "PushDeer Key": "PushDeer Schlüssel", - "RadiusSecret": "Radius Geheimnis", - "RadiusSecretDescription": "Geteiltes Geheimnis zwischen Client und Server", - "RadiusCalledStationId": "ID der angesprochenen Station", - "RadiusCalledStationIdDescription": "Identifikation des angesprochenen Geräts", - "RadiusCallingStationId": "ID der ansprechenden Station", - "RadiusCallingStationIdDescription": "Identifikation des ansprechenden Geräts", - "Certificate Expiry Notification": "Benachrichtigung ablaufendes Zertifikat", - "API Username": "API Nutzername", - "API Key": "API Schlüssel", - "Recipient Number": "Empfängernummer", - "From Name/Number": "Von Name/Nummer", - "Leave blank to use a shared sender number.": "Leer lassen um eine geteilte Absendernummer zu nutzen.", - "Octopush API Version": "Octopush API Version", - "Legacy Octopush-DM": "Legacy Octopush-DM", - "endpoint": "Endpunkt", - "octopushAPIKey": "\"API Schlüssel\" der HTTP API Zugangsdaten im control panel", - "octopushLogin": "\"Login\" der HTTP API Zugangsdaten im control panel", - "promosmsLogin": "API Login Name", - "promosmsPassword": "API Password", - "pushoversounds pushover": "Pushover (Standard)", - "pushoversounds bike": "Fahrrad", - "pushoversounds bugle": "Signalhorn", - "pushoversounds cashregister": "Kasse", - "pushoversounds classical": "Klassisch", - "pushoversounds cosmic": "Kosmisch", - "pushoversounds falling": "Abfallend", - "pushoversounds gamelan": "Gamelan", - "pushoversounds incoming": "Eingang", - "pushoversounds intermission": "Pause", - "pushoversounds magic": "Magisch", - "pushoversounds mechanical": "Mechanisch", - "pushoversounds pianobar": "Piano Bar", - "pushoversounds siren": "Sirene", - "pushoversounds spacealarm": "Space Alarm", - "pushoversounds tugboat": "Schlepper Horn", - "pushoversounds alien": "Ausserirdisch (lang)", - "pushoversounds climb": "Ansteigende (lang)", - "pushoversounds persistent": "Hartnäckig (lang)", - "pushoversounds echo": "Pushover Echo (lang)", - "pushoversounds updown": "Auf und Ab (lang)", - "pushoversounds vibrate": "Nur vibrieren", - "pushoversounds none": "Nichts (Stille)", - "pushyAPIKey": "Geheimer API Schlüssel", - "pushyToken": "Gerätetoken", - "Show update if available": "Verfügbare Updates anzeigen", - "Also check beta release": "Auch nach beta Versionen schauen", - "Using a Reverse Proxy?": "Wird ein Reverse Proxy genutzt?", - "Check how to config it for WebSocket": "Prüfen, wie er für die Nutzung mit WebSocket konfiguriert wird", - "Steam Game Server": "Steam Spielserver", - "Most likely causes:": "Wahrscheinliche Ursachen:", - "The resource is no longer available.": "Die Quelle ist nicht mehr verfügbar.", - "There might be a typing error in the address.": "Es gibt einen Tippfehler in der Adresse.", - "What you can try:": "Was du versuchen kannst:", - "Retype the address.": "Schreibe die Adresse erneut.", - "Go back to the previous page.": "Gehe zur vorigen Seite.", - "Coming Soon": "Kommt bald", - "wayToGetClickSendSMSToken": "Du kannst einen API Nutzernamen und Schlüssel unter {0} erhalten.", - "Connection String": "Verbindungstext", - "Query": "Abfrage", - "settingsCertificateExpiry": "TLS Zertifikatsablauf", - "certificationExpiryDescription": "HTTPS Monitore senden eine Benachrichtigung, wenn das Zertifikat abläuft in:", - "Setup Docker Host": "Docker Host einrichten", - "Connection Type": "Verbindungstyp", - "Docker Daemon": "Docker Daemon", - "deleteDockerHostMsg": "Bist du sicher diesen docker host für alle Monitore zu löschen?", - "socket": "Socket", - "tcp": "TCP / HTTP", - "Docker Container": "Docker Container", - "Container Name / ID": "Container Name / ID", - "Docker Host": "Docker Host", - "Docker Hosts": "Docker Hosts", - "ntfy Topic": "ntfy Thema", - "Domain": "Domain", - "Workstation": "Workstation", - "disableCloudflaredNoAuthMsg": "Du bist im nicht-authentifizieren Modus, ein Passwort wird nicht benötigt.", - "trustProxyDescription": "Vertraue 'X-Forwarded-*' headern. Wenn man die richtige Client IP erhalten möchte und Uptime Kuma hinter einem Proxy wie Nginx oder Apache läuft, sollte dies aktiviert werden.", - "wayToGetLineNotifyToken": "Du kannst hier ein Token erhalten: {0}", - "Examples": "Beispiele", - "Home Assistant URL": "Home Assistant URL", - "Long-Lived Access Token": "Lange gültiges Access Token", - "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Lange gültige Access Token können durch klicken auf den Profilnamen (unten links) und dann einen Klick auf Create Token am Ende erstellt werden. ", - "Notification Service": "Benachrichtigungsdienst", - "default: notify all devices": "standard: Alle Geräte benachrichtigen", - "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Eine Liste der Benachrichtigungsdienste kann im Home Assistant unter \"Developer Tools > Services\" gefunden werden, wnen man nach \"notification\" sucht um den Geräte-/Telefonnamen zu finden.", - "Automations can optionally be triggered in Home Assistant:": "Automatisierungen können optional im Home Assistant ausgelöst werden:", - "Trigger type:": "Auslöser:", - "Event type:": "Ereignistyp:", - "Event data:": "Ereignis daten:", - "Then choose an action, for example switch the scene to where an RGB light is red.": "Dann eine Aktion wählen, zum Beispiel eine Scene wählen in der ein RGB Licht rot ist.", - "Frontend Version": "Frontend Version", - "Frontend Version do not match backend version!": "Die Frontend Version stimmt nicht mit der backend version überein!", - "Maintenance": "Wartung", - "statusMaintenance": "Wartung", - "Schedule maintenance": "Geplante Wartung", - "Affected Monitors": "Betroffene Monitore", - "Pick Affected Monitors...": "Wähle betroffene Monitore…", - "Start of maintenance": "Beginn der Wartung", - "All Status Pages": "Alle Status Seiten", - "Select status pages...": "Wähle Status Seiten…", - "recurringIntervalMessage": "einmal pro Tag ausgeführt | Wird alle {0} Tage ausgführt", - "affectedMonitorsDescription": "Wähle alle Monitore die von der Wartung betroffen sind", - "affectedStatusPages": "Zeige diese Nachricht auf ausgewählten Status Seiten", - "atLeastOneMonitor": "Wähle mindestens einen Monitor", - "deleteMaintenanceMsg": "Möchtest du diese Wartung löschen?", - "Base URL": "Basis URL", - "goAlertInfo": "GoAlert ist eine Open-Source Applikation für Rufbereitschaftsplanung, automatische Eskalation und Benachrichtigung (z.B. SMS oder Telefonanrufe). Engagiere automatisch die richtige Person, auf die richtige Art und Weise und zum richtigen Zeitpunkt! {0}", - "goAlertIntegrationKeyInfo": "Bekommt einen generischen API Schlüssel in folgenden Format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\". Normalerweise entspricht dies dem Wert des Token aus der URL.", - "goAlert": "GoAlert", - "backupOutdatedWarning": "Veraltet: Da viele Funktionen hinzugefügt wurden und die Backupfunktion nicht mehr gepflegt wird, kann keine vollständige Sicherung erstellt oder wiederhergestellt werden.", - "backupRecommend": "Bitte Backup das Volume oder den Ordner (./ data /) selbst.", - "Optional": "Optional", - "squadcast": "Squadcast", - "SendKey": "SendKey", - "SMSManager API Docs": "SMSManager API Dokumente ", - "Gateway Type": "Gateway Typ", - "SMSManager": "SMSManager", - "You can divide numbers with": "Du kannst Zahlen teilen mit", - "or": "oder", - "recurringInterval": "Intervall", - "Recurring": "Wiederkehrend", - "strategyManual": "Aktiv/Inaktiv Manuell", - "warningTimezone": "Es wird die Zeitzone des Servers genutzt", - "weekdayShortMon": "Mo", - "weekdayShortTue": "Di", - "weekdayShortWed": "Mi", - "weekdayShortThu": "Do", - "weekdayShortFri": "Fr", - "weekdayShortSat": "Sa", - "weekdayShortSun": "So", - "dayOfWeek": "Tag der Woche", - "dayOfMonth": "Tag im Monat", - "lastDay": "Letzter Tag", - "lastDay1": "Letzter Tag im Monat", - "lastDay2": "Vorletzer Tag im Monat", - "lastDay3": "3. letzter Tag im Monat", - "lastDay4": "4. letzter Tag im Monat", - "No Maintenance": "Keine Wartung", - "pauseMaintenanceMsg": "Möchtest du wirklich pausieren?", - "maintenanceStatus-under-maintenance": "In Wartung", - "maintenanceStatus-inactive": "Inaktiv", - "maintenanceStatus-scheduled": "Geplant", - "maintenanceStatus-ended": "Ende", - "maintenanceStatus-unknown": "Unbekannt", - "Display Timezone": "Zeitzone anzeigen", - "Server Timezone": "Server Zeitzone", - "telegramMessageThreadID": "(Optional) Nachrichten Thread ID", - "telegramMessageThreadIDDescription": "Optionale eindeutige Kennung für den Ziel-Thread (Thema) des Forums; nur für Forum-Supergroups", - "Enable": "Aktivieren", - "telegramProtectContent": "Schütze gegen Weiterleiten/Speichern der Nachricht", - "telegramProtectContentDescription": "Die Bot-Nachrichten in Telegram sind gegen Weiterleitung und Speichern geschützt.", - "Disable": "Deaktivieren", - "plugin": "Plugin | Plugins", - "installing": "Installiere", - "uninstall": "Deinstallieren", - "uninstalling": "Deinstalliere", - "confirmUninstallPlugin": "Möchtest du dieses Plugin wirklich deinstallieren?", - "notificationRegional": "Regional", - "Single Maintenance Window": "Einmaliges Wartungsfenster", - "dnsCacheDescription": "In einigen IPv6-Umgebungen funktioniert es möglicherweise nicht. Deaktiviere es, wenn Probleme auftreten.", - "Maintenance Time Window of a Day": "Wartungszeitfenster eines Tages", - "Effective Date Range": "Gültigkeitsbereich (Optional)", - "Schedule Maintenance": "Wartung planen", - "Date and Time": "Datum und Uhrzeit", - "DateTime Range": "Datums- und Zeitbereich", - "telegramSendSilently": "Stumm senden", - "telegramSendSilentlyDescription": "Sende die Nachricht stumm. Nutzer bekommen eine Benachrichtigung ohne Ton.", - "markdownSupported": "Markdown-Syntax unterstützt", - "webhookAdditionalHeadersTitle": "Zusätzliche Header", - "webhookAdditionalHeadersDesc": "Legt zusätzliche Kopfzeilen fest, die mit dem Webhook gesendet werden. Jede Kopfzeile sollte als JSON Schlüssel/Wert definiert werden.", - "Packet Size": "Paketgrösse", - "IconUrl": "Symbol URL", - "Enable DNS Cache": "(Veraltet) DNS-Cache für HTTP(s)-Monitore aktivieren", - "Help": "Hilfe", - "Game": "Spiel", - "General Monitor Type": "Allgemeiner Monitortyp", - "Passive Monitor Type": "Passiver Monitortyp", - "Specific Monitor Type": "Spezifischer Monitortyp", - "Monitor": "Überwachung | Monitore", - "Custom": "Benutzerdefiniert", - "statusPageMaintenanceEndDate": "Ende", - "loadingError": "Die Daten konnten nicht abgerufen werden, bitte später noch einmal versuchen.", - "install": "Installieren", - "Body Encoding": "Body Encoding", - "Custom Monitor Type": "Benutzerdefinierter Monitortyp", - "Expiry": "Ablauf", - "Expiry date": "Ablaufdatum", - "Don't expire": "Nicht ablaufen", - "Add Another": "Hinzufügen", - "Key Added": "Schlüssel hinzugefügt", - "apiKeyAddedMsg": "API Schlüssel wurde hinzugefügt. Bitte notiere den Schlüssel, da er nicht erneut angezeigt wird.", - "Add API Key": "API Schlüssel hinzufügen", - "No API Keys": "Kein API Schlüssel", - "apiKey-active": "Aktiv", - "apiKey-expired": "Abgelaufen", - "apiKey-inactive": "Inaktiv", - "Expires": "Läuft ab", - "disableAPIKeyMsg": "Bist du sicher, dass du diesen API Schlüssel deaktivieren willst?", - "deleteAPIKeyMsg": "Bist du sicher, dass du diesen API Schlüssel löschen willst?", - "Generate": "Generieren", - "infiniteRetention": "Für unendliche Speicherung auf 0 setzen.", - "dataRetentionTimeError": "Aufbewahrungsfrist muss grösser oder gleich 0 sein", - "Clone Monitor": "Monitor klonen", - "Clone": "Klonen", - "cloneOf": "Klon von {0}", - "wayToGetZohoCliqURL": "Wie eine Webhook URL erstellt werden kann, erfährst du {0}.", - "enableGRPCTls": "Senden von gRPC Anforderungen mit TLS Verbindung zulassen", - "grpcMethodDescription": "Der Name der Methode wird in das \"camelCase\" Format konvertiert (z.B. sayHello, check, etc.)", - "wayToGetKookGuildID": "Schalte den „Entwicklermodus“ in den Kook-Einstellungen ein und klicke mit der rechten Maustaste auf die Gilde, um die ID zu erhalten", - "Guild ID": "Gilde ID", - "Lowcost": "Kostengünstig", - "high": "hoch", - "Google Analytics ID": "Google Analytics ID", - "Enable TLS": "TLS aktivieren", - "Free Mobile API Key": "Kostenloser Mobile API Schlüssel", - "Proto Service Name": "Proto Dienst Name", - "Proto Method": "Proto Methode", - "Proto Content": "Proto Inhalt", - "Economy": "Economy", - "pagertreeIntegrationUrl": "Integrations-URL", - "pagertreeUrgency": "Dringlichkeit", - "pagertreeSilent": "Stumm", - "pagertreeLow": "Niedrig", - "pagertreeMedium": "Mittel", - "pagertreeHigh": "Hoch", - "pagertreeCritical": "Kritisch", - "pagertreeResolve": "Automatisch auflösen", - "pagertreeDoNothing": "Nichts tun", - "wayToGetPagerTreeIntegrationURL": "Nachdem du die Uptime Kuma Integration in PagerTree erstellt hast, kopiere den Endpunkt. Siehe details {0}", - "Server Address": "Serveradresse", - "Learn More": "Erfahre mehr", - "Edit Tag": "Tag editieren", - "promosmsAllowLongSMS": "Lange SMS erlauben", - "smseagleRecipientType": "Empfängertyp", - "smseagleToken": "API Zugriffstoken", - "smseagleTo": "Telefonnummer(n)", - "smseagleUrl": "Ihre SMSEagle Geräte URL", - "smseagleEncoding": "Als Unicode senden", - "smseaglePriority": "Nachrichtenpriorität (0-9, Standard = 0)", - "smseagleContact": "Telefonbuch Kontaktname(n)", - "confirmDeleteTagMsg": "Möchtest du dieses Tag wirklich löschen? Monitore, die mit diesem Tag verknüpft sind, werden nicht gelöscht.", - "wayToGetKookBotToken": "Erstelle eine Anwendung und erhalte den Bot-Token unter {0}", - "Strategy": "Strategie", - "Free Mobile User Identifier": "Kostenlose mobile Benutzerkennung", - "smseagleGroup": "Telefonbuch Gruppenname(n)", - "smseagleRecipient": "Empfänger (mehrere müssen durch Komma getrennt werden)", - "API Keys": "API Schlüssel", - "Continue": "Weiter", - "Add New Tag": "Neuen Tag hinzufügen", - "lunaseaTarget": "Ziel", - "lunaseaDeviceID": "Geräte-ID", - "lunaseaUserID": "Benutzer-ID", - "ntfyAuthenticationMethod": "Authentifizierungsmethode", - "ntfyUsernameAndPassword": "Benutzername und Passwort", - "twilioAccountSID": "Account SID", - "twilioFromNumber": "Absender", - "twilioToNumber": "Empfänger", - "twilioAuthToken": "Auth Token / API Key Secret", - "statusPageRefreshIn": "Aktualisierung in: {0}", - "sameAsServerTimezone": "Gleiche Zeitzone wie Server", - "startDateTime": "Start Datum/Uhrzeit", - "endDateTime": "Ende Datum/Uhrzeit", - "cronExpression": "Cron-Ausdruck", - "cronSchedule": "Zeitplan: ", - "invalidCronExpression": "Ungültiger Cron-Ausdruck: {0}", - "Open Badge Generator": "Abzeichengenerator öffnen", - "Badge Generator": "{0}'s Abzeichen Generator", - "Badge Type": "Abzeichen Typ", - "Badge Duration": "Badge Dauer", - "Badge Label": "Abzeichen Label", - "Badge Prefix": "Abzeichen Wert Präfix", - "Badge Suffix": "Abzeichen Wert Suffix", - "Badge Label Color": "Abzeichen Label Farbe", - "Badge Color": "Abzeichen Farbe", - "Badge Label Prefix": "Abzeichen Label Präfix", - "Badge Up Color": "Abzeichen Up Farbe", - "Badge Maintenance Color": "Abzeichen Wartung Farbe", - "Badge Warn Color": "Abzeichen Warnung Farbe", - "Badge Warn Days": "Abzeichen Warnung Tage", - "Badge Style": "Abzeichen Stil", - "Badge URL": "Abzeichen URL", - "Badge Pending Color": "Abzeichen Pending Farbe", - "Badge Down Days": "Abzeichen Down Tage", - "Monitor Setting": "{0}'s Monitor Einstellung", - "Show Clickable Link": "Klickbaren Link anzeigen", - "Badge Label Suffix": "Abzeichen Label Suffix", - "Badge value (For Testing only.)": "Abzeichen Wert (nur für Tests)", - "Show Clickable Link Description": "Wenn diese Option aktiviert ist, kann jeder, der Zugriff auf diese Statusseite hat, auf die Monitor URL zugreifen.", - "Badge Down Color": "Abzeichen Down Farbe", - "Edit Maintenance": "Wartung bearbeiten", - "Group": "Gruppe", - "Monitor Group": "Monitor Gruppe", - "noGroupMonitorMsg": "Nicht verfügbar. Erstelle zunächst einen Gruppenmonitor.", - "Close": "Schliessen", - "chromeExecutableAutoDetect": "Automatische Erkennung", - "chromeExecutableDescription": "Für Docker-Benutzer, die Chromium noch nicht installiert haben, kann es ein paar Minuten dauern, bis es installiert ist und das Testergebnis angezeigt wird. Es benötigt 1 GB Speicherplatz.", - "chromeExecutable": "Chrome/Chromium Ausführbare Datei", - "Invert Keyword": "Schlüsselwort invertieren", - "webhookCustomBodyDesc": "Definiere einen benutzerdefinierten HTTP-Body für die Anfrage. Die Template-Variablen {msg}, {heartbeat} und {monitor} werden akzeptiert.", - "webhookBodyPresetOption": "Voreinstellung - {0}", - "webhookBodyCustomOption": "Benutzerdefinierter Body", - "invertKeywordDescription": "Achte darauf, dass das Schlüsselwort eher fehlt als vorhanden ist.", - "Request Body": "Anforderungstext", - "twilioApiKey": "API-Schlüssel (optional)", - "aboutNotifyChannel": "Notify Kanal löst eine Desktop- oder Mobilbenachrichtigung für alle Mitglieder des Kanals aus, unabhängig davon, ob deine Verfügbarkeit auf aktiv oder abwesend eingestellt ist.", - "Notify Channel": "Notify Kanal", - "Enter the list of brokers": "Gib die Liste der Broker ein", - "Kafka Topic Name": "Kafka Topic Name", - "Kafka Producer Message": "Kafka Producer Nachricht", - "Enable Kafka SSL": "Kafka SSL aktivieren", - "Enable Kafka Producer Auto Topic Creation": "Kafka Producer Auto Topic Creation aktivieren", - "Kafka SASL Options": "Kafka SASL Optionen", - "Mechanism": "Mechanismus", - "Pick a SASL Mechanism...": "Wähle ein SASL Mechanismus…", - "AccessKey Id": "AccessKey Id", - "Secret AccessKey": "Secret AccessKey", - "Session Token": "Sitzungs-Token", - "Kafka Brokers": "Kafka Brokers", - "Press Enter to add broker": "Drücke Enter um den Broker hinzuzufügen", - "Authorization Identity": "Authorization Identity", - "Expected Value": "Erwarteter Wert", - "Json Query": "Json-Abfrage", - "filterActive": "Aktiv", - "filterActivePaused": "Pausiert", - "Badge Duration (in hours)": "Abzeichen Dauer (in Stunden)", - "Badge Preview": "Abzeichen Vorschau", - "tailscalePingWarning": "Um den Tailscale Ping Monitor nutzen zu können, musst du Uptime Kuma ohne Docker installieren und den Tailscale Client auf dem Server installieren.", - "Server URL should not contain the nfty topic": "Die Server-URL sollte das nfty-Thema nicht enthalten", - "pushDeerServerDescription": "Leer lassen um den offiziellen Server zu verwenden", - "FlashDuty Severity": "Schweregrad", - "nostrSender": "Privater Schlüssel des Absenders (nsec)", - "nostrRecipientsHelp": "npub-Format, eine pro Zeile", - "noOrBadCertificate": "Kein/schlechtes Zertifikat", - "wayToGetFlashDutyKey": "Gehe zu Channel -> (Wähle einen Channel) -> Integrationen -> Neue Integration hinzufügen', füge ein 'Uptime Kuma' hinzu, um eine Push-Adresse zu erhalten, und kopiere den Integrationsschlüssel in die Adresse. Für weitere Informationen besuche", - "nostrRelays": "Nostr Relays", - "nostrRelaysHelp": "Eine Relay-URL pro Zeile", - "nostrRecipients": "Öffentliche Schlüssel des Empfängers (npub)", - "gamedigGuessPort": "Gamedig: Vermuteter Port", - "Request Timeout": "Zeitüberschreitung der Anfrage", - "styleElapsedTimeShowNoLine": "Anzeigen (keine Zeile)", - "styleElapsedTimeShowWithLine": "Anzeigen (mit Zeile)", - "Select": "Auswählen", - "selectedMonitorCount": "Ausgewählt: {0}", - "PushDeer Server": "PushDeer Server", - "showCertificateExpiry": "Ablauf des Zertifikats anzeigen", - "gamedigGuessPortDescription": "Der vom Valve Server Query Protocol verwendete Port kann sich vom Port des Clients unterscheiden. Versuche dies, wenn der Monitor keine Verbindung zum Server herstellen kann.", - "timeoutAfter": "Zeitüberschreitung nach {0} Sekunden", - "styleElapsedTime": "Verstrichene Zeit unter der Prüfintervallleiste", - "Check/Uncheck": "Aktivieren/Deaktivieren", - "enableNSCD": "Aktiviere NSCD (Name Service Cache Daemon) zur Zwischenspeicherung aller DNS-Anfragen", - "setupDatabaseChooseDatabase": "Welche Datenbank möchtest du verwenden?", - "setupDatabaseEmbeddedMariaDB": "Du brauchst nichts einzustellen. Dieses Docker-Image hat automatisch eine MariaDB für dich eingerichtet und konfiguriert. Uptime Kuma wird sich mit dieser Datenbank über einen Unix-Socket verbinden.", - "dbName": "Datenbank Name", - "setupDatabaseMariaDB": "Mit externer MariaDB-Datenbank verbinden. Du musst die Verbindungsinformationen für die Datenbank festlegen.", - "setupDatabaseSQLite": "Eine einfache Datenbankdatei, empfohlen für kleinere Bereitstellungen. Vor v2.0.0 verwendete Uptime Kuma SQLite als Standarddatenbank.", - "Saved.": "Gespeichert.", - "monitorToastMessagesLabel": "Toast-Benachrichtigungen überwachen", - "toastSuccessTimeout": "Zeitüberschreitung für Erfolgsbenachrichtigungen", - "toastErrorTimeout": "Zeitüberschreitung für Fehlerbenachrichtigungen", - "monitorToastMessagesDescription": "Toast-Benachrichtigungen für Monitore verschwinden nach einer bestimmten Zeit in Sekunden. Auf -1 setzen, um die Zeitüberschreitung zu deaktivieren. Der Wert 0 deaktiviert die Toast-Benachrichtigungen.", - "Bark API Version": "Bark API Version", - "pushViewCode": "Wie verwendet man den Push-Monitor? (Code anzeigen)", - "pushOthers": "Sonstige", - "programmingLanguages": "Programmiersprachen", - "authInvalidToken": "Ungültiges Token.", - "authIncorrectCreds": "Falscher Benutzername oder falsches Passwort.", - "2faAlreadyEnabled": "2FA ist bereits aktiviert.", - "2faEnabled": "2FA ist aktiviert.", - "2faDisabled": "2FA ist deaktiviert.", - "successResumed": "Erfolgreich wiederaufgenommen.", - "successPaused": "Erfolgreich pausiert.", - "successDeleted": "Erfolgreich gelöscht.", - "successEdited": "Erfolgreich bearbeitet.", - "successBackupRestored": "Sicherung erfolgreich wiederhergestellt.", - "successEnabled": "Erfolgreich aktiviert.", - "tagNotFound": "Tag nicht gefunden.", - "foundChromiumVersion": "Gefunden Chromium/Chrome. Version: {0}", - "authUserInactiveOrDeleted": "Der Benutzer ist inaktiv oder gelöscht.", - "successAdded": "Erfolgreich hinzugefügt.", - "successAuthChangePassword": "Das Passwort wurde erfolgreich aktualisiert.", - "successDisabled": "Erfolgreich deaktiviert.", - "Reset Token": "Token zurücksetzen", - "leave blank for default subject": "leer lassen für Standard-Betreff", - "emailCustomBody": "Benutzerdefinierter Body", - "emailCustomisableContent": "Anpassbarer Inhalt", - "liquidIntroduction": "Die Templatierbarkeit wird durch die Liquid Templating Language erreicht. Hinweise zur Verwendung findest du auf {0}. Dies sind die verfügbaren Variablen:", - "templateLimitedToUpDownCertNotifications": "nur verfügbar für UP/DOWN/Zertifikat-Ablaufbenachrichtigungen", - "smtpLiquidIntroduction": "Die folgenden beiden Felder können mit der Liquid Templating Language angepasst werden. Eine Anleitung zur Verwendung findest du in der {0}. Dies sind die verfügbaren Variablen:", - "templateMsg": "Nachricht der Benachrichtigung", - "templateHeartbeatJSON": "Objekt, das den Heartbeat beschreibt", - "templateMonitorJSON": "Objekt zur Beschreibung des Monitors", - "templateLimitedToUpDownNotifications": "nur für UP/DOWN-Benachrichtigungen verfügbar", - "leave blank for default body": "leer lassen für Standard Body", - "emailTemplateServiceName": "Dienst Name", - "emailTemplateHostnameOrURL": "Hostname oder URL", - "emailTemplateStatus": "Status", - "emailTemplateMonitorJSON": "Objekt zur Beschreibung des Monitors", - "emailTemplateHeartbeatJSON": "Objekt, das den Heartbeat beschreibt", - "emailTemplateMsg": "Nachricht der Benachrichtigung", - "emailTemplateLimitedToUpDownNotification": "nur bei UP/DOWN-Heartbeats verfügbar, sonst null", - "GrafanaOncallUrl": "Grafana Oncall URL", - "noDockerHostMsg": "Nicht verfügbar. Richte zunächst einen Docker-Host ein.", - "DockerHostRequired": "Bitte Docker-Host für diesen Monitor festlegen.", - "Browser Screenshot": "Browser Screenshot", - "Add a new expiry notification day": "Neuen Tag für Auslaufbenachrichtigung hinzufügen", - "Remote Browsers": "Remote Browsers", - "Remote Browser": "Remote Browser", - "Add a Remote Browser": "Remote Browser hinzufügen", - "Remote Browser not found!": "Remote Browser nicht gefunden!", - "remoteBrowsersDescription": "Remote Browser sind eine Alternative zur lokalen Ausführung von Chromium. Einrichtung mit einem Dienst wie browserless.io oder verbinde mit deinem Eigenen.", - "self-hosted container": "Selbstverwalteter Container", - "remoteBrowserToggle": "Standardmässig läuft Chromium innerhalb des Uptime-Kuma Containers. Du kannst einen Remote-Browser verwenden, indem du diesen Schalter umlegst.", - "useRemoteBrowser": "Verwende einen Remote Browser", - "deleteRemoteBrowserMessage": "Bist du sicher, dass du diesen Remote Browser für alle Monitore löschen möchtest?", - "Remove the expiry notification": "Tag für Auslaufbenachrichtigung löschen", - "setup a new monitor group": "Neue Monitorgruppe einrichten", - "openModalTo": "Modal öffnen nach {0}", - "Add a domain": "Domain hinzufügen", - "Remove domain": "Domain '{0}' entfernen", - "successKeyword": "Erfolgsschlüsselwort", - "successKeywordExplanation": "MQTT-Schlüsselwort, das als Erfolg gewertet wird", - "ntfyPriorityHelptextAllExceptDown": "Alle Ereignisse werden mit dieser Priorität gesendet, ausser {0}-Ereignisse, die eine Priorität von {1} haben", - "settingUpDatabaseMSG": "Die Datenbank wird eingerichtet. Dies kann einen Moment dauern, bitte habe Geduld.", - "Search monitored sites": "Überwachte Seiten durchsuchen", - "statusPageSpecialSlugDesc": "Spezieller Slug {0}: diese Seite wird angezeigt, wenn kein Slug angegeben wird", - "ntfyPriorityHelptextAllEvents": "Alle Ereignisse werden mit der höchsten Priorität gesendet", - "What is a Remote Browser?": "Was ist ein Remote-Browser?", - "Channel access token (Long-lived)": "Channel-Token (langlebig)", - "Your User ID": "Deine Benutzer-ID", - "wayToGetHeiiOnCallDetails": "Wie man die Trigger-ID und API-Schlüssel erhält, wird in der {Dokumentation} erklärt", - "documentationOf": "{0} Dokumentation", - "From Phone Number / Transmission Path Originating Address (TPOA)": "Von Telefonnummer / Transmission Path Originating Address (TPOA)", - "To Phone Number": "Zur Telefonnummer", - "gtxMessagingToHint": "Internationales Format, mit vorangestelltem \"+\" ({e164}, {e212} oder {e214})", - "gtxMessagingApiKeyHint": "Du findest deinen API-Schlüssel unter: Meine Routing-Konten > Kontoinformationen anzeigen > API-Anmeldeinformationen > REST-API (v2.x)", - "gtxMessagingFromHint": "Auf Mobiltelefonen sieht der Empfänger die TPOA als Absender der Nachricht. Erlaubt sind bis zu 11 alphanumerische Zeichen, eine Kurzwahlnummer, die lokale Langwahlnummer oder internationale Nummern ({e164}, {e212} oder {e214})", - "Telephone number": "Telefonnummer", - "Originator": "Absender", - "cellsyntOriginator": "Sichtbar auf dem Mobiltelefon des Empfängers als Absender der Nachricht. Zulässige Werte und Funktion hängen vom Parametertyp ab.", - "Destination": "Ziel", - "Allow Long SMS": "Lange SMS zulassen", - "cellsyntSplitLongMessages": "Teile lange Nachrichten in bis zu 6 Teile. 153 x 6 = 918 Zeichen.", - "max 15 digits": "max. 15 Ziffern", - "max 11 alphanumeric characters": "max. 11 alphanumerische Zeichen", - "Originator type": "Typ des Absenders", - "Alphanumeric (recommended)": "Alphanumerisch (empfohlen)", - "cellsyntOriginatortypeAlphanumeric": "Alphanumerische Zeichenfolge (max. 11 alphanumerische Zeichen). Die Empfänger können nicht auf die Nachricht antworten.", - "cellsyntOriginatortypeNumeric": "Numerischer Wert (max. 15 Stellen) mit Telefonnummer im internationalen Format ohne Vorwahl 00 (Beispiel UK-Nummer 07920 110 000 sollte auf 447920110000 gesetzt werden). Empfänger können auf die Nachricht antworten.", - "cellsyntDestination": "Telefonnummer des Empfängers im internationalen Format mit führender 00, gefolgt von der Landesvorwahl, z. B. 00447920110000 für die britische Nummer 07920 110 000 (insgesamt maximal 17 Ziffern). Maximal 25000 kommagetrennte Empfänger pro HTTP-Anfrage.", - "callMeBotGet": "Hier kannst du einen Endpunkt für {0}, {1} und {2} generieren. Denke daran, dass der Durchsatz möglicherweise begrenzt ist. Die Durchsatzbegrenzung ist: {3}", - "whapiRecipient": "Telefonnummer / Kontakt-ID / Gruppen-ID", - "API URL": "API URL", - "wayToWriteWhapiRecipient": "Die Rufnummer mit der internationalen Vorwahl, aber ohne das Pluszeichen am Anfang ({0}), die Kontakt-ID ({1}) oder die Gruppen-ID ({2}).", - "wayToGetWhapiUrlAndToken": "Du kannst die API-URL und das Token erhalten, indem du in deinen gewünschten Channel von {0} gehst", - "locally configured mail transfer agent": "Lokal konfigurierter Mail-Transfer-Agent", - "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Gib entweder den Hostnamen des Servers ein, mit dem eine Verbindung hergestellt werden soll, oder {localhost}, wenn ein {local_mta} verwendet werden soll.", - "Mentioning": "Erwähnung", - "Don't mention people": "Keine Personen erwähnen", - "Mention group": "Erwähne {group}", - "senderSevenIO": "Absendernummer oder Name", - "receiverSevenIO": "Empfangende Nummer", - "receiverInfoSevenIO": "Wenn sich die empfangende Nummer nicht in Deutschland befindet, muss der Nummer die Landesvorwahl vorangestellt werden (z.B. für die Landesvorwahl 1 aus den USA muss 117612121212 anstelle von 017612121212 verwendet werden)", - "apiKeySevenIO": "SevenIO API Schlüssel", - "wayToGetSevenIOApiKey": "Besuche das Dashboard unter app.seven.io > Entwickler > API Schlüssel > grüne Hinzufügen Schaltfläche", - "Host URL": "Host URL", - "whatHappensAtForumPost": "Erstelle einen neuen Forumsbeitrag. Dadurch werden KEINE Nachrichten in einem bestehenden Beitrag veröffentlicht. Um einen Beitrag in einem bestehenden Beitrag zu erstellen, verwende \"{option}\"", - "Command": "Befehl", - "Bitrix24 Webhook URL": "Bitrix24 Webhook URL", - "wayToGetBitrix24Webhook": "Du kannst einen Webhook erstellen, indem du die Schritte unter {0} befolgst", - "bitrix24SupportUserID": "Gib deine User-ID in Bitrix24 ein. Du kannst die ID über den Link erfahren, indem du auf das Profil des Users gehst.", - "mongodbCommandDescription": "Führe einen MongoDB Befehl gegen die Datenbank aus. Informationen zu den verfügbaren Befehlen findest du in der {documentation}", - "Refresh Interval": "Aktualisierungsintervall", - "Refresh Interval Description": "Die Statusseite wird alle {0} Sekunden neu geladen", - "Select message type": "Nachrichtentyp auswählen", - "Send to channel": "An Kanal senden", - "Create new forum post": "Neuen Forumsbeitrag erstellen", - "postToExistingThread": "An bestehendes Thema/Forumbeitrag senden", - "forumPostName": "Name des Forumsbeitrags", - "ignoreTLSErrorGeneral": "TLS/SSL-Fehler für Verbindung ignorieren", - "threadForumPostID": "Themen-/Forumbeitrags-ID", - "e.g. {discordThreadID}": "z.B. {discordThreadID}", - "wayToGetDiscordThreadId": "Das Abrufen einer Thread-/Forumspost-ID ist ähnlich wie das Abrufen einer Channel-ID. Lese mehr darüber, wie man IDs abruft {0}", - "smspartnerApiurl": "Den API-Schlüssel findest du im Dashboard unter {0}", - "smspartnerPhoneNumber": "Telefonnummer(n)", - "smspartnerSenderName": "SMS Absender Name", - "smspartnerSenderNameInfo": "Muss zwischen 3..=11 regulären Zeichen sein", - "smspartnerPhoneNumberHelptext": "Die Nummer muss das internationale Format {0}, {1} haben. Mehrere Nummern müssen durch {2} getrennt werden", - "threemaRecipient": "Empfänger", - "threemaRecipientType": "Empfänger Typ", - "threemaRecipientTypeIdentity": "Threema-ID", - "threemaRecipientTypePhone": "Telefonnummer", - "threemaRecipientTypePhoneFormat": "E.164, ohne führendes +", - "threemaRecipientTypeEmail": "E-Mail Adresse", - "threemaSenderIdentity": "Gateway-ID", - "threemaApiAuthenticationSecret": "Gateway-ID Schlüssel", - "wayToGetThreemaGateway": "Du kannst dich für Threema Gateway {0} registrieren.", - "threemaRecipientTypeIdentityFormat": "8 Zeichen", - "threemaSenderIdentityFormat": "8 Zeichen, beginnt normalerweise mit *", - "threemaBasicModeInfo": "Hinweis: Diese Integration verwendet Threema Gateway im Basismodus (serverbasierte Verschlüsselung). Weitere Details siehe {0}.", - "apiKeysDisabledMsg": "API-Schlüssel sind deaktiviert, da die Authentifizierung deaktiviert ist.", - "Json Query Expression": "Json Query Ausdrck", - "Cannot connect to the socket server.": "Es kann keine Verbindung zum Socket-Server hergestellt werden.", - "not ends with": "endet nicht mit", - "signl4Docs": "Weitere Informationen zur Konfiguration von SIGNL4 und zum Abrufen der SIGNL4-Webhook-URL siehe {0}.", - "now": "jetzt", - "time ago": "vor {0}", - "-year": "-Jahr", - "and": "und", - "jsonQueryDescription": "Parsen und Extrahieren spezifischer Daten aus der JSON-Antwort des Servers mittels JSON-Abfrage oder Verwendung von \"$\" für die rohe Antwort, wenn kein JSON erwartet wird. Das Ergebnis wird dann mit dem erwarteten Wert in Form von Strings verglichen. Siehe {0} für die Dokumentation und verwende {1}, um mit Abfragen zu experimentieren.", - "cacheBusterParamDescription": "Zufällig generierter Parameter um den Cache zu umgehen.", - "cacheBusterParam": "Den Parameter {0} hinzufügen", - "Community String": "Gemeinschaftliche Zeichenkette", - "snmpCommunityStringHelptext": "Diese Zeichenfolge dient als Passwort zur Authentifizierung und Kontrolle des Zugriffs auf SNMP-fähigen Geräten. Pass sie an die Konfiguration des SNMP-Geräts an.", - "OID (Object Identifier)": "OID (Objekt-Identifikator)", - "Condition": "Bedingung", - "SNMP Version": "SNMP Version", - "Please enter a valid OID.": "Gib eine gültige OID ein.", - "Host Onesender": "Host Onesender", - "Token Onesender": "Token Onesender", - "Recipient Type": "Empfänger Typ", - "Private Number": "Private Nummer", - "Group ID": "Gruppen ID", - "wayToGetOnesenderUrlandToken": "Du kannst die URL und den Token auf der Onesender-Website erhalten. Weitere Infos {0}", - "Add Remote Browser": "Remote-Browser hinzufügen", - "New Group": "Neue Gruppe", - "Group Name": "Gruppenname", - "OAuth2: Client Credentials": "OAuth2: Client-Anmeldeinformationen", - "snmpOIDHelptext": "Gib die OID für den zu überwachenden Sensor oder Status ein. Verwende Netzwerkverwaltungstools wie MIB-Browser oder SNMP-Software, wenn du bezüglich OID unsicher bist.", - "privateOnesenderDesc": "Stell sicher, dass die Telefonnummer gültig ist. Um Nachrichten an private Telefonnummer zu senden, z. B.: 628123456789", - "groupOnesenderDesc": "Stell sicher, dass die GroupID gültig ist. Um Nachricht an die Gruppe zu senden, z.B.: 628123456789-342345", - "Authentication Method": "Authentifizierungsmethode", - "Authorization Header": "Autorisierungs-Header", - "Form Data Body": "Formular Data Body", - "OAuth Token URL": "OAuth Token URL", - "Client ID": "Client ID", - "Client Secret": "Client Secret", - "OAuth Scope": "OAuth Scope", - "Optional: Space separated list of scopes": "Optional: Durch Leerzeichen getrennte Liste der Scopes", - "Go back to home page.": "Zurück zur Startseite.", - "No tags found.": "Keine Tags gefunden.", - "Lost connection to the socket server.": "Verbindung zum Socket-Server verloren.", - "SIGNL4": "SIGNL4", - "SIGNL4 Webhook URL": "SIGNL4 Webhook URL", - "Conditions": "Bedingungen", - "conditionAdd": "Bedingung hinzufügen", - "conditionDelete": "Bedingung löschen", - "conditionAddGroup": "Gruppe hinzufügen", - "conditionDeleteGroup": "Gruppe löschen", - "conditionValuePlaceholder": "Wert", - "equals": "ist gleich", - "not equals": "ist nicht gleich", - "contains": "enthält", - "not contains": "enthält nicht", - "starts with": "beginnt mit", - "not starts with": "beginnt nicht mit", - "ends with": "endet mit", - "less than": "weniger als", - "greater than": "mehr als", - "less than or equal to": "kleiner als oder gleich", - "greater than or equal to": "grösser als oder gleich", - "record": "Eintrag", - "shrinkDatabaseDescriptionSqlite": "Datenbank {vacuum} für SQLite auslösen. {auto_vacuum} ist bereits aktiviert, aber dies defragmentiert die Datenbank nicht und packt auch nicht einzelne Datenbankseiten neu, wie es der Befehl {vacuum} tut." -} +{ + "languageName": "Deutsch (Schweiz)", + "Settings": "Einstellungen", + "Dashboard": "Überblick", + "New Update": "Update verfügbar", + "Language": "Sprache", + "Appearance": "Erscheinungsbild", + "Theme": "Erscheinungsbild", + "General": "Allgemein", + "Version": "Version", + "Check Update On GitHub": "Auf GitHub nach Updates suchen", + "List": "Liste", + "Home": "Home", + "Add": "Hinzufügen", + "Add New Monitor": "Neuen Monitor hinzufügen", + "Quick Stats": "Übersicht", + "Up": "Aktiv", + "Down": "Inaktiv", + "Pending": "Ausstehend", + "Unknown": "Unbekannt", + "Cannot connect to the socket server": "Es kann keine Verbindung zum Socket-Server hergestellt werden", + "Reconnecting...": "Die Verbindung wird wiederhergestellt...", + "Pause": "Pausieren", + "pauseDashboardHome": "Pausiert", + "Name": "Name", + "Status": "Status", + "DateTime": "Datum / Uhrzeit", + "Message": "Nachricht", + "No important events": "Keine wichtigen Ereignisse", + "Resume": "Fortsetzen", + "Edit": "Bearbeiten", + "Delete": "Löschen", + "Current": "Aktuell", + "Uptime": "Verfügbarkeit", + "Cert Exp.": "Zertifikatsablauf", + "day": "Tag | Tage", + "-day": "-Tage", + "hour": "Stunde", + "-hour": "-Stunden", + "checkEverySecond": "Überprüfe alle {0} Sekunden", + "Response": "Antwortzeit", + "Ping": "Ping", + "Monitor Type": "Monitor-Typ", + "Keyword": "Suchwort", + "Friendly Name": "Anzeigename", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Port", + "Heartbeat Interval": "Prüfintervall", + "Retries": "Wiederholungen", + "retriesDescription": "Maximale Wiederholungen, bevor der Dienst als inaktiv markiert und eine Benachrichtigung gesendet wird", + "Advanced": "Erweitert", + "ignoreTLSError": "Ignoriere TLS-/SSL-Fehler von Webseiten", + "Upside Down Mode": "Umgekehrter Modus", + "upsideDownModeDescription": "Im umgekehrten Modus wird der Dienst als inaktiv angezeigt, wenn er erreichbar ist.", + "Max. Redirects": "Max. Weiterleitungen", + "maxRedirectDescription": "Maximale Anzahl von Weiterleitungen, denen gefolgt werden soll. Auf 0 setzen, um Weiterleitungen zu deaktivieren.", + "Accepted Status Codes": "Erlaubte HTTP-Statuscodes", + "acceptedStatusCodesDescription": "Statuscodes auswählen, die als erfolgreiche Verbindung gelten sollen.", + "Save": "Speichern", + "Notifications": "Benachrichtigungen", + "Not available, please setup.": "Nicht verfügbar, bitte einrichten.", + "Setup Notification": "Benachrichtigung einrichten", + "Light": "Hell", + "Dark": "Dunkel", + "Auto": "Auto", + "Theme - Heartbeat Bar": "Erscheinungsbild - Zeitleiste", + "Normal": "Normal", + "Bottom": "Unten", + "None": "Keine", + "Timezone": "Zeitzone", + "Search Engine Visibility": "Sichtbarkeit für Suchmaschinen", + "Allow indexing": "Indizierung zulassen", + "Discourage search engines from indexing site": "Suchmaschinen darum bitten, die Seite nicht zu indizieren", + "Change Password": "Passwort ändern", + "Current Password": "Aktuelles Passwort", + "New Password": "Neues Passwort", + "Repeat New Password": "Neues Passwort wiederholen", + "passwordNotMatchMsg": "Passwörter stimmen nicht überein.", + "Update Password": "Passwort aktualisieren", + "Disable Auth": "Authentifizierung deaktivieren", + "Enable Auth": "Authentifizierung aktivieren", + "disableauth.message1": "Bist du sicher das du die {disableAuth} möchtest?", + "disable authentication": "Authentifizierung deaktivieren", + "disableauth.message2": "Dies ist für Szenarien gedacht, {intendThirdPartyAuth} vor Uptime Kuma geschaltet hat, wie z.B. Cloudflare Access, Authelia oder andere Authentifizierungsmechanismen.", + "where you intend to implement third-party authentication": "in denen man eine externe Authentifizierung", + "Please use this option carefully!": "Bitte mit Vorsicht nutzen!", + "Logout": "Ausloggen", + "notificationDescription": "Benachrichtigungen müssen einem Monitor zugewiesen werden, damit diese funktionieren.", + "Leave": "Verlassen", + "I understand, please disable": "Ich verstehe, bitte deaktivieren", + "Confirm": "Bestätigen", + "Yes": "Ja", + "No": "Nein", + "Username": "Benutzername", + "Password": "Passwort", + "Remember me": "Angemeldet bleiben", + "Login": "Einloggen", + "No Monitors, please": "Keine Monitore, bitte", + "add one": "hinzufügen", + "Notification Type": "Benachrichtigungsdienst", + "Email": "E-Mail", + "Test": "Test", + "Certificate Info": "Zertifikatsinformation", + "keywordDescription": "Ein Suchwort in der HTML- oder JSON-Ausgabe finden. Bitte beachte: es wird zwischen Gross-/Kleinschreibung unterschieden.", + "deleteMonitorMsg": "Bist du sicher, dass du den Monitor löschen möchtest?", + "deleteNotificationMsg": "Möchtest du diese Benachrichtigung wirklich für alle Monitore löschen?", + "resolverserverDescription": "Cloudflare ist als der Standardserver festgelegt. Dieser kann jederzeit geändert werden.", + "Resolver Server": "Auflösungsserver", + "rrtypeDescription": "Wähle den RR Typ aus, welchen du überwachen möchtest", + "Last Result": "Letztes Ergebnis", + "pauseMonitorMsg": "Bist du sicher, dass du den Monitor pausieren möchtest?", + "clearEventsMsg": "Bist du sicher, dass du alle Ereignisse für diesen Monitor löschen möchtest?", + "clearHeartbeatsMsg": "Bist du sicher, dass du alle Prüfintervalle für diesen Monitor löschen möchtest?", + "Clear Data": "Lösche Daten", + "Events": "Ereignisse", + "Heartbeats": "Prüfintervalle", + "confirmClearStatisticsMsg": "Bist du dir sicher, dass du ALLE Statistiken löschen möchtest?", + "Create your admin account": "Erstelle dein Admin-Konto", + "Repeat Password": "Passwort erneut eingeben", + "Resource Record Type": "Ressourcen Record Typ", + "Export": "Export", + "Import": "Import", + "respTime": "Antw.-Zeit (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Standardmässig aktiviert", + "Apply on all existing monitors": "Auf alle existierenden Monitore anwenden", + "enableDefaultNotificationDescription": "Für jeden neuen Monitor wird diese Benachrichtigung standardmässig aktiviert. Die Benachrichtigung kann weiterhin für jeden Monitor separat deaktiviert werden.", + "Create": "Erstellen", + "Auto Get": "Auto Get", + "backupDescription": "Es können alle Monitore und Benachrichtigungen in einer JSON-Datei gesichert werden.", + "backupDescription2": "PS: Verlaufs- und Ereignisdaten sind nicht enthalten.", + "backupDescription3": "Sensible Daten wie Benachrichtigungs-Token sind in der Exportdatei enthalten, bitte bewahre sie sorgfältig auf.", + "alertNoFile": "Bitte wähle eine Datei zum Importieren aus.", + "alertWrongFileType": "Bitte wähle eine JSON-Datei aus.", + "Clear all statistics": "Lösche alle Statistiken", + "importHandleDescription": "Wähle 'Vorhandene überspringen' aus, wenn jeder Monitor oder jede Benachrichtigung mit demselben Namen übersprungen werden soll. 'Überschreiben' löscht jeden vorhandenen Monitor sowie Benachrichtigungen.", + "Skip existing": "Vorhandene überspringen", + "Overwrite": "Überschreiben", + "Options": "Optionen", + "confirmImportMsg": "Möchtest du das Backup wirklich importieren? Bitte stelle sicher, dass die richtige Import-Option ausgewählt ist.", + "Keep both": "Beide behalten", + "twoFAVerifyLabel": "Bitte trage deinen Token ein, um zu verifizieren, dass 2FA funktioniert:", + "Verify Token": "Token verifizieren", + "Setup 2FA": "2FA einrichten", + "Enable 2FA": "2FA aktivieren", + "Disable 2FA": "2FA deaktivieren", + "2FA Settings": "2FA-Einstellungen", + "confirmEnableTwoFAMsg": "Bist du sicher, dass du 2FA aktivieren möchtest?", + "confirmDisableTwoFAMsg": "Bist du sicher, dass du 2FA deaktivieren möchtest?", + "tokenValidSettingsMsg": "Token gültig! Du kannst jetzt die 2FA-Einstellungen speichern.", + "Two Factor Authentication": "Zwei-Faktor-Authentifizierung", + "Active": "Aktiv", + "Inactive": "Inaktiv", + "Token": "Token", + "Show URI": "URI anzeigen", + "Tags": "Tags", + "Add New below or Select...": "Einen bestehenden Tag auswählen oder neuen hinzufügen…", + "Tag with this name already exist.": "Ein Tag mit diesem Namen existiert bereits.", + "Tag with this value already exist.": "Ein Tag mit diesem Wert existiert bereits.", + "color": "Farbe", + "value (optional)": "Wert (optional)", + "Gray": "Grau", + "Red": "Rot", + "Orange": "Orange", + "Green": "Grün", + "Blue": "Blau", + "Indigo": "Indigo", + "Purple": "Lila", + "Pink": "Pink", + "Search...": "Suchen…", + "Heartbeat Retry Interval": "Überprüfungsintervall", + "Resend Notification if Down X times consecutively": "Benachrichtigung erneut senden, wenn Inaktiv X mal hintereinander", + "retryCheckEverySecond": "Alle {0} Sekunden neu versuchen", + "resendEveryXTimes": "Erneut versenden alle {0} mal", + "resendDisabled": "Erneut versenden deaktiviert", + "Import Backup": "Backup importieren", + "Export Backup": "Backup exportieren", + "Avg. Ping": "Ping ø", + "Avg. Response": "Antwortzeit ø", + "Entry Page": "Einstiegsseite", + "statusPageNothing": "Noch ist hier nichts. Bitte füge eine Gruppe oder einen Monitor hinzu.", + "No Services": "Keine Dienste", + "All Systems Operational": "Alle Systeme betriebsbereit", + "Partially Degraded Service": "Teilweise beeinträchtigter Dienst", + "Degraded Service": "Eingeschränkter Dienst", + "Add Group": "Gruppe hinzufügen", + "Add a monitor": "Monitor hinzufügen", + "Edit Status Page": "Bearbeite Status-Seite", + "Go to Dashboard": "Gehe zum Dashboard", + "Status Page": "Status-Seite", + "Status Pages": "Status-Seiten", + "telegram": "Telegram", + "webhook": "Webhook", + "smtp": "E-Mail (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Unterstützung für 50+ Benachrichtigungsdienste)", + "GoogleChat": "Google Chat (nur Google Workspace)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "Primary Base URL": "Primär URL", + "Push URL": "Push URL", + "needPushEvery": "Du solltest diese URL alle {0} Sekunden aufrufen.", + "pushOptionalParams": "Optionale Parameter: {0}", + "defaultNotificationName": "Mein {notification} Alarm ({number})", + "here": "hier", + "Required": "Erforderlich", + "Bot Token": "Bot Token", + "wayToGetTelegramToken": "Hier kannst du einen Token erhalten {0}.", + "Chat ID": "Chat ID", + "supportTelegramChatID": "Unterstützt Direkt Chat / Gruppe / Kanal Chat-ID's", + "wayToGetTelegramChatID": "Du kannst die Chat-ID erhalten, indem du eine Nachricht an den Bot sendest und zu dieser URL gehst, um die chat_id zu sehen", + "YOUR BOT TOKEN HERE": "HIER DEIN BOT TOKEN", + "chatIDNotFound": "Chat-ID wurde nicht gefunden: bitte sende zuerst eine Nachricht an diesen Bot", + "Post URL": "Post URL", + "Content Type": "Content Type", + "webhookJsonDesc": "{0} ist gut für alle modernen HTTP-Server, wie z.B. Express.js, geeignet", + "webhookFormDataDesc": "{multipart} ist gut für PHP. Das JSON muss mit {decodeFunction} verarbeitet werden", + "secureOptionNone": "Keine / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "TLS-Fehler ignorieren", + "From Email": "Absender E-Mail", + "emailCustomSubject": "Benutzerdefinierter Betreff", + "To Email": "Empfänger E-Mail", + "smtpCC": "CC", + "smtpBCC": "BCC", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "Du kannst diese erhalten, indem du zu den Servereinstellungen gehst -> Notifikationen -> Webhooks -> Neuer Webhook", + "Bot Display Name": "Bot-Anzeigename", + "Prefix Custom Message": "Benutzerdefinierter Nachrichten Präfix", + "Hello @everyone is...": "Hallo {'@'}everyone ist…", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "Wie eine Webhook-URL erstellt werden kann, erfährst du {0}.", + "Number": "Nummer", + "Recipients": "Empfänger", + "needSignalAPI": "Es wird ein Signal Client mit REST-API benötigt.", + "wayToCheckSignalURL": "Du kannst diese URL aufrufen, um zu sehen, wie du eine einrichtest:", + "signalImportant": "WICHTIG: Gruppen und Nummern können in Empfängern nicht gemischt werden!", + "Application Token": "Anwendungstoken", + "Server URL": "Server URL", + "Priority": "Priorität", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Kanalname", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Weitere Informationen zu Webhooks auf: {0}", + "aboutChannelName": "Gebe den Kanalnamen ein in {0} Feld Kanalname, falls du den Webhook-Kanal umgehen möchtest. Ex: #other-channel", + "aboutKumaURL": "Wenn das Feld für die Uptime Kuma URL leer gelassen wird, wird standardmässig die GitHub Projekt Seite verwendet.", + "emojiCheatSheet": "Emoji Cheat Sheet: {0}", + "User Key": "Benutzerschlüssel", + "Device": "Gerät", + "Message Title": "Nachrichtentitel", + "Notification Sound": "Benachrichtigungston", + "More info on:": "Mehr Infos auf: {0}", + "pushoverDesc1": "Notfallpriorität (2) hat standardmässig 30 Sekunden Auszeit zwischen den Versuchen und läuft nach 1 Stunde ab.", + "pushoverDesc2": "Fülle das Geräte Feld aus, wenn du Benachrichtigungen an verschiedene Geräte senden möchtest.", + "pushoverMessageTtl": "Message TTL (Sekunden)", + "SMS Type": "SMS Typ", + "octopushTypePremium": "Premium (Schnell - zur Benachrichtigung empfohlen)", + "octopushTypeLowCost": "Kostengünstig (Langsam - manchmal vom Betreiber gesperrt)", + "checkPrice": "Prüfe {0} Preise:", + "octopushLegacyHint": "Verwendest du die Legacy-Version von Octopush (2011-2020) oder die neue Version?", + "Check octopush prices": "Vergleiche die Oktopush Preise {0}.", + "octopushPhoneNumber": "Telefonnummer (Internationales Format, z.B : +49612345678) ", + "octopushSMSSender": "Name des SMS-Absenders : 3-11 alphanumerische Zeichen und Leerzeichen (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Geräte ID", + "Apprise URL": "Apprise URL", + "Example:": "Beispiel: {0}", + "Read more:": "Weiterlesen: {0}", + "Status:": "Status: {0}", + "Read more": "Weiterlesen", + "appriseInstalled": "Apprise ist installiert.", + "appriseNotInstalled": "Apprise ist nicht installiert. {0}", + "Access Token": "Access Token", + "Channel access token": "Kanalzugriffstoken", + "Line Developers Console": "Line Developers Console", + "lineDevConsoleTo": "Line Developers Console - {0}", + "Basic Settings": "Grundeinstellungen", + "User ID": "User ID", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "Rufe zuerst {0} auf, erstelle dann einen Provider und Channel (Messaging API). Als nächstes kannst du den Channel access token und die User ID aus den oben genannten Menüpunkten abrufen.", + "Icon URL": "Icon URL", + "aboutIconURL": "Du kannst einen Link zu einem Bild in 'Icon URL' übergeben um das Standardprofilbild zu überschreiben. Wird nicht verwendet, wenn ein Icon Emoji gesetzt ist.", + "aboutMattermostChannelName": "Du kannst den Standardkanal, auf dem der Webhook gesendet wird überschreiben, indem der Kanalnamen in das Feld 'Channel Name' eingeben wird. Dies muss in den Mattermost Webhook-Einstellungen aktiviert werden. Ex: #other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - billig, aber langsam und oft überladen. Auf polnische Empfänger beschränkt.", + "promosmsTypeFlash": "SMS FLASH - Die Nachricht wird automatisch auf dem Empfängergerät angezeigt. Auf polnische Empfänger beschränkt.", + "promosmsTypeFull": "SMS FULL - Premium Stufe von SMS, es kann der Absendernamen verwendet werden (Der Name musst zuerst registriert werden). Zuverlässig für Warnungen.", + "promosmsTypeSpeed": "SMS SPEED - Höchste Priorität im System. Sehr schnell und zuverlässig, aber teuer (Ungefähr das doppelte von SMS FULL).", + "promosmsPhoneNumber": "Telefonnummer (für polnische Empfänger können die Vorwahlen übersprungen werden)", + "promosmsSMSSender": "Name des SMS-Absenders : vorregistrierter Name oder einer der Standardwerte: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu Webhook URL", + "matrixHomeserverURL": "Heimserver URL (mit http(s):// und optionalen Ports)", + "Internal Room Id": "Interne Raum-ID", + "matrixDesc1": "Die interne Raum-ID findest du im erweiterten Bereich der Raumeinstellungen im Matrix-Client. Es sollte aussehen wie z.B. !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Es wird dringend empfohlen einen neuen Benutzer anzulegen und nicht den Zugriffstoken deines eigenen Matrix-Benutzers zu verwenden. Anderenfalls ermöglicht es vollen Zugriff auf dein Konto und alle Räume, denen du beigetreten bist. Erstelle stattdessen einen neuen Benutzer und lade ihn nur in den Raum ein, in dem du die Benachrichtigung erhalten möchtest. Du kannst den Zugriffstoken erhalten, indem du Folgendes ausführst {0}", + "Method": "Methode", + "Body": "Body", + "Headers": "Headers", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "Der Header ist kein gültiges JSON: ", + "BodyInvalidFormat": "Der Body ist kein gültiges JSON: ", + "Monitor History": "Monitor Verlauf", + "clearDataOlderThan": "Bewahre die Aufzeichnungsdaten für {0} Tage auf.", + "PasswordsDoNotMatch": "Passwörter stimmen nicht überein.", + "records": "Einträge", + "One record": "Ein Eintrag", + "steamApiKeyDescription": "Um einen Steam Game Server zu überwachen, wird ein Steam Web-API-Schlüssel benötigt. Dieser kann hier registriert werden: ", + "Current User": "Aktueller Benutzer", + "recent": "Letzte", + "Done": "Fertig", + "Info": "Info", + "Security": "Sicherheit", + "Steam API Key": "Steam API Key", + "Shrink Database": "Datenbank verkleinern", + "Pick a RR-Type...": "Wähle ein RR-Typ aus…", + "Pick Accepted Status Codes...": "Wähle akzeptierte Statuscodes aus…", + "Default": "Standard", + "HTTP Options": "HTTP Optionen", + "Create Incident": "Vorfall erstellen", + "Title": "Titel", + "Content": "Inhalt", + "Style": "Stil", + "info": "info", + "warning": "warnung", + "danger": "gefahr", + "primary": "primär", + "light": "hell", + "dark": "dunkel", + "Post": "Veröffentlichen", + "Please input title and content": "Bitte Titel und Inhalt eingeben", + "Created": "Erstellt", + "Last Updated": "Zuletzt aktualisiert", + "Unpin": "Loslösen", + "Switch to Light Theme": "Zu hellem Thema wechseln", + "Switch to Dark Theme": "Zum dunklen Thema wechseln", + "Show Tags": "Tags anzeigen", + "Hide Tags": "Tags ausblenden", + "Description": "Beschreibung", + "No monitors available.": "Keine Monitore verfügbar.", + "Add one": "Hinzufügen", + "No Monitors": "Keine Monitore", + "Untitled Group": "Gruppe ohne Titel", + "Services": "Dienste", + "Discard": "Verwerfen", + "Cancel": "Abbrechen", + "Powered by": "Erstellt mit", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Benutzername (inkl. webapi_ prefix)", + "serwersmsAPIPassword": "API Passwort", + "serwersmsPhoneNumber": "Telefonnummer", + "serwersmsSenderName": "Name des SMS-Absenders (über Kundenportal registriert)", + "stackfield": "Stackfield", + "clicksendsms": "ClickSend SMS", + "apiCredentials": "API Zugangsdaten", + "smtpDkimSettings": "DKIM Einstellungen", + "smtpDkimDesc": "Details zur Konfiguration sind in der Nodemailer DKIM {0} zu finden.", + "documentation": "Dokumentation", + "smtpDkimDomain": "Domain Name", + "smtpDkimKeySelector": "Schlüssel Auswahl", + "smtpDkimPrivateKey": "Privater Schlüssel", + "smtpDkimHashAlgo": "Hash-Algorithmus (Optional)", + "smtpDkimheaderFieldNames": "Zu validierende Header-Schlüssel (optional)", + "smtpDkimskipFields": "Zu ignorierende Header Schlüssel (optional)", + "PushByTechulus": "Push by Techulus", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpunkt", + "alertaEnvironment": "Umgebung", + "alertaApiKey": "API Schlüssel", + "alertaAlertState": "Alarmstatus", + "alertaRecoverState": "Wiederherstellungsstatus", + "deleteStatusPageMsg": "Bist du sicher, dass du diese Status-Seite löschen willst?", + "Proxies": "Proxys", + "default": "Standard", + "enabled": "Aktiviert", + "setAsDefault": "Als Standard setzen", + "deleteProxyMsg": "Bist du sicher, dass du diesen Proxy für alle Monitore löschen willst?", + "proxyDescription": "Proxys müssen einem Monitor zugewiesen werden, um zu funktionieren.", + "enableProxyDescription": "Dieser Proxy wird keinen Effekt auf Monitor-Anfragen haben, bis er aktiviert ist. Du kannst ihn temporär von allen Monitoren nach Aktivierungsstatus deaktivieren.", + "setAsDefaultProxyDescription": "Dieser Proxy wird standardmässig für alle neuen Monitore aktiviert sein. Du kannst den Proxy immer noch für jeden Monitor einzeln deaktivieren.", + "Certificate Chain": "Zertifikatskette", + "Valid": "Gültig", + "Invalid": "Ungültig", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "Geheimer Zugriffsschlüssel", + "PhoneNumbers": "Telefonnummern", + "TemplateCode": "Vorlagencode", + "SignName": "Signaturname", + "Sms template must contain parameters: ": "SMS Vorlage muss folgende Parameter enthalten: ", + "Bark Endpoint": "Bark Endpunkt", + "WebHookUrl": "Webhook URL", + "SecretKey": "Geheimer Schlüssel", + "For safety, must use secret key": "Zur Sicherheit muss ein geheimer Schlüssel verwendet werden", + "Device Token": "Gerätetoken", + "Platform": "Platform", + "Huawei": "Huawei", + "High": "Hoch", + "Retry": "Wiederholungen", + "Topic": "Thema", + "WeCom Bot Key": "WeCom Bot Schlüssel", + "Setup Proxy": "Proxy einrichten", + "Proxy Protocol": "Proxy Protokoll", + "Proxy Server": "Proxy-Server", + "Proxy server has authentication": "Proxy-Server hat Authentifizierung", + "User": "Benutzer", + "Installed": "Installiert", + "Not installed": "Nicht installiert", + "Running": "Läuft", + "Not running": "Gestoppt", + "Remove Token": "Token entfernen", + "Start": "Start", + "Stop": "Stop", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Neue Status-Seite hinzufügen", + "Slug": "Slug", + "Accept characters:": "Akzeptierte Zeichen:", + "startOrEndWithOnly": "Nur mit {0} anfangen und enden", + "No consecutive dashes": "Keine aufeinanderfolgenden Bindestriche", + "Next": "Weiter", + "The slug is already taken. Please choose another slug.": "Der Slug ist bereits in Verwendung. Bitte wähle einen anderen.", + "No Proxy": "Kein Proxy", + "Authentication": "Authentifizierung", + "HTTP Basic Auth": "HTTP Basisauthentifizierung", + "New Status Page": "Neue Status-Seite", + "Page Not Found": "Seite nicht gefunden", + "Reverse Proxy": "Reverse Proxy", + "Backup": "Sicherung", + "About": "Über", + "wayToGetCloudflaredURL": "(Lade Cloudflare von {0} herunter)", + "cloudflareWebsite": "Cloudflare Website", + "Message:": "Nachricht:", + "Don't know how to get the token? Please read the guide:": "Du weisst nicht, wie man den Token bekommt? Lies die Anleitung dazu:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Die aktuelle Verbindung kann unterbrochen werden, wenn du aktuell über Cloudflare Tunnel verbunden bist. Bist du sicher, dass du es stoppen willst? Gib zur Bestätigung dein aktuelles Passwort ein.", + "Other Software": "Andere Software", + "For example: nginx, Apache and Traefik.": "Zum Beispiel: nginx, Apache und Traefik.", + "Please read": "Bitte lesen", + "Subject:": "Betreff:", + "Valid To:": "Gültig bis:", + "Days Remaining:": "Tage verbleibend:", + "Issuer:": "Aussteller:", + "Fingerprint:": "Fingerabdruck:", + "No status pages": "Keine Status-Seiten", + "Domain Name Expiry Notification": "Benachrichtigung bei Ablauf des Domainnamens", + "Customize": "Anpassen", + "Custom Footer": "Eigener Footer", + "Custom CSS": "Eigenes CSS", + "Footer Text": "Fusszeile", + "Show Powered By": "Zeige 'Powered By'", + "Date Created": "Erstellt am", + "Domain Names": "Domainnamen", + "signedInDisp": "Angemeldet als {0}", + "signedInDispDisabled": "Authentifizierung deaktiviert.", + "dnsPortDescription": "DNS Server Port. Standard ist 53. Der Port kann jederzeit geändert werden.", + "topic": "Thema", + "topicExplanation": "MQTT Thema für den monitor", + "successMessage": "Erfolgsnachricht", + "successMessageExplanation": "MQTT Nachricht, die als Erfolg angesehen wird", + "error": "Fehler", + "critical": "kritisch", + "wayToGetPagerDutyKey": "Dieser kann unter Service -> Service Directory -> (Select a service) -> Integrations -> Add integration gefunden werden. Hier muss nach \"Events API V2\" gesucht werden. Mehr informationen {0}", + "Integration Key": "Schlüssel der Integration", + "Integration URL": "URL der Integration", + "Auto resolve or acknowledged": "Automatisch lösen oder bestätigen", + "do nothing": "nichts tun", + "auto acknowledged": "automatisch bestätigen", + "auto resolve": "automatisch lösen", + "Bark Group": "Bark Gruppe", + "Bark Sound": "Bark Klang", + "HTTP Headers": "HTTP Kopfzeilen", + "Trust Proxy": "Vertrauenswürdiger Proxy", + "Proxy": "Proxy", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "OneBot HTTP Adresse", + "onebotMessageType": "OneBot Nachrichtentyp", + "onebotGroupMessage": "Gruppe", + "onebotPrivateMessage": "Privat", + "onebotUserOrGroupId": "Gruppe/Nutzer ID", + "onebotSafetyTips": "Zur Sicherheit ein access token setzen", + "PushDeer Key": "PushDeer Schlüssel", + "RadiusSecret": "Radius Geheimnis", + "RadiusSecretDescription": "Geteiltes Geheimnis zwischen Client und Server", + "RadiusCalledStationId": "ID der angesprochenen Station", + "RadiusCalledStationIdDescription": "Identifikation des angesprochenen Geräts", + "RadiusCallingStationId": "ID der ansprechenden Station", + "RadiusCallingStationIdDescription": "Identifikation des ansprechenden Geräts", + "Certificate Expiry Notification": "Benachrichtigung ablaufendes Zertifikat", + "API Username": "API Nutzername", + "API Key": "API Schlüssel", + "Recipient Number": "Empfängernummer", + "From Name/Number": "Von Name/Nummer", + "Leave blank to use a shared sender number.": "Leer lassen um eine geteilte Absendernummer zu nutzen.", + "Octopush API Version": "Octopush API Version", + "Legacy Octopush-DM": "Legacy Octopush-DM", + "endpoint": "Endpunkt", + "octopushAPIKey": "\"API Schlüssel\" der HTTP API Zugangsdaten im control panel", + "octopushLogin": "\"Login\" der HTTP API Zugangsdaten im control panel", + "promosmsLogin": "API Login Name", + "promosmsPassword": "API Password", + "pushoversounds pushover": "Pushover (Standard)", + "pushoversounds bike": "Fahrrad", + "pushoversounds bugle": "Signalhorn", + "pushoversounds cashregister": "Kasse", + "pushoversounds classical": "Klassisch", + "pushoversounds cosmic": "Kosmisch", + "pushoversounds falling": "Abfallend", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Eingang", + "pushoversounds intermission": "Pause", + "pushoversounds magic": "Magisch", + "pushoversounds mechanical": "Mechanisch", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Sirene", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "Schlepper Horn", + "pushoversounds alien": "Ausserirdisch (lang)", + "pushoversounds climb": "Ansteigende (lang)", + "pushoversounds persistent": "Hartnäckig (lang)", + "pushoversounds echo": "Pushover Echo (lang)", + "pushoversounds updown": "Auf und Ab (lang)", + "pushoversounds vibrate": "Nur vibrieren", + "pushoversounds none": "Nichts (Stille)", + "pushyAPIKey": "Geheimer API Schlüssel", + "pushyToken": "Gerätetoken", + "Show update if available": "Verfügbare Updates anzeigen", + "Also check beta release": "Auch nach beta Versionen schauen", + "Using a Reverse Proxy?": "Wird ein Reverse Proxy genutzt?", + "Check how to config it for WebSocket": "Prüfen, wie er für die Nutzung mit WebSocket konfiguriert wird", + "Steam Game Server": "Steam Spielserver", + "Most likely causes:": "Wahrscheinliche Ursachen:", + "The resource is no longer available.": "Die Quelle ist nicht mehr verfügbar.", + "There might be a typing error in the address.": "Es gibt einen Tippfehler in der Adresse.", + "What you can try:": "Was du versuchen kannst:", + "Retype the address.": "Schreibe die Adresse erneut.", + "Go back to the previous page.": "Gehe zur vorigen Seite.", + "Coming Soon": "Kommt bald", + "wayToGetClickSendSMSToken": "Du kannst einen API Nutzernamen und Schlüssel unter {0} erhalten.", + "Connection String": "Verbindungstext", + "Query": "Abfrage", + "settingsCertificateExpiry": "TLS Zertifikatsablauf", + "certificationExpiryDescription": "HTTPS Monitore senden eine Benachrichtigung, wenn das Zertifikat abläuft in:", + "Setup Docker Host": "Docker Host einrichten", + "Connection Type": "Verbindungstyp", + "Docker Daemon": "Docker Daemon", + "deleteDockerHostMsg": "Bist du sicher diesen docker host für alle Monitore zu löschen?", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "Docker Container", + "Container Name / ID": "Container Name / ID", + "Docker Host": "Docker Host", + "Docker Hosts": "Docker Hosts", + "ntfy Topic": "ntfy Thema", + "Domain": "Domain", + "Workstation": "Workstation", + "disableCloudflaredNoAuthMsg": "Du bist im nicht-authentifizieren Modus, ein Passwort wird nicht benötigt.", + "trustProxyDescription": "Vertraue 'X-Forwarded-*' headern. Wenn man die richtige Client IP erhalten möchte und Uptime Kuma hinter einem Proxy wie Nginx oder Apache läuft, sollte dies aktiviert werden.", + "wayToGetLineNotifyToken": "Du kannst hier ein Token erhalten: {0}", + "Examples": "Beispiele", + "Home Assistant URL": "Home Assistant URL", + "Long-Lived Access Token": "Lange gültiges Access Token", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Lange gültige Access Token können durch klicken auf den Profilnamen (unten links) und dann einen Klick auf Create Token am Ende erstellt werden. ", + "Notification Service": "Benachrichtigungsdienst", + "default: notify all devices": "standard: Alle Geräte benachrichtigen", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Eine Liste der Benachrichtigungsdienste kann im Home Assistant unter \"Developer Tools > Services\" gefunden werden, wnen man nach \"notification\" sucht um den Geräte-/Telefonnamen zu finden.", + "Automations can optionally be triggered in Home Assistant:": "Automatisierungen können optional im Home Assistant ausgelöst werden:", + "Trigger type:": "Auslöser:", + "Event type:": "Ereignistyp:", + "Event data:": "Ereignis daten:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Dann eine Aktion wählen, zum Beispiel eine Scene wählen in der ein RGB Licht rot ist.", + "Frontend Version": "Frontend Version", + "Frontend Version do not match backend version!": "Die Frontend Version stimmt nicht mit der backend version überein!", + "Maintenance": "Wartung", + "statusMaintenance": "Wartung", + "Schedule maintenance": "Geplante Wartung", + "Affected Monitors": "Betroffene Monitore", + "Pick Affected Monitors...": "Wähle betroffene Monitore…", + "Start of maintenance": "Beginn der Wartung", + "All Status Pages": "Alle Status Seiten", + "Select status pages...": "Wähle Status Seiten…", + "recurringIntervalMessage": "einmal pro Tag ausgeführt | Wird alle {0} Tage ausgführt", + "affectedMonitorsDescription": "Wähle alle Monitore die von der Wartung betroffen sind", + "affectedStatusPages": "Zeige diese Nachricht auf ausgewählten Status Seiten", + "atLeastOneMonitor": "Wähle mindestens einen Monitor", + "deleteMaintenanceMsg": "Möchtest du diese Wartung löschen?", + "Base URL": "Basis URL", + "goAlertInfo": "GoAlert ist eine Open-Source Applikation für Rufbereitschaftsplanung, automatische Eskalation und Benachrichtigung (z.B. SMS oder Telefonanrufe). Engagiere automatisch die richtige Person, auf die richtige Art und Weise und zum richtigen Zeitpunkt! {0}", + "goAlertIntegrationKeyInfo": "Bekommt einen generischen API Schlüssel in folgenden Format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\". Normalerweise entspricht dies dem Wert des Token aus der URL.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Veraltet: Da viele Funktionen hinzugefügt wurden und die Backupfunktion nicht mehr gepflegt wird, kann keine vollständige Sicherung erstellt oder wiederhergestellt werden.", + "backupRecommend": "Bitte Backup das Volume oder den Ordner (./ data /) selbst.", + "Optional": "Optional", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "SMSManager API Dokumente ", + "Gateway Type": "Gateway Typ", + "SMSManager": "SMSManager", + "You can divide numbers with": "Du kannst Zahlen teilen mit", + "or": "oder", + "recurringInterval": "Intervall", + "Recurring": "Wiederkehrend", + "strategyManual": "Aktiv/Inaktiv Manuell", + "warningTimezone": "Es wird die Zeitzone des Servers genutzt", + "weekdayShortMon": "Mo", + "weekdayShortTue": "Di", + "weekdayShortWed": "Mi", + "weekdayShortThu": "Do", + "weekdayShortFri": "Fr", + "weekdayShortSat": "Sa", + "weekdayShortSun": "So", + "dayOfWeek": "Tag der Woche", + "dayOfMonth": "Tag im Monat", + "lastDay": "Letzter Tag", + "lastDay1": "Letzter Tag im Monat", + "lastDay2": "Vorletzer Tag im Monat", + "lastDay3": "3. letzter Tag im Monat", + "lastDay4": "4. letzter Tag im Monat", + "No Maintenance": "Keine Wartung", + "pauseMaintenanceMsg": "Möchtest du wirklich pausieren?", + "maintenanceStatus-under-maintenance": "In Wartung", + "maintenanceStatus-inactive": "Inaktiv", + "maintenanceStatus-scheduled": "Geplant", + "maintenanceStatus-ended": "Ende", + "maintenanceStatus-unknown": "Unbekannt", + "Display Timezone": "Zeitzone anzeigen", + "Server Timezone": "Server Zeitzone", + "telegramMessageThreadID": "(Optional) Nachrichten Thread ID", + "telegramMessageThreadIDDescription": "Optionale eindeutige Kennung für den Ziel-Thread (Thema) des Forums; nur für Forum-Supergroups", + "Enable": "Aktivieren", + "telegramProtectContent": "Schütze gegen Weiterleiten/Speichern der Nachricht", + "telegramProtectContentDescription": "Die Bot-Nachrichten in Telegram sind gegen Weiterleitung und Speichern geschützt.", + "Disable": "Deaktivieren", + "plugin": "Plugin | Plugins", + "installing": "Installiere", + "uninstall": "Deinstallieren", + "uninstalling": "Deinstalliere", + "confirmUninstallPlugin": "Möchtest du dieses Plugin wirklich deinstallieren?", + "notificationRegional": "Regional", + "Single Maintenance Window": "Einmaliges Wartungsfenster", + "dnsCacheDescription": "In einigen IPv6-Umgebungen funktioniert es möglicherweise nicht. Deaktiviere es, wenn Probleme auftreten.", + "Maintenance Time Window of a Day": "Wartungszeitfenster eines Tages", + "Effective Date Range": "Gültigkeitsbereich (Optional)", + "Schedule Maintenance": "Wartung planen", + "Date and Time": "Datum und Uhrzeit", + "DateTime Range": "Datums- und Zeitbereich", + "telegramSendSilently": "Stumm senden", + "telegramSendSilentlyDescription": "Sende die Nachricht stumm. Nutzer bekommen eine Benachrichtigung ohne Ton.", + "markdownSupported": "Markdown-Syntax unterstützt", + "webhookAdditionalHeadersTitle": "Zusätzliche Header", + "webhookAdditionalHeadersDesc": "Legt zusätzliche Kopfzeilen fest, die mit dem Webhook gesendet werden. Jede Kopfzeile sollte als JSON Schlüssel/Wert definiert werden.", + "Packet Size": "Paketgrösse", + "IconUrl": "Symbol URL", + "Enable DNS Cache": "(Veraltet) DNS-Cache für HTTP(s)-Monitore aktivieren", + "Help": "Hilfe", + "Game": "Spiel", + "General Monitor Type": "Allgemeiner Monitortyp", + "Passive Monitor Type": "Passiver Monitortyp", + "Specific Monitor Type": "Spezifischer Monitortyp", + "Monitor": "Überwachung | Monitore", + "Custom": "Benutzerdefiniert", + "statusPageMaintenanceEndDate": "Ende", + "loadingError": "Die Daten konnten nicht abgerufen werden, bitte später noch einmal versuchen.", + "install": "Installieren", + "Body Encoding": "Body Encoding", + "Custom Monitor Type": "Benutzerdefinierter Monitortyp", + "Expiry": "Ablauf", + "Expiry date": "Ablaufdatum", + "Don't expire": "Nicht ablaufen", + "Add Another": "Hinzufügen", + "Key Added": "Schlüssel hinzugefügt", + "apiKeyAddedMsg": "API Schlüssel wurde hinzugefügt. Bitte notiere den Schlüssel, da er nicht erneut angezeigt wird.", + "Add API Key": "API Schlüssel hinzufügen", + "No API Keys": "Kein API Schlüssel", + "apiKey-active": "Aktiv", + "apiKey-expired": "Abgelaufen", + "apiKey-inactive": "Inaktiv", + "Expires": "Läuft ab", + "disableAPIKeyMsg": "Bist du sicher, dass du diesen API Schlüssel deaktivieren willst?", + "deleteAPIKeyMsg": "Bist du sicher, dass du diesen API Schlüssel löschen willst?", + "Generate": "Generieren", + "infiniteRetention": "Für unendliche Speicherung auf 0 setzen.", + "dataRetentionTimeError": "Aufbewahrungsfrist muss grösser oder gleich 0 sein", + "Clone Monitor": "Monitor klonen", + "Clone": "Klonen", + "cloneOf": "Klon von {0}", + "wayToGetZohoCliqURL": "Wie eine Webhook URL erstellt werden kann, erfährst du {0}.", + "enableGRPCTls": "Senden von gRPC Anforderungen mit TLS Verbindung zulassen", + "grpcMethodDescription": "Der Name der Methode wird in das \"camelCase\" Format konvertiert (z.B. sayHello, check, etc.)", + "wayToGetKookGuildID": "Schalte den „Entwicklermodus“ in den Kook-Einstellungen ein und klicke mit der rechten Maustaste auf die Gilde, um die ID zu erhalten", + "Guild ID": "Gilde ID", + "Lowcost": "Kostengünstig", + "high": "hoch", + "Google Analytics ID": "Google Analytics ID", + "Enable TLS": "TLS aktivieren", + "Free Mobile API Key": "Kostenloser Mobile API Schlüssel", + "Proto Service Name": "Proto Dienst Name", + "Proto Method": "Proto Methode", + "Proto Content": "Proto Inhalt", + "Economy": "Economy", + "pagertreeIntegrationUrl": "Integrations-URL", + "pagertreeUrgency": "Dringlichkeit", + "pagertreeSilent": "Stumm", + "pagertreeLow": "Niedrig", + "pagertreeMedium": "Mittel", + "pagertreeHigh": "Hoch", + "pagertreeCritical": "Kritisch", + "pagertreeResolve": "Automatisch auflösen", + "pagertreeDoNothing": "Nichts tun", + "wayToGetPagerTreeIntegrationURL": "Nachdem du die Uptime Kuma Integration in PagerTree erstellt hast, kopiere den Endpunkt. Siehe details {0}", + "Server Address": "Serveradresse", + "Learn More": "Erfahre mehr", + "Edit Tag": "Tag editieren", + "promosmsAllowLongSMS": "Lange SMS erlauben", + "smseagleRecipientType": "Empfängertyp", + "smseagleToken": "API Zugriffstoken", + "smseagleTo": "Telefonnummer(n)", + "smseagleUrl": "Ihre SMSEagle Geräte URL", + "smseagleEncoding": "Als Unicode senden", + "smseaglePriority": "Nachrichtenpriorität (0-9, Standard = 0)", + "smseagleContact": "Telefonbuch Kontaktname(n)", + "confirmDeleteTagMsg": "Möchtest du dieses Tag wirklich löschen? Monitore, die mit diesem Tag verknüpft sind, werden nicht gelöscht.", + "wayToGetKookBotToken": "Erstelle eine Anwendung und erhalte den Bot-Token unter {0}", + "Strategy": "Strategie", + "Free Mobile User Identifier": "Kostenlose mobile Benutzerkennung", + "smseagleGroup": "Telefonbuch Gruppenname(n)", + "smseagleRecipient": "Empfänger (mehrere müssen durch Komma getrennt werden)", + "API Keys": "API Schlüssel", + "Continue": "Weiter", + "Add New Tag": "Neuen Tag hinzufügen", + "lunaseaTarget": "Ziel", + "lunaseaDeviceID": "Geräte-ID", + "lunaseaUserID": "Benutzer-ID", + "ntfyAuthenticationMethod": "Authentifizierungsmethode", + "ntfyUsernameAndPassword": "Benutzername und Passwort", + "twilioAccountSID": "Account SID", + "twilioFromNumber": "Absender", + "twilioToNumber": "Empfänger", + "twilioAuthToken": "Auth Token / API Key Secret", + "statusPageRefreshIn": "Aktualisierung in: {0}", + "sameAsServerTimezone": "Gleiche Zeitzone wie Server", + "startDateTime": "Start Datum/Uhrzeit", + "endDateTime": "Ende Datum/Uhrzeit", + "cronExpression": "Cron-Ausdruck", + "cronSchedule": "Zeitplan: ", + "invalidCronExpression": "Ungültiger Cron-Ausdruck: {0}", + "Open Badge Generator": "Abzeichengenerator öffnen", + "Badge Generator": "{0}'s Abzeichen Generator", + "Badge Type": "Abzeichen Typ", + "Badge Duration": "Badge Dauer", + "Badge Label": "Abzeichen Label", + "Badge Prefix": "Abzeichen Wert Präfix", + "Badge Suffix": "Abzeichen Wert Suffix", + "Badge Label Color": "Abzeichen Label Farbe", + "Badge Color": "Abzeichen Farbe", + "Badge Label Prefix": "Abzeichen Label Präfix", + "Badge Up Color": "Abzeichen Up Farbe", + "Badge Maintenance Color": "Abzeichen Wartung Farbe", + "Badge Warn Color": "Abzeichen Warnung Farbe", + "Badge Warn Days": "Abzeichen Warnung Tage", + "Badge Style": "Abzeichen Stil", + "Badge URL": "Abzeichen URL", + "Badge Pending Color": "Abzeichen Pending Farbe", + "Badge Down Days": "Abzeichen Down Tage", + "Monitor Setting": "{0}'s Monitor Einstellung", + "Show Clickable Link": "Klickbaren Link anzeigen", + "Badge Label Suffix": "Abzeichen Label Suffix", + "Badge value (For Testing only.)": "Abzeichen Wert (nur für Tests)", + "Show Clickable Link Description": "Wenn diese Option aktiviert ist, kann jeder, der Zugriff auf diese Statusseite hat, auf die Monitor URL zugreifen.", + "Badge Down Color": "Abzeichen Down Farbe", + "Edit Maintenance": "Wartung bearbeiten", + "Group": "Gruppe", + "Monitor Group": "Monitor Gruppe", + "noGroupMonitorMsg": "Nicht verfügbar. Erstelle zunächst einen Gruppenmonitor.", + "Close": "Schliessen", + "chromeExecutableAutoDetect": "Automatische Erkennung", + "chromeExecutableDescription": "Für Docker-Benutzer, die Chromium noch nicht installiert haben, kann es ein paar Minuten dauern, bis es installiert ist und das Testergebnis angezeigt wird. Es benötigt 1 GB Speicherplatz.", + "chromeExecutable": "Chrome/Chromium Ausführbare Datei", + "Invert Keyword": "Schlüsselwort invertieren", + "webhookCustomBodyDesc": "Definiere einen benutzerdefinierten HTTP-Body für die Anfrage. Die Template-Variablen {msg}, {heartbeat} und {monitor} werden akzeptiert.", + "webhookBodyPresetOption": "Voreinstellung - {0}", + "webhookBodyCustomOption": "Benutzerdefinierter Body", + "invertKeywordDescription": "Achte darauf, dass das Schlüsselwort eher fehlt als vorhanden ist.", + "Request Body": "Anforderungstext", + "twilioApiKey": "API-Schlüssel (optional)", + "aboutNotifyChannel": "Notify Kanal löst eine Desktop- oder Mobilbenachrichtigung für alle Mitglieder des Kanals aus, unabhängig davon, ob deine Verfügbarkeit auf aktiv oder abwesend eingestellt ist.", + "Notify Channel": "Notify Kanal", + "Enter the list of brokers": "Gib die Liste der Broker ein", + "Kafka Topic Name": "Kafka Topic Name", + "Kafka Producer Message": "Kafka Producer Nachricht", + "Enable Kafka SSL": "Kafka SSL aktivieren", + "Enable Kafka Producer Auto Topic Creation": "Kafka Producer Auto Topic Creation aktivieren", + "Kafka SASL Options": "Kafka SASL Optionen", + "Mechanism": "Mechanismus", + "Pick a SASL Mechanism...": "Wähle ein SASL Mechanismus…", + "AccessKey Id": "AccessKey Id", + "Secret AccessKey": "Secret AccessKey", + "Session Token": "Sitzungs-Token", + "Kafka Brokers": "Kafka Brokers", + "Press Enter to add broker": "Drücke Enter um den Broker hinzuzufügen", + "Authorization Identity": "Authorization Identity", + "Expected Value": "Erwarteter Wert", + "Json Query": "Json-Abfrage", + "filterActive": "Aktiv", + "filterActivePaused": "Pausiert", + "Badge Duration (in hours)": "Abzeichen Dauer (in Stunden)", + "Badge Preview": "Abzeichen Vorschau", + "tailscalePingWarning": "Um den Tailscale Ping Monitor nutzen zu können, musst du Uptime Kuma ohne Docker installieren und den Tailscale Client auf dem Server installieren.", + "Server URL should not contain the nfty topic": "Die Server-URL sollte das nfty-Thema nicht enthalten", + "pushDeerServerDescription": "Leer lassen um den offiziellen Server zu verwenden", + "FlashDuty Severity": "Schweregrad", + "nostrSender": "Privater Schlüssel des Absenders (nsec)", + "nostrRecipientsHelp": "npub-Format, eine pro Zeile", + "noOrBadCertificate": "Kein/schlechtes Zertifikat", + "wayToGetFlashDutyKey": "Gehe zu Channel -> (Wähle einen Channel) -> Integrationen -> Neue Integration hinzufügen', füge ein 'Uptime Kuma' hinzu, um eine Push-Adresse zu erhalten, und kopiere den Integrationsschlüssel in die Adresse. Für weitere Informationen besuche", + "nostrRelays": "Nostr Relays", + "nostrRelaysHelp": "Eine Relay-URL pro Zeile", + "nostrRecipients": "Öffentliche Schlüssel des Empfängers (npub)", + "gamedigGuessPort": "Gamedig: Vermuteter Port", + "Request Timeout": "Zeitüberschreitung der Anfrage", + "styleElapsedTimeShowNoLine": "Anzeigen (keine Zeile)", + "styleElapsedTimeShowWithLine": "Anzeigen (mit Zeile)", + "Select": "Auswählen", + "selectedMonitorCount": "Ausgewählt: {0}", + "PushDeer Server": "PushDeer Server", + "showCertificateExpiry": "Ablauf des Zertifikats anzeigen", + "gamedigGuessPortDescription": "Der vom Valve Server Query Protocol verwendete Port kann sich vom Port des Clients unterscheiden. Versuche dies, wenn der Monitor keine Verbindung zum Server herstellen kann.", + "timeoutAfter": "Zeitüberschreitung nach {0} Sekunden", + "styleElapsedTime": "Verstrichene Zeit unter der Prüfintervallleiste", + "Check/Uncheck": "Aktivieren/Deaktivieren", + "enableNSCD": "Aktiviere NSCD (Name Service Cache Daemon) zur Zwischenspeicherung aller DNS-Anfragen", + "setupDatabaseChooseDatabase": "Welche Datenbank möchtest du verwenden?", + "setupDatabaseEmbeddedMariaDB": "Du brauchst nichts einzustellen. Dieses Docker-Image hat automatisch eine MariaDB für dich eingerichtet und konfiguriert. Uptime Kuma wird sich mit dieser Datenbank über einen Unix-Socket verbinden.", + "dbName": "Datenbank Name", + "setupDatabaseMariaDB": "Mit externer MariaDB-Datenbank verbinden. Du musst die Verbindungsinformationen für die Datenbank festlegen.", + "setupDatabaseSQLite": "Eine einfache Datenbankdatei, empfohlen für kleinere Bereitstellungen. Vor v2.0.0 verwendete Uptime Kuma SQLite als Standarddatenbank.", + "Saved.": "Gespeichert.", + "monitorToastMessagesLabel": "Toast-Benachrichtigungen überwachen", + "toastSuccessTimeout": "Zeitüberschreitung für Erfolgsbenachrichtigungen", + "toastErrorTimeout": "Zeitüberschreitung für Fehlerbenachrichtigungen", + "monitorToastMessagesDescription": "Toast-Benachrichtigungen für Monitore verschwinden nach einer bestimmten Zeit in Sekunden. Auf -1 setzen, um die Zeitüberschreitung zu deaktivieren. Der Wert 0 deaktiviert die Toast-Benachrichtigungen.", + "Bark API Version": "Bark API Version", + "pushViewCode": "Wie verwendet man den Push-Monitor? (Code anzeigen)", + "pushOthers": "Sonstige", + "programmingLanguages": "Programmiersprachen", + "authInvalidToken": "Ungültiges Token.", + "authIncorrectCreds": "Falscher Benutzername oder falsches Passwort.", + "2faAlreadyEnabled": "2FA ist bereits aktiviert.", + "2faEnabled": "2FA ist aktiviert.", + "2faDisabled": "2FA ist deaktiviert.", + "successResumed": "Erfolgreich wiederaufgenommen.", + "successPaused": "Erfolgreich pausiert.", + "successDeleted": "Erfolgreich gelöscht.", + "successEdited": "Erfolgreich bearbeitet.", + "successBackupRestored": "Sicherung erfolgreich wiederhergestellt.", + "successEnabled": "Erfolgreich aktiviert.", + "tagNotFound": "Tag nicht gefunden.", + "foundChromiumVersion": "Gefunden Chromium/Chrome. Version: {0}", + "authUserInactiveOrDeleted": "Der Benutzer ist inaktiv oder gelöscht.", + "successAdded": "Erfolgreich hinzugefügt.", + "successAuthChangePassword": "Das Passwort wurde erfolgreich aktualisiert.", + "successDisabled": "Erfolgreich deaktiviert.", + "Reset Token": "Token zurücksetzen", + "leave blank for default subject": "leer lassen für Standard-Betreff", + "emailCustomBody": "Benutzerdefinierter Body", + "emailCustomisableContent": "Anpassbarer Inhalt", + "liquidIntroduction": "Die Templatierbarkeit wird durch die Liquid Templating Language erreicht. Hinweise zur Verwendung findest du auf {0}. Dies sind die verfügbaren Variablen:", + "templateLimitedToUpDownCertNotifications": "nur verfügbar für UP/DOWN/Zertifikat-Ablaufbenachrichtigungen", + "smtpLiquidIntroduction": "Die folgenden beiden Felder können mit der Liquid Templating Language angepasst werden. Eine Anleitung zur Verwendung findest du in der {0}. Dies sind die verfügbaren Variablen:", + "templateMsg": "Nachricht der Benachrichtigung", + "templateHeartbeatJSON": "Objekt, das den Heartbeat beschreibt", + "templateMonitorJSON": "Objekt zur Beschreibung des Monitors", + "templateLimitedToUpDownNotifications": "nur für UP/DOWN-Benachrichtigungen verfügbar", + "leave blank for default body": "leer lassen für Standard Body", + "emailTemplateServiceName": "Dienst Name", + "emailTemplateHostnameOrURL": "Hostname oder URL", + "emailTemplateStatus": "Status", + "emailTemplateMonitorJSON": "Objekt zur Beschreibung des Monitors", + "emailTemplateHeartbeatJSON": "Objekt, das den Heartbeat beschreibt", + "emailTemplateMsg": "Nachricht der Benachrichtigung", + "emailTemplateLimitedToUpDownNotification": "nur bei UP/DOWN-Heartbeats verfügbar, sonst null", + "GrafanaOncallUrl": "Grafana Oncall URL", + "noDockerHostMsg": "Nicht verfügbar. Richte zunächst einen Docker-Host ein.", + "DockerHostRequired": "Bitte Docker-Host für diesen Monitor festlegen.", + "Browser Screenshot": "Browser Screenshot", + "Add a new expiry notification day": "Neuen Tag für Auslaufbenachrichtigung hinzufügen", + "Remote Browsers": "Remote Browsers", + "Remote Browser": "Remote Browser", + "Add a Remote Browser": "Remote Browser hinzufügen", + "Remote Browser not found!": "Remote Browser nicht gefunden!", + "remoteBrowsersDescription": "Remote Browser sind eine Alternative zur lokalen Ausführung von Chromium. Einrichtung mit einem Dienst wie browserless.io oder verbinde mit deinem Eigenen.", + "self-hosted container": "Selbstverwalteter Container", + "remoteBrowserToggle": "Standardmässig läuft Chromium innerhalb des Uptime-Kuma Containers. Du kannst einen Remote-Browser verwenden, indem du diesen Schalter umlegst.", + "useRemoteBrowser": "Verwende einen Remote Browser", + "deleteRemoteBrowserMessage": "Bist du sicher, dass du diesen Remote Browser für alle Monitore löschen möchtest?", + "Remove the expiry notification": "Tag für Auslaufbenachrichtigung löschen", + "setup a new monitor group": "Neue Monitorgruppe einrichten", + "openModalTo": "Modal öffnen nach {0}", + "Add a domain": "Domain hinzufügen", + "Remove domain": "Domain '{0}' entfernen", + "successKeyword": "Erfolgsschlüsselwort", + "successKeywordExplanation": "MQTT-Schlüsselwort, das als Erfolg gewertet wird", + "ntfyPriorityHelptextAllExceptDown": "Alle Ereignisse werden mit dieser Priorität gesendet, ausser {0}-Ereignisse, die eine Priorität von {1} haben", + "settingUpDatabaseMSG": "Die Datenbank wird eingerichtet. Dies kann einen Moment dauern, bitte habe Geduld.", + "Search monitored sites": "Überwachte Seiten durchsuchen", + "statusPageSpecialSlugDesc": "Spezieller Slug {0}: diese Seite wird angezeigt, wenn kein Slug angegeben wird", + "ntfyPriorityHelptextAllEvents": "Alle Ereignisse werden mit der höchsten Priorität gesendet", + "What is a Remote Browser?": "Was ist ein Remote-Browser?", + "Channel access token (Long-lived)": "Channel-Token (langlebig)", + "Your User ID": "Deine Benutzer-ID", + "wayToGetHeiiOnCallDetails": "Wie man die Trigger-ID und API-Schlüssel erhält, wird in der {Dokumentation} erklärt", + "documentationOf": "{0} Dokumentation", + "From Phone Number / Transmission Path Originating Address (TPOA)": "Von Telefonnummer / Transmission Path Originating Address (TPOA)", + "To Phone Number": "Zur Telefonnummer", + "gtxMessagingToHint": "Internationales Format, mit vorangestelltem \"+\" ({e164}, {e212} oder {e214})", + "gtxMessagingApiKeyHint": "Du findest deinen API-Schlüssel unter: Meine Routing-Konten > Kontoinformationen anzeigen > API-Anmeldeinformationen > REST-API (v2.x)", + "gtxMessagingFromHint": "Auf Mobiltelefonen sieht der Empfänger die TPOA als Absender der Nachricht. Erlaubt sind bis zu 11 alphanumerische Zeichen, eine Kurzwahlnummer, die lokale Langwahlnummer oder internationale Nummern ({e164}, {e212} oder {e214})", + "Telephone number": "Telefonnummer", + "Originator": "Absender", + "cellsyntOriginator": "Sichtbar auf dem Mobiltelefon des Empfängers als Absender der Nachricht. Zulässige Werte und Funktion hängen vom Parametertyp ab.", + "Destination": "Ziel", + "Allow Long SMS": "Lange SMS zulassen", + "cellsyntSplitLongMessages": "Teile lange Nachrichten in bis zu 6 Teile. 153 x 6 = 918 Zeichen.", + "max 15 digits": "max. 15 Ziffern", + "max 11 alphanumeric characters": "max. 11 alphanumerische Zeichen", + "Originator type": "Typ des Absenders", + "Alphanumeric (recommended)": "Alphanumerisch (empfohlen)", + "cellsyntOriginatortypeAlphanumeric": "Alphanumerische Zeichenfolge (max. 11 alphanumerische Zeichen). Die Empfänger können nicht auf die Nachricht antworten.", + "cellsyntOriginatortypeNumeric": "Numerischer Wert (max. 15 Stellen) mit Telefonnummer im internationalen Format ohne Vorwahl 00 (Beispiel UK-Nummer 07920 110 000 sollte auf 447920110000 gesetzt werden). Empfänger können auf die Nachricht antworten.", + "cellsyntDestination": "Telefonnummer des Empfängers im internationalen Format mit führender 00, gefolgt von der Landesvorwahl, z. B. 00447920110000 für die britische Nummer 07920 110 000 (insgesamt maximal 17 Ziffern). Maximal 25000 kommagetrennte Empfänger pro HTTP-Anfrage.", + "callMeBotGet": "Hier kannst du einen Endpunkt für {0}, {1} und {2} generieren. Denke daran, dass der Durchsatz möglicherweise begrenzt ist. Die Durchsatzbegrenzung ist: {3}", + "whapiRecipient": "Telefonnummer / Kontakt-ID / Gruppen-ID", + "API URL": "API URL", + "wayToWriteWhapiRecipient": "Die Rufnummer mit der internationalen Vorwahl, aber ohne das Pluszeichen am Anfang ({0}), die Kontakt-ID ({1}) oder die Gruppen-ID ({2}).", + "wayToGetWhapiUrlAndToken": "Du kannst die API-URL und das Token erhalten, indem du in deinen gewünschten Channel von {0} gehst", + "locally configured mail transfer agent": "Lokal konfigurierter Mail-Transfer-Agent", + "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Gib entweder den Hostnamen des Servers ein, mit dem eine Verbindung hergestellt werden soll, oder {localhost}, wenn ein {local_mta} verwendet werden soll.", + "Mentioning": "Erwähnung", + "Don't mention people": "Keine Personen erwähnen", + "Mention group": "Erwähne {group}", + "senderSevenIO": "Absendernummer oder Name", + "receiverSevenIO": "Empfangende Nummer", + "receiverInfoSevenIO": "Wenn sich die empfangende Nummer nicht in Deutschland befindet, muss der Nummer die Landesvorwahl vorangestellt werden (z.B. für die Landesvorwahl 1 aus den USA muss 117612121212 anstelle von 017612121212 verwendet werden)", + "apiKeySevenIO": "SevenIO API Schlüssel", + "wayToGetSevenIOApiKey": "Besuche das Dashboard unter app.seven.io > Entwickler > API Schlüssel > grüne Hinzufügen Schaltfläche", + "Host URL": "Host URL", + "whatHappensAtForumPost": "Erstelle einen neuen Forumsbeitrag. Dadurch werden KEINE Nachrichten in einem bestehenden Beitrag veröffentlicht. Um einen Beitrag in einem bestehenden Beitrag zu erstellen, verwende \"{option}\"", + "Command": "Befehl", + "Bitrix24 Webhook URL": "Bitrix24 Webhook URL", + "wayToGetBitrix24Webhook": "Du kannst einen Webhook erstellen, indem du die Schritte unter {0} befolgst", + "bitrix24SupportUserID": "Gib deine User-ID in Bitrix24 ein. Du kannst die ID über den Link erfahren, indem du auf das Profil des Users gehst.", + "mongodbCommandDescription": "Führe einen MongoDB Befehl gegen die Datenbank aus. Informationen zu den verfügbaren Befehlen findest du in der {documentation}", + "Refresh Interval": "Aktualisierungsintervall", + "Refresh Interval Description": "Die Statusseite wird alle {0} Sekunden neu geladen", + "Select message type": "Nachrichtentyp auswählen", + "Send to channel": "An Kanal senden", + "Create new forum post": "Neuen Forumsbeitrag erstellen", + "postToExistingThread": "An bestehendes Thema/Forumbeitrag senden", + "forumPostName": "Name des Forumsbeitrags", + "ignoreTLSErrorGeneral": "TLS/SSL-Fehler für Verbindung ignorieren", + "threadForumPostID": "Themen-/Forumbeitrags-ID", + "e.g. {discordThreadID}": "z.B. {discordThreadID}", + "wayToGetDiscordThreadId": "Das Abrufen einer Thread-/Forumspost-ID ist ähnlich wie das Abrufen einer Channel-ID. Lese mehr darüber, wie man IDs abruft {0}", + "smspartnerApiurl": "Den API-Schlüssel findest du im Dashboard unter {0}", + "smspartnerPhoneNumber": "Telefonnummer(n)", + "smspartnerSenderName": "SMS Absender Name", + "smspartnerSenderNameInfo": "Muss zwischen 3..=11 regulären Zeichen sein", + "smspartnerPhoneNumberHelptext": "Die Nummer muss das internationale Format {0}, {1} haben. Mehrere Nummern müssen durch {2} getrennt werden", + "threemaRecipient": "Empfänger", + "threemaRecipientType": "Empfänger Typ", + "threemaRecipientTypeIdentity": "Threema-ID", + "threemaRecipientTypePhone": "Telefonnummer", + "threemaRecipientTypePhoneFormat": "E.164, ohne führendes +", + "threemaRecipientTypeEmail": "E-Mail Adresse", + "threemaSenderIdentity": "Gateway-ID", + "threemaApiAuthenticationSecret": "Gateway-ID Schlüssel", + "wayToGetThreemaGateway": "Du kannst dich für Threema Gateway {0} registrieren.", + "threemaRecipientTypeIdentityFormat": "8 Zeichen", + "threemaSenderIdentityFormat": "8 Zeichen, beginnt normalerweise mit *", + "threemaBasicModeInfo": "Hinweis: Diese Integration verwendet Threema Gateway im Basismodus (serverbasierte Verschlüsselung). Weitere Details siehe {0}.", + "apiKeysDisabledMsg": "API-Schlüssel sind deaktiviert, da die Authentifizierung deaktiviert ist.", + "Json Query Expression": "Json Query Ausdrck", + "Cannot connect to the socket server.": "Es kann keine Verbindung zum Socket-Server hergestellt werden.", + "not ends with": "endet nicht mit", + "signl4Docs": "Weitere Informationen zur Konfiguration von SIGNL4 und zum Abrufen der SIGNL4-Webhook-URL siehe {0}.", + "now": "jetzt", + "time ago": "vor {0}", + "-year": "-Jahr", + "and": "und", + "jsonQueryDescription": "Parsen und Extrahieren spezifischer Daten aus der JSON-Antwort des Servers mittels JSON-Abfrage oder Verwendung von \"$\" für die rohe Antwort, wenn kein JSON erwartet wird. Das Ergebnis wird dann mit dem erwarteten Wert in Form von Strings verglichen. Siehe {0} für die Dokumentation und verwende {1}, um mit Abfragen zu experimentieren.", + "cacheBusterParamDescription": "Zufällig generierter Parameter um den Cache zu umgehen.", + "cacheBusterParam": "Den Parameter {0} hinzufügen", + "Community String": "Gemeinschaftliche Zeichenkette", + "snmpCommunityStringHelptext": "Diese Zeichenfolge dient als Passwort zur Authentifizierung und Kontrolle des Zugriffs auf SNMP-fähigen Geräten. Pass sie an die Konfiguration des SNMP-Geräts an.", + "OID (Object Identifier)": "OID (Objekt-Identifikator)", + "Condition": "Bedingung", + "SNMP Version": "SNMP Version", + "Please enter a valid OID.": "Gib eine gültige OID ein.", + "Host Onesender": "Host Onesender", + "Token Onesender": "Token Onesender", + "Recipient Type": "Empfänger Typ", + "Private Number": "Private Nummer", + "Group ID": "Gruppen ID", + "wayToGetOnesenderUrlandToken": "Du kannst die URL und den Token auf der Onesender-Website erhalten. Weitere Infos {0}", + "Add Remote Browser": "Remote-Browser hinzufügen", + "New Group": "Neue Gruppe", + "Group Name": "Gruppenname", + "OAuth2: Client Credentials": "OAuth2: Client-Anmeldeinformationen", + "snmpOIDHelptext": "Gib die OID für den zu überwachenden Sensor oder Status ein. Verwende Netzwerkverwaltungstools wie MIB-Browser oder SNMP-Software, wenn du bezüglich OID unsicher bist.", + "privateOnesenderDesc": "Stell sicher, dass die Telefonnummer gültig ist. Um Nachrichten an private Telefonnummer zu senden, z. B.: 628123456789", + "groupOnesenderDesc": "Stell sicher, dass die GroupID gültig ist. Um Nachricht an die Gruppe zu senden, z.B.: 628123456789-342345", + "Authentication Method": "Authentifizierungsmethode", + "Authorization Header": "Autorisierungs-Header", + "Form Data Body": "Formular Data Body", + "OAuth Token URL": "OAuth Token URL", + "Client ID": "Client ID", + "Client Secret": "Client Secret", + "OAuth Scope": "OAuth Scope", + "Optional: Space separated list of scopes": "Optional: Durch Leerzeichen getrennte Liste der Scopes", + "Go back to home page.": "Zurück zur Startseite.", + "No tags found.": "Keine Tags gefunden.", + "Lost connection to the socket server.": "Verbindung zum Socket-Server verloren.", + "SIGNL4": "SIGNL4", + "SIGNL4 Webhook URL": "SIGNL4 Webhook URL", + "Conditions": "Bedingungen", + "conditionAdd": "Bedingung hinzufügen", + "conditionDelete": "Bedingung löschen", + "conditionAddGroup": "Gruppe hinzufügen", + "conditionDeleteGroup": "Gruppe löschen", + "conditionValuePlaceholder": "Wert", + "equals": "ist gleich", + "not equals": "ist nicht gleich", + "contains": "enthält", + "not contains": "enthält nicht", + "starts with": "beginnt mit", + "not starts with": "beginnt nicht mit", + "ends with": "endet mit", + "less than": "weniger als", + "greater than": "mehr als", + "less than or equal to": "kleiner als oder gleich", + "greater than or equal to": "grösser als oder gleich", + "record": "Eintrag", + "shrinkDatabaseDescriptionSqlite": "Datenbank {vacuum} für SQLite auslösen. {auto_vacuum} ist bereits aktiviert, aber dies defragmentiert die Datenbank nicht und packt auch nicht einzelne Datenbankseiten neu, wie es der Befehl {vacuum} tut." +} diff --git a/src/lang/de-DE.json b/src/lang/de-DE.json index 7b987dd20..c2ce13110 100644 --- a/src/lang/de-DE.json +++ b/src/lang/de-DE.json @@ -1,1055 +1,1055 @@ -{ - "languageName": "Deutsch", - "Settings": "Einstellungen", - "Dashboard": "Überblick", - "New Update": "Aktualisierung verfügbar", - "Language": "Sprache", - "Appearance": "Erscheinungsbild", - "Theme": "Erscheinungsbild", - "General": "Allgemein", - "Version": "Version", - "Check Update On GitHub": "Auf GitHub nach Updates suchen", - "List": "Liste", - "Home": "Home", - "Add": "Hinzufügen", - "Add New Monitor": "Neuen Monitor hinzufügen", - "Quick Stats": "Übersicht", - "Up": "Aktiv", - "Down": "Inaktiv", - "Pending": "Ausstehend", - "Unknown": "Unbekannt", - "Cannot connect to the socket server": "Es kann keine Verbindung zum Socket-Server hergestellt werden", - "Reconnecting...": "Die Verbindung wird wiederhergestellt...", - "Pause": "Pausieren", - "pauseDashboardHome": "Pausiert", - "Name": "Name", - "Status": "Status", - "DateTime": "Datum / Uhrzeit", - "Message": "Nachricht", - "No important events": "Keine wichtigen Ereignisse", - "Resume": "Fortsetzen", - "Edit": "Bearbeiten", - "Delete": "Löschen", - "Current": "Aktuell", - "Uptime": "Verfügbarkeit", - "Cert Exp.": "Zertifikatsablauf", - "day": "Tag | Tage", - "-day": "-Tage", - "hour": "Stunde", - "-hour": "-Stunden", - "checkEverySecond": "Überprüfe alle {0} Sekunden", - "Response": "Antwortzeit", - "Ping": "Ping", - "Monitor Type": "Monitor-Typ", - "Keyword": "Suchwort", - "Friendly Name": "Anzeigename", - "URL": "URL", - "Hostname": "Hostname", - "Port": "Port", - "Heartbeat Interval": "Prüfintervall", - "Retries": "Wiederholungen", - "retriesDescription": "Maximale Wiederholungen, bevor der Dienst als inaktiv markiert und eine Benachrichtigung gesendet wird", - "Advanced": "Erweitert", - "ignoreTLSError": "Ignoriere TLS-/SSL-Fehler von Webseiten", - "Upside Down Mode": "Umgekehrter Modus", - "upsideDownModeDescription": "Im umgekehrten Modus wird der Dienst als inaktiv angezeigt, wenn er erreichbar ist.", - "Max. Redirects": "Max. Weiterleitungen", - "maxRedirectDescription": "Maximale Anzahl von Weiterleitungen, denen gefolgt werden soll. Auf 0 setzen, um Weiterleitungen zu deaktivieren.", - "Accepted Status Codes": "Erlaubte HTTP-Statuscodes", - "acceptedStatusCodesDescription": "Statuscodes auswählen, die als erfolgreiche Verbindung gelten sollen.", - "Save": "Speichern", - "Notifications": "Benachrichtigungen", - "Not available, please setup.": "Nicht verfügbar, bitte einrichten.", - "Setup Notification": "Benachrichtigung einrichten", - "Light": "Hell", - "Dark": "Dunkel", - "Auto": "Auto", - "Theme - Heartbeat Bar": "Erscheinungsbild - Zeitleiste", - "Normal": "Normal", - "Bottom": "Unten", - "None": "Keine", - "Timezone": "Zeitzone", - "Search Engine Visibility": "Sichtbarkeit für Suchmaschinen", - "Allow indexing": "Indizierung zulassen", - "Discourage search engines from indexing site": "Suchmaschinen darum bitten, die Seite nicht zu indizieren", - "Change Password": "Passwort ändern", - "Current Password": "Aktuelles Passwort", - "New Password": "Neues Passwort", - "Repeat New Password": "Neues Passwort wiederholen", - "passwordNotMatchMsg": "Passwörter stimmen nicht überein.", - "Update Password": "Passwort aktualisieren", - "Disable Auth": "Authentifizierung deaktivieren", - "Enable Auth": "Authentifizierung aktivieren", - "disableauth.message1": "Bist du sicher das du die {disableAuth} möchtest?", - "disable authentication": "Authentifizierung deaktivieren", - "disableauth.message2": "Dies ist für Szenarien gedacht, {intendThirdPartyAuth} vor Uptime Kuma geschaltet hat, wie z.B. Cloudflare Access, Authelia oder andere Authentifizierungsmechanismen.", - "where you intend to implement third-party authentication": "in denen man eine externe Authentifizierung", - "Please use this option carefully!": "Bitte mit Vorsicht nutzen!", - "Logout": "Ausloggen", - "notificationDescription": "Benachrichtigungen müssen einem Monitor zugewiesen werden, damit diese funktionieren.", - "Leave": "Verlassen", - "I understand, please disable": "Ich verstehe, bitte deaktivieren", - "Confirm": "Bestätigen", - "Yes": "Ja", - "No": "Nein", - "Username": "Benutzername", - "Password": "Passwort", - "Remember me": "Angemeldet bleiben", - "Login": "Einloggen", - "No Monitors, please": "Keine Monitore, bitte", - "add one": "hinzufügen", - "Notification Type": "Benachrichtigungsdienst", - "Email": "E-Mail", - "Test": "Test", - "Certificate Info": "Zertifikatsinformation", - "keywordDescription": "Ein Suchwort in der HTML- oder JSON-Ausgabe finden. Bitte beachte: es wird zwischen Groß-/Kleinschreibung unterschieden.", - "deleteMonitorMsg": "Bist du sicher, dass du den Monitor löschen möchtest?", - "deleteNotificationMsg": "Möchtest du diese Benachrichtigung wirklich für alle Monitore löschen?", - "resolverserverDescription": "Cloudflare ist als der Standardserver festgelegt. Dieser kann jederzeit geändert werden.", - "Resolver Server": "Auflösungsserver", - "rrtypeDescription": "Wähle den RR-Typ aus, welchen du überwachen möchtest", - "Last Result": "Letztes Ergebnis", - "pauseMonitorMsg": "Bist du sicher, dass du den Monitor pausieren möchtest?", - "clearEventsMsg": "Bist du sicher, dass du alle Ereignisse für diesen Monitor löschen möchtest?", - "clearHeartbeatsMsg": "Bist du sicher, dass du alle Prüfintervalle für diesen Monitor löschen möchtest?", - "Clear Data": "Lösche Daten", - "Events": "Ereignisse", - "Heartbeats": "Prüfintervalle", - "confirmClearStatisticsMsg": "Bist du dir sicher, dass du ALLE Statistiken löschen möchtest?", - "Create your admin account": "Erstelle dein Admin-Konto", - "Repeat Password": "Passwort erneut eingeben", - "Resource Record Type": "Ressourcen Record Typ", - "Export": "Export", - "Import": "Import", - "respTime": "Antw.-Zeit (ms)", - "notAvailableShort": "N/A", - "Default enabled": "Standardmäßig aktiviert", - "Apply on all existing monitors": "Auf alle existierenden Monitore anwenden", - "enableDefaultNotificationDescription": "Für jeden neuen Monitor wird diese Benachrichtigung standardmäßig aktiviert. Die Benachrichtigung kann weiterhin für jeden Monitor separat deaktiviert werden.", - "Create": "Erstellen", - "Auto Get": "Auto Get", - "backupDescription": "Es können alle Monitore und Benachrichtigungen in einer JSON-Datei gesichert werden.", - "backupDescription2": "PS: Verlaufs- und Ereignisdaten sind nicht enthalten.", - "backupDescription3": "Sensible Daten wie Benachrichtigungstoken sind in der Exportdatei enthalten, bitte bewahre sie sorgfältig auf.", - "alertNoFile": "Bitte wähle eine Datei zum Importieren aus.", - "alertWrongFileType": "Bitte wähle eine JSON-Datei aus.", - "Clear all statistics": "Lösche alle Statistiken", - "importHandleDescription": "Wähle 'Vorhandene überspringen' aus, wenn jeder Monitor oder jede Benachrichtigung mit demselben Namen übersprungen werden soll. 'Überschreiben' löscht jeden vorhandenen Monitor sowie Benachrichtigungen.", - "Skip existing": "Vorhandene überspringen", - "Overwrite": "Überschreiben", - "Options": "Optionen", - "confirmImportMsg": "Möchtest du das Backup wirklich importieren? Bitte stelle sicher, dass die richtige Import-Option ausgewählt ist.", - "Keep both": "Beide behalten", - "twoFAVerifyLabel": "Bitte trage deinen Token ein, um zu verifizieren, dass 2FA funktioniert:", - "Verify Token": "Token verifizieren", - "Setup 2FA": "2FA einrichten", - "Enable 2FA": "2FA aktivieren", - "Disable 2FA": "2FA deaktivieren", - "2FA Settings": "2FA-Einstellungen", - "confirmEnableTwoFAMsg": "Bist du sicher, dass du 2FA aktivieren möchtest?", - "confirmDisableTwoFAMsg": "Bist du sicher, dass du 2FA deaktivieren möchtest?", - "tokenValidSettingsMsg": "Token gültig! Du kannst jetzt die 2FA-Einstellungen speichern.", - "Two Factor Authentication": "Zwei-Faktor-Authentifizierung", - "Active": "Aktiv", - "Inactive": "Inaktiv", - "Token": "Token", - "Show URI": "URI anzeigen", - "Tags": "Tags", - "Add New below or Select...": "Einen bestehenden Tag auswählen oder neuen hinzufügen…", - "Tag with this name already exist.": "Ein Tag mit diesem Namen existiert bereits.", - "Tag with this value already exist.": "Ein Tag mit diesem Wert existiert bereits.", - "color": "Farbe", - "value (optional)": "Wert (optional)", - "Gray": "Grau", - "Red": "Rot", - "Orange": "Orange", - "Green": "Grün", - "Blue": "Blau", - "Indigo": "Indigo", - "Purple": "Lila", - "Pink": "Pink", - "Search...": "Suchen…", - "Heartbeat Retry Interval": "Überprüfungsintervall", - "Resend Notification if Down X times consecutively": "Benachrichtigung erneut senden, wenn inaktiv X Mal hintereinander", - "retryCheckEverySecond": "Alle {0} Sekunden neu versuchen", - "resendEveryXTimes": "Erneut versenden alle {0} mal", - "resendDisabled": "Erneut versenden deaktiviert", - "Import Backup": "Backup importieren", - "Export Backup": "Backup exportieren", - "Avg. Ping": "Durchschn. Ping", - "Avg. Response": "Durchschn. Antwort", - "Entry Page": "Einstiegsseite", - "statusPageNothing": "Noch ist hier nichts. Bitte füge eine Gruppe oder einen Monitor hinzu.", - "No Services": "Keine Dienste", - "All Systems Operational": "Alle Systeme betriebsbereit", - "Partially Degraded Service": "Teilweise beeinträchtigter Dienst", - "Degraded Service": "Eingeschränkter Dienst", - "Add Group": "Gruppe hinzufügen", - "Add a monitor": "Monitor hinzufügen", - "Edit Status Page": "Statusseite bearbeiten", - "Go to Dashboard": "Gehe zum Dashboard", - "Status Page": "Status-Seite", - "Status Pages": "Status-Seiten", - "telegram": "Telegram", - "webhook": "Webhook", - "smtp": "E-Mail (SMTP)", - "discord": "Discord", - "teams": "Microsoft Teams", - "signal": "Signal", - "gotify": "Gotify", - "slack": "Slack", - "rocket.chat": "Rocket.chat", - "pushover": "Pushover", - "pushy": "Pushy", - "octopush": "Octopush", - "promosms": "PromoSMS", - "lunasea": "LunaSea", - "apprise": "Apprise (Unterstützung für 50+ Benachrichtigungsdienste)", - "GoogleChat": "Google Chat (nur Google Workspace)", - "pushbullet": "Pushbullet", - "line": "Line Messenger", - "mattermost": "Mattermost", - "Primary Base URL": "Primäre Basis-URL", - "Push URL": "Push URL", - "needPushEvery": "Du solltest diese URL alle {0} Sekunden aufrufen.", - "pushOptionalParams": "Optionale Parameter: {0}", - "defaultNotificationName": "Mein {notification} Alarm ({number})", - "here": "hier", - "Required": "Erforderlich", - "Bot Token": "Bot Token", - "wayToGetTelegramToken": "Hier kannst du einen Token erhalten {0}.", - "Chat ID": "Chat ID", - "supportTelegramChatID": "Unterstützt Direkt Chat / Gruppe / Kanal Chat-ID's", - "wayToGetTelegramChatID": "Du kannst deine Chat-ID erhalten, indem du eine Nachricht an den Bot sendest und zu dieser URL gehst, um die chat_id zu sehen:", - "YOUR BOT TOKEN HERE": "HIER DEIN BOT TOKEN", - "chatIDNotFound": "Chat-ID wurde nicht gefunden: bitte sende zuerst eine Nachricht an diesen Bot", - "Post URL": "Post URL", - "Content Type": "Content Type", - "webhookJsonDesc": "{0} ist gut für alle modernen HTTP-Server, wie z.B. Express.js, geeignet", - "webhookFormDataDesc": "{multipart} ist gut für PHP. Das JSON muss mit {decodeFunction} verarbeitet werden", - "secureOptionNone": "Keine / STARTTLS (25, 587)", - "secureOptionTLS": "TLS (465)", - "Ignore TLS Error": "TLS-Fehler ignorieren", - "From Email": "Absender E-Mail", - "emailCustomSubject": "Benutzerdefinierter Betreff", - "To Email": "Empfänger E-Mail", - "smtpCC": "CC", - "smtpBCC": "BCC", - "Discord Webhook URL": "Discord Webhook URL", - "wayToGetDiscordURL": "Du kannst diese erhalten, indem du zu den Servereinstellungen gehst -> Integrationen -> WebHooks anzeigen -> Neuer WebHook", - "Bot Display Name": "Bot-Anzeigename", - "Prefix Custom Message": "Benutzerdefinierter Nachrichten Präfix", - "Hello @everyone is...": "Hallo {'@'}everyone ist…", - "Webhook URL": "Webhook URL", - "wayToGetTeamsURL": "Wie eine Webhook-URL erstellt werden kann, erfährst du {0}.", - "Number": "Nummer", - "Recipients": "Empfänger", - "needSignalAPI": "Es wird ein Signal Client mit REST-API benötigt.", - "wayToCheckSignalURL": "Du kannst diese URL aufrufen, um zu sehen, wie du eine einrichtest:", - "signalImportant": "WICHTIG: Gruppen und Nummern können in Empfängern nicht gemischt werden!", - "Application Token": "Anwendungs Token", - "Server URL": "Server URL", - "Priority": "Priorität", - "Icon Emoji": "Icon Emoji", - "Channel Name": "Kanalname", - "Uptime Kuma URL": "Uptime Kuma URL", - "aboutWebhooks": "Weitere Informationen zu Webhooks auf: {0}", - "aboutChannelName": "Gebe den Kanalnamen ein in {0} Feld Kanalname, falls du den Webhook-Kanal umgehen möchtest. Ex: #other-channel", - "aboutKumaURL": "Wenn du das Feld für die Uptime Kuma URL leer lässt, wird es standardmäßig auf die Projekt-GitHub-Seite gesetzt.", - "emojiCheatSheet": "Emoji Cheat Sheet: {0}", - "User Key": "Benutzerschlüssel", - "Device": "Gerät", - "Message Title": "Nachrichtentitel", - "Notification Sound": "Benachrichtigungston", - "More info on:": "Mehr Infos auf: {0}", - "pushoverDesc1": "Notfallpriorität (2) hat standardmäßig 30 Sekunden Auszeit zwischen den Versuchen und läuft nach 1 Stunde ab.", - "pushoverDesc2": "Fülle das Geräte Feld aus, wenn du Benachrichtigungen an verschiedene Geräte senden möchtest.", - "pushoverMessageTtl": "Message TTL (Sekunden)", - "SMS Type": "SMS Typ", - "octopushTypePremium": "Premium (Schnell - zur Benachrichtigung empfohlen)", - "octopushTypeLowCost": "Kostengünstig (Langsam - manchmal vom Betreiber gesperrt)", - "checkPrice": "Prüfe {0} Preise:", - "octopushLegacyHint": "Verwendest du die Legacy-Version von Octopush (2011-2020) oder die neue Version?", - "Check octopush prices": "Vergleiche die Oktopush Preise {0}.", - "octopushPhoneNumber": "Telefonnummer (Internationales Format, z.B : +49612345678) ", - "octopushSMSSender": "Name des SMS-Absenders : 3-11 alphanumerische Zeichen und Leerzeichen (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea Geräte ID", - "Apprise URL": "Apprise URL", - "Example:": "Beispiel: {0}", - "Read more:": "Weiterlesen: {0}", - "Status:": "Status: {0}", - "Read more": "Weiterlesen", - "appriseInstalled": "Apprise ist installiert.", - "appriseNotInstalled": "Apprise ist nicht installiert. {0}", - "Access Token": "Zugriffstoken", - "Channel access token": "Kanalzugriffstoken", - "Line Developers Console": "Zeile Entwickler Konsole", - "lineDevConsoleTo": "Line Entwicklerkonsole - {0}", - "Basic Settings": "Grundeinstellungen", - "User ID": "User ID", - "Messaging API": "Messaging API", - "wayToGetLineChannelToken": "Rufe zuerst {0} auf, erstelle dann einen Provider und Channel (Messaging API). Als nächstes kannst du den Channel access token und die User ID aus den oben genannten Menüpunkten abrufen.", - "Icon URL": "Icon URL", - "aboutIconURL": "Du kannst einen Link zu einem Bild in 'Icon URL' übergeben um das Standardprofilbild zu überschreiben. Wird nicht verwendet, wenn ein Icon Emoji gesetzt ist.", - "aboutMattermostChannelName": "Du kannst den Standardkanal, auf dem der Webhook gesendet wird überschreiben, indem der Kanalnamen in das Feld 'Channel Name' eingeben wird. Dies muss in den Mattermost Webhook-Einstellungen aktiviert werden. Ex: #other-channel", - "matrix": "Matrix", - "promosmsTypeEco": "SMS ECO - billig, aber langsam und oft überladen. Auf polnische Empfänger beschränkt.", - "promosmsTypeFlash": "SMS FLASH - Die Nachricht wird automatisch auf dem Empfängergerät angezeigt. Auf polnische Empfänger beschränkt.", - "promosmsTypeFull": "SMS FULL - Premium Stufe von SMS, es kann der Absendernamen verwendet werden (Der Name musst zuerst registriert werden). Zuverlässig für Warnungen.", - "promosmsTypeSpeed": "SMS SPEED - Höchste Priorität im System. Sehr schnell und zuverlässig, aber teuer (Ungefähr das doppelte von SMS FULL).", - "promosmsPhoneNumber": "Telefonnummer (für polnische Empfänger können die Vorwahlen übersprungen werden)", - "promosmsSMSSender": "Name des SMS-Absenders : vorregistrierter Name oder einer der Standardwerte: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu Webhook URL", - "matrixHomeserverURL": "Heimserver URL (mit http(s):// und optionalen Ports)", - "Internal Room Id": "Interne Raum-ID", - "matrixDesc1": "Die interne Raum-ID findest du im erweiterten Bereich der Raumeinstellungen im Matrix-Client. Es sollte aussehen wie z.B. !QMdRCpUIfLwsfjxye6:home.server.", - "matrixDesc2": "Es wird dringend empfohlen einen neuen Benutzer anzulegen und nicht den Zugriffstoken deines eigenen Matrix-Benutzers zu verwenden. Anderenfalls ermöglicht es vollen Zugriff auf dein Konto und alle Räume, denen du beigetreten bist. Erstelle stattdessen einen neuen Benutzer und lade ihn nur in den Raum ein, in dem du die Benachrichtigung erhalten möchtest. Du kannst den Zugriffstoken erhalten, indem du Folgendes ausführst {0}", - "Method": "Methode", - "Body": "Body", - "Headers": "Header", - "PushUrl": "Push URL", - "HeadersInvalidFormat": "Der Header ist kein gültiges JSON: ", - "BodyInvalidFormat": "Der Body ist kein gültiges JSON: ", - "Monitor History": "Monitor Verlauf", - "clearDataOlderThan": "Bewahre die Monitor-Verlaufsdaten für {0} Tage auf.", - "PasswordsDoNotMatch": "Passwörter stimmen nicht überein.", - "records": "Einträge", - "One record": "Ein Eintrag", - "steamApiKeyDescription": "Um einen Steam Game Server zu überwachen, wird ein Steam Web-API-Schlüssel benötigt. Dieser kann hier registriert werden: ", - "Current User": "Aktueller Benutzer", - "recent": "Letzte", - "Done": "Fertig", - "Info": "Info", - "Security": "Sicherheit", - "Steam API Key": "Steam API-Schlüssel", - "Shrink Database": "Datenbank verkleinern", - "Pick a RR-Type...": "Wähle ein RR-Typ aus…", - "Pick Accepted Status Codes...": "Wähle akzeptierte Statuscodes aus…", - "Default": "Standard", - "HTTP Options": "HTTP Optionen", - "Create Incident": "Vorfall erstellen", - "Title": "Titel", - "Content": "Inhalt", - "Style": "Stil", - "info": "info", - "warning": "warnung", - "danger": "gefahr", - "primary": "primär", - "light": "hell", - "dark": "dunkel", - "Post": "Veröffentlichen", - "Please input title and content": "Bitte Titel und Inhalt eingeben", - "Created": "Erstellt", - "Last Updated": "Zuletzt aktualisiert", - "Unpin": "Loslösen", - "Switch to Light Theme": "Zu hellem Thema wechseln", - "Switch to Dark Theme": "Zum dunklen Thema wechseln", - "Show Tags": "Tags anzeigen", - "Hide Tags": "Tags ausblenden", - "Description": "Beschreibung", - "No monitors available.": "Keine Monitore verfügbar.", - "Add one": "Hinzufügen", - "No Monitors": "Keine Monitore", - "Untitled Group": "Gruppe ohne Titel", - "Services": "Dienste", - "Discard": "Verwerfen", - "Cancel": "Abbrechen", - "Powered by": "Erstellt mit", - "serwersms": "SerwerSMS.pl", - "serwersmsAPIUser": "API Benutzername (inkl. webapi_ prefix)", - "serwersmsAPIPassword": "API Passwort", - "serwersmsPhoneNumber": "Telefonnummer", - "serwersmsSenderName": "Name des SMS-Absenders (über Kundenportal registriert)", - "stackfield": "Stackfield", - "clicksendsms": "ClickSend SMS", - "apiCredentials": "API Zugangsdaten", - "smtpDkimSettings": "DKIM Einstellungen", - "smtpDkimDesc": "Details zur Konfiguration sind in der Nodemailer DKIM {0} zu finden.", - "documentation": "Dokumentation", - "smtpDkimDomain": "Domain Name", - "smtpDkimKeySelector": "Schlüssel Auswahl", - "smtpDkimPrivateKey": "Privater Schlüssel", - "smtpDkimHashAlgo": "Hash-Algorithmus (Optional)", - "smtpDkimheaderFieldNames": "Zu validierende Header-Schlüssel (optional)", - "smtpDkimskipFields": "Zu ignorierende Header Schlüssel (optional)", - "PushByTechulus": "Push by Techulus", - "gorush": "Gorush", - "alerta": "Alerta", - "alertaApiEndpoint": "API Endpunkt", - "alertaEnvironment": "Umgebung", - "alertaApiKey": "API Schlüssel", - "alertaAlertState": "Alarmstatus", - "alertaRecoverState": "Wiederherstellungsstatus", - "deleteStatusPageMsg": "Bist du sicher, dass du diese Status-Seite löschen willst?", - "Proxies": "Proxys", - "default": "Standard", - "enabled": "Aktiviert", - "setAsDefault": "Als Standard setzen", - "deleteProxyMsg": "Bist du sicher, dass du diesen Proxy für alle Monitore löschen willst?", - "proxyDescription": "Proxys müssen einem Monitor zugewiesen werden, um zu funktionieren.", - "enableProxyDescription": "Dieser Proxy wird keinen Effekt auf Monitor-Anfragen haben, bis er aktiviert ist. Du kannst ihn temporär von allen Monitoren nach Aktivierungsstatus deaktivieren.", - "setAsDefaultProxyDescription": "Dieser Proxy wird standardmäßig für alle neuen Monitore aktiviert sein. Du kannst den Proxy immer noch für jeden Monitor einzeln deaktivieren.", - "Certificate Chain": "Zertifikatskette", - "Valid": "Gültig", - "Invalid": "Ungültig", - "AccessKeyId": "AccessKey ID", - "SecretAccessKey": "Geheimer Zugangsschlüssel", - "PhoneNumbers": "Telefonnummern", - "TemplateCode": "Vorlagencode", - "SignName": "Signaturname", - "Sms template must contain parameters: ": "SMS Vorlage muss folgende Parameter enthalten: ", - "Bark Endpoint": "Bark Endpunkt", - "WebHookUrl": "Webhook URL", - "SecretKey": "Geheimer Schlüssel", - "For safety, must use secret key": "Zur Sicherheit muss ein geheimer Schlüssel verwendet werden", - "Device Token": "Gerätetoken", - "Platform": "Platform", - "Huawei": "Huawei", - "High": "Hoch", - "Retry": "Wiederholungen", - "Topic": "Thema", - "WeCom Bot Key": "WeCom Bot Schlüssel", - "Setup Proxy": "Proxy einrichten", - "Proxy Protocol": "Proxy Protokoll", - "Proxy Server": "Proxy-Server", - "Proxy server has authentication": "Proxy-Server hat Authentifizierung", - "User": "Benutzer", - "Installed": "Installiert", - "Not installed": "Nicht installiert", - "Running": "Läuft", - "Not running": "Gestoppt", - "Remove Token": "Token entfernen", - "Start": "Start", - "Stop": "Stop", - "Uptime Kuma": "Uptime Kuma", - "Add New Status Page": "Neue Status-Seite hinzufügen", - "Slug": "Slug", - "Accept characters:": "Akzeptierte Zeichen:", - "startOrEndWithOnly": "Nur mit {0} anfangen und enden", - "No consecutive dashes": "Keine aufeinanderfolgenden Bindestriche", - "Next": "Weiter", - "The slug is already taken. Please choose another slug.": "Der Slug ist bereits in Verwendung. Bitte wähle einen anderen.", - "No Proxy": "Kein Proxy", - "Authentication": "Authentifizierung", - "HTTP Basic Auth": "HTTP Basisauthentifizierung", - "New Status Page": "Neue Status-Seite", - "Page Not Found": "Seite nicht gefunden", - "Reverse Proxy": "Reverse Proxy", - "Backup": "Sicherung", - "About": "Über", - "wayToGetCloudflaredURL": "(Lade cloudflared von {0} herunter)", - "cloudflareWebsite": "Cloudflare Website", - "Message:": "Nachricht:", - "Don't know how to get the token? Please read the guide:": "Du weißt nicht, wie man den Token bekommt? Lies die Anleitung dazu:", - "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Die aktuelle Verbindung kann unterbrochen werden, wenn du aktuell über Cloudflare Tunnel verbunden bist. Bist du sicher, dass du es stoppen willst? Gib zur Bestätigung dein aktuelles Passwort ein.", - "Other Software": "Andere Software", - "For example: nginx, Apache and Traefik.": "Zum Beispiel: nginx, Apache und Traefik.", - "Please read": "Bitte lesen", - "Subject:": "Betreff:", - "Valid To:": "Gültig bis:", - "Days Remaining:": "Tage verbleibend:", - "Issuer:": "Aussteller:", - "Fingerprint:": "Fingerabdruck:", - "No status pages": "Keine Status-Seiten", - "Domain Name Expiry Notification": "Benachrichtigung bei Ablauf des Domainnamens", - "Customize": "Anpassen", - "Custom Footer": "Eigener Footer", - "Custom CSS": "Eigenes CSS", - "Footer Text": "Fußzeile", - "Show Powered By": "Zeige 'Powered By'", - "Date Created": "Erstellt am", - "Domain Names": "Domainnamen", - "signedInDisp": "Angemeldet als {0}", - "signedInDispDisabled": "Authentifizierung deaktiviert.", - "dnsPortDescription": "DNS Server Port. Standard ist 53. Der Port kann jederzeit geändert werden.", - "topic": "Thema", - "topicExplanation": "MQTT Thema für den monitor", - "successMessage": "Erfolgsnachricht", - "successMessageExplanation": "MQTT Nachricht, die als Erfolg angesehen wird", - "error": "Fehler", - "critical": "kritisch", - "wayToGetPagerDutyKey": "Dieser kann unter Service -> Service Directory -> (Select a service) -> Integrations -> Add integration gefunden werden. Hier muss nach \"Events API V2\" gesucht werden. Mehr informationen {0}", - "Integration Key": "Schlüssel der Integration", - "Integration URL": "URL der Integration", - "Auto resolve or acknowledged": "Automatisch lösen oder bestätigen", - "do nothing": "nichts tun", - "auto acknowledged": "automatisch bestätigen", - "auto resolve": "automatisch lösen", - "Bark Group": "Bark Gruppe", - "Bark Sound": "Bark Klang", - "HTTP Headers": "HTTP Kopfzeilen", - "Trust Proxy": "Vertrauenswürdiger Proxy", - "Proxy": "Proxy", - "HomeAssistant": "Home Assistant", - "onebotHttpAddress": "OneBot HTTP Adresse", - "onebotMessageType": "OneBot Nachrichtentyp", - "onebotGroupMessage": "Gruppe", - "onebotPrivateMessage": "Privat", - "onebotUserOrGroupId": "Gruppe/Nutzer ID", - "onebotSafetyTips": "Zur Sicherheit ein access token setzen", - "PushDeer Key": "PushDeer Schlüssel", - "RadiusSecret": "Radius Geheimnis", - "RadiusSecretDescription": "Geteiltes Geheimnis zwischen Client und Server", - "RadiusCalledStationId": "ID der angesprochenen Station", - "RadiusCalledStationIdDescription": "Identifikation des angesprochenen Geräts", - "RadiusCallingStationId": "ID der ansprechenden Station", - "RadiusCallingStationIdDescription": "Identifikation des ansprechenden Geräts", - "Certificate Expiry Notification": "Benachrichtigung ablaufendes Zertifikat", - "API Username": "API Nutzername", - "API Key": "API Schlüssel", - "Recipient Number": "Empfängernummer", - "From Name/Number": "Von Name/Nummer", - "Leave blank to use a shared sender number.": "Leer lassen um eine geteilte Absendernummer zu nutzen.", - "Octopush API Version": "Octopush API Version", - "Legacy Octopush-DM": "Legacy Octopush-DM", - "endpoint": "Endpunkt", - "octopushAPIKey": "\"API Schlüssel\" der HTTP API Zugangsdaten im control panel", - "octopushLogin": "\"Login\" der HTTP API Zugangsdaten im control panel", - "promosmsLogin": "API Login Name", - "promosmsPassword": "API Password", - "pushoversounds pushover": "Pushover (Standard)", - "pushoversounds bike": "Fahrrad", - "pushoversounds bugle": "Signalhorn", - "pushoversounds cashregister": "Kasse", - "pushoversounds classical": "Klassisch", - "pushoversounds cosmic": "Kosmisch", - "pushoversounds falling": "Abfallend", - "pushoversounds gamelan": "Gamelan", - "pushoversounds incoming": "Eingang", - "pushoversounds intermission": "Pause", - "pushoversounds magic": "Magisch", - "pushoversounds mechanical": "Mechanisch", - "pushoversounds pianobar": "Piano Bar", - "pushoversounds siren": "Sirene", - "pushoversounds spacealarm": "Space Alarm", - "pushoversounds tugboat": "Schlepper Horn", - "pushoversounds alien": "Außerirdisch (lang)", - "pushoversounds climb": "Ansteigende (lang)", - "pushoversounds persistent": "Hartnäckig (lang)", - "pushoversounds echo": "Pushover Echo (lang)", - "pushoversounds updown": "Auf und Ab (lang)", - "pushoversounds vibrate": "Nur vibrieren", - "pushoversounds none": "Nichts (Stille)", - "pushyAPIKey": "Geheimer API Schlüssel", - "pushyToken": "Gerätetoken", - "Show update if available": "Verfügbare Updates anzeigen", - "Also check beta release": "Auch nach Beta Versionen schauen", - "Using a Reverse Proxy?": "Wird ein Reverse Proxy genutzt?", - "Check how to config it for WebSocket": "Prüfen, wie er für die Nutzung mit WebSocket konfiguriert wird", - "Steam Game Server": "Steam Spielserver", - "Most likely causes:": "Wahrscheinliche Ursachen:", - "The resource is no longer available.": "Die Quelle ist nicht mehr verfügbar.", - "There might be a typing error in the address.": "Es gibt einen Tippfehler in der Adresse.", - "What you can try:": "Was du versuchen kannst:", - "Retype the address.": "Schreibe die Adresse erneut.", - "Go back to the previous page.": "Gehe zur vorigen Seite.", - "Coming Soon": "Kommt bald", - "wayToGetClickSendSMSToken": "Du kannst einen API Nutzernamen und Schlüssel unter {0} erhalten.", - "Connection String": "Verbindungstext", - "Query": "Abfrage", - "settingsCertificateExpiry": "TLS Zertifikatsablauf", - "certificationExpiryDescription": "HTTPS Monitore senden eine Benachrichtigung, wenn das Zertifikat abläuft in:", - "Setup Docker Host": "Docker Host einrichten", - "Connection Type": "Verbindungstyp", - "Docker Daemon": "Docker Daemon", - "deleteDockerHostMsg": "Bist du sicher diesen docker host für alle Monitore zu löschen?", - "socket": "Socket", - "tcp": "TCP / HTTP", - "Docker Container": "Docker Container", - "Container Name / ID": "Container-Bezeichnung / ID", - "Docker Host": "Docker-Host", - "Docker Hosts": "Docker-Hosts", - "ntfy Topic": "ntfy Thema", - "Domain": "Domain", - "Workstation": "Workstation", - "disableCloudflaredNoAuthMsg": "Du bist im nicht-authentifizieren Modus, ein Passwort wird nicht benötigt.", - "trustProxyDescription": "Vertraue 'X-Forwarded-*' headern. Wenn man die richtige Client IP haben möchte und Uptime Kuma hinter einem Proxy wie Nginx oder Apache läuft, sollte dies aktiviert werden.", - "wayToGetLineNotifyToken": "Du kannst hier ein Token erhalten: {0}", - "Examples": "Beispiele", - "Home Assistant URL": "Heimassistent-URL", - "Long-Lived Access Token": "Lange gültiges Access Token", - "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Lange gültige Access Token können durch klicken auf den Profilnamen (unten links) und dann einen Klick auf Create Token am Ende erstellt werden. ", - "Notification Service": "Benachrichtigungsdienst", - "default: notify all devices": "standard: Alle Geräte benachrichtigen", - "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Eine Liste der Benachrichtigungsdienste kann im Home Assistant unter \"Developer Tools > Services\" gefunden werden, wnen man nach \"notification\" sucht um den Geräte-/Telefonnamen zu finden.", - "Automations can optionally be triggered in Home Assistant:": "Automatisierungen können optional im Home Assistant ausgelöst werden:", - "Trigger type:": "Auslöser:", - "Event type:": "Ereignistyp:", - "Event data:": "Ereignis daten:", - "Then choose an action, for example switch the scene to where an RGB light is red.": "Dann eine Aktion wählen, zum Beispiel eine Scene wählen in der ein RGB Licht rot ist.", - "Frontend Version": "Frontend-Version", - "Frontend Version do not match backend version!": "Die Frontend Version stimmt nicht mit der backend version überein!", - "Maintenance": "Wartung", - "statusMaintenance": "Wartung", - "Schedule maintenance": "Geplante Wartung", - "Affected Monitors": "Betroffene Monitore", - "Pick Affected Monitors...": "Wähle betroffene Monitore…", - "Start of maintenance": "Beginn der Wartung", - "All Status Pages": "Alle Status Seiten", - "Select status pages...": "Statusseiten auswählen…", - "recurringIntervalMessage": "Einmal pro Tag ausgeführt | Wird alle {0} Tage ausgführt", - "affectedMonitorsDescription": "Wähle Monitore aus, die von der aktuellen Wartung betroffen sind", - "affectedStatusPages": "Diese Wartungsmeldung auf ausgewählten Statusseiten anzeigen", - "atLeastOneMonitor": "Wähle mindestens einen Monitor", - "deleteMaintenanceMsg": "Möchtest du diese Wartung löschen?", - "Base URL": "Basis URL", - "goAlertInfo": "GoAlert ist eine Open-Source Applikation für Rufbereitschaftsplanung, automatische Eskalation und Benachrichtigung (z.B. SMS oder Telefonanrufe). Engagiere automatisch die richtige Person, auf die richtige Art und Weise und zum richtigen Zeitpunkt! {0}", - "goAlertIntegrationKeyInfo": "Bekommt einen generischen API Schlüssel in folgenden Format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\". Normalerweise entspricht dies dem Wert des Token aus der URL.", - "goAlert": "GoAlert", - "backupOutdatedWarning": "Veraltet: Da viele Funktionen hinzugefügt wurden und diese Sicherungsfunktion nicht mehr gepflegt wird, kann keine vollständige Sicherung erstellen oder wiederherstellen werden.", - "backupRecommend": "Bitte sichere stattdessen das Volume oder den Datenordner (./data/) direkt.", - "Optional": "Optional", - "squadcast": "Squadcast", - "SendKey": "SendKey", - "SMSManager API Docs": "SMSManager API Dokumente ", - "Gateway Type": "Gateway Typ", - "SMSManager": "SMSManager", - "You can divide numbers with": "Du kannst Zahlen teilen mit", - "or": "oder", - "recurringInterval": "Intervall", - "Recurring": "Wiederkehrend", - "Single Maintenance Window": "Einmaliges Wartungsfenster", - "Maintenance Time Window of a Day": "Zeitfenster für die Wartung", - "Effective Date Range": "Bereich der Wirksamkeitsdaten (Optional)", - "strategyManual": "Aktiv/Inaktiv Manuell", - "warningTimezone": "Es wird die Zeitzone des Servers verwendet", - "weekdayShortMon": "Mo", - "weekdayShortTue": "Di", - "weekdayShortWed": "Mi", - "weekdayShortThu": "Do", - "weekdayShortFri": "Fr", - "weekdayShortSat": "Sa", - "weekdayShortSun": "So", - "dayOfWeek": "Tag der Woche", - "dayOfMonth": "Tag im Monat", - "lastDay": "Letzter Tag", - "lastDay1": "Letzter Tag im Monat", - "lastDay2": "Vorletzer Tag im Monat", - "lastDay3": "3. letzter Tag im Monat", - "lastDay4": "4. letzter Tag im Monat", - "No Maintenance": "Keine Wartung", - "Schedule Maintenance": "Wartung planen", - "Edit Maintenance": "Wartung bearbeiten", - "pauseMaintenanceMsg": "Möchtest du wirklich pausieren?", - "maintenanceStatus-under-maintenance": "In Wartung", - "maintenanceStatus-inactive": "Inaktiv", - "maintenanceStatus-scheduled": "Geplant", - "maintenanceStatus-ended": "Ende", - "maintenanceStatus-unknown": "Unbekannt", - "Display Timezone": "Zeitzone anzeigen", - "Server Timezone": "Server Zeitzone", - "Date and Time": "Datum und Zeit", - "DateTime Range": "Datums- und Zeitbereich", - "Strategy": "Strategie", - "statusPageMaintenanceEndDate": "Ende", - "Help": "Hilfe", - "Game": "Spiel", - "Custom": "Benutzerdefiniert", - "Enable DNS Cache": "(Veraltet) DNS-Cache für HTTP(s)-Monitore aktivieren", - "Enable": "Aktivieren", - "Disable": "Deaktivieren", - "Custom Monitor Type": "Benutzerdefinierter Monitortyp", - "webhookAdditionalHeadersDesc": "Legt zusätzliche Kopfzeilen fest, die mit dem Webhook gesendet werden. Jede Kopfzeile sollte als JSON Schlüssel/Wert definiert werden.", - "dnsCacheDescription": "In einigen IPv6-Umgebungen funktioniert es möglicherweise nicht. Deaktiviere es, wenn Probleme auftreten.", - "loadingError": "Die Daten konnten nicht abgerufen werden, bitte später noch einmal versuchen.", - "confirmUninstallPlugin": "Möchtest du dieses Plugin wirklich deinstallieren?", - "grpcMethodDescription": "Der Name der Methode wird in das \"camelCase\"-Format konvertiert z.B. sayHello, check, etc.", - "Passive Monitor Type": "Passiver Monitortyp", - "Specific Monitor Type": "Spezifischer Monitortyp", - "webhookAdditionalHeadersTitle": "Zusätzliche Header", - "Packet Size": "Paketgröße", - "IconUrl": "Symbol-URL", - "wayToGetZohoCliqURL": "Wie eine Webhook URL erstellt werden kann, erfährst du {0}.", - "dataRetentionTimeError": "Aufbewahrungszeit muss 0 oder größer sein", - "infiniteRetention": "Für unendliche Aufbewahrung auf 0 setzen.", - "confirmDeleteTagMsg": "Möchtest du dieses Tag wirklich löschen? Monitore, die mit diesem Tag verknüpft sind, werden nicht gelöscht.", - "enableGRPCTls": "Senden von gRPC-Anforderungen mit TLS-Verbindung zulassen", - "ZohoCliq": "ZohoCliq", - "Monitor": "Überwachung | Monitore", - "plugin": "Plugin | Plugins", - "install": "Installieren", - "installing": "Installiere", - "uninstall": "Deinstallieren", - "uninstalling": "Deinstallation", - "markdownSupported": "Markdown-Syntax unterstützt", - "wayToGetKookBotToken": "Erstelle eine Anwendung und erhalte den Bot-Token unter {0}", - "wayToGetKookGuildID": "Schalte den „Entwicklermodus“ in den Kook-Einstellungen ein und klicke mit der rechten Maustaste auf die Gilde, um die ID zu erhalten", - "Guild ID": "Guild-ID", - "Free Mobile User Identifier": "Kostenlose mobile Benutzerkennung", - "Free Mobile API Key": "Kostenloser Mobile API-Schlüssel", - "Enable TLS": "Aktiviere TLS", - "Proto Service Name": "Name des Proto-Dienstes", - "Proto Method": "Proto-Methode", - "Proto Content": "Proto-Inhalt", - "Economy": "Wirtschaft", - "Lowcost": "Kostengünstig", - "high": "hoch", - "promosmsAllowLongSMS": "Erlaube lange SMS", - "General Monitor Type": "Allgemeiner Monitortyp", - "smseagle": "SMSEagle", - "smseagleTo": "Telefonnummer(n)", - "smseagleGroup": "Telefonbuch Gruppenname(n)", - "smseagleContact": "Telefonbuch Kontaktname(n)", - "smseagleRecipientType": "Empfängertyp", - "smseagleRecipient": "Empfänger (mehrere müssen durch Komma getrennt werden)", - "smseagleToken": "API-Zugriffstoken", - "smseagleUrl": "Ihre SMSEagle-Geräte-URL", - "Kook": "Kook", - "smseagleEncoding": "Als Unicode senden", - "smseaglePriority": "Nachrichtenpriorität (0-9, Standard = 0)", - "Google Analytics ID": "Google Analytics ID", - "Edit Tag": "bearbeite Tag", - "Server Address": "Server Adresse", - "Learn More": "Erfahre mehr", - "Body Encoding": "Inhaltskodierung", - "Add API Key": "API Schlüssel hinzufügen", - "apiKey-active": "Aktiv", - "apiKey-expired": "Abgelaufen", - "apiKey-inactive": "Inaktiv", - "Expires": "Läuft ab", - "deleteAPIKeyMsg": "Bist du sicher, dass du diesen API Schlüssel löschen willst?", - "Generate": "Generieren", - "API Keys": "API Schlüssel", - "Expiry": "Ablauf", - "Expiry date": "Ablaufdatum", - "Don't expire": "Nicht ablaufen", - "Continue": "Weiter", - "Add Another": "Hinzufügen", - "Clone Monitor": "Duplikat von", - "Clone": "Duplizieren", - "cloneOf": "Duplikat von {0}", - "pagertreeIntegrationUrl": "Integrations URL", - "pagertreeUrgency": "Dringlichkeit", - "pagertreeSilent": "Leise", - "pagertreeLow": "Niedrig", - "pagertreeMedium": "Medium", - "pagertreeHigh": "Hoch", - "pagertreeCritical": "Kritisch", - "pagertreeResolve": "Automatisch Auflösen", - "No API Keys": "Keine API Schlüssel", - "disableAPIKeyMsg": "Bist du sicher, dass du diesen API Schlüssel deaktivieren willst?", - "pagertreeDoNothing": "Nichts tun", - "wayToGetPagerTreeIntegrationURL": "Nachdem du die Uptime Kuma Integration in PagerTree erstellt hast, kopiere den Endpunkt. Siehe details {0}", - "telegramProtectContent": "Schütze gegen Weiterleiten/Speichern der Nachricht", - "telegramProtectContentDescription": "Die Bot-Nachrichten in Telegram sind gegen Weiterleitung und Speichern geschützt.", - "notificationRegional": "Regional", - "Key Added": "Schlüssel hinzugefügt", - "apiKeyAddedMsg": "API Schlüssel wurde hinzugefügt. Bitte notiere den Schlüssel, da er nicht erneut angezeigt wird.", - "telegramMessageThreadID": "(Optional) Nachrichten Thread ID", - "telegramMessageThreadIDDescription": "Optionale eindeutige Kennung für den Ziel-Thread (Thema) des Forums; nur für Forum-Supergroups", - "telegramSendSilently": "Stumm Senden", - "telegramSendSilentlyDescription": "Sende die Nachricht stumm. Nutzer bekommen eine Benachrichtigung ohne Ton.", - "Add New Tag": "Neuen Tag hinzufügen", - "lunaseaDeviceID": "Geräte-ID", - "lunaseaTarget": "Ziel", - "lunaseaUserID": "Benutzer-ID", - "ntfyAuthenticationMethod": "Authentifizierungsmethode", - "ntfyUsernameAndPassword": "Benutzername und Passwort", - "twilioAccountSID": "Account SID", - "twilioFromNumber": "Absender", - "twilioToNumber": "Empfänger", - "twilioAuthToken": "Auth Token / API Key Secret", - "statusPageRefreshIn": "Aktualisierung in: {0}", - "sameAsServerTimezone": "Gleiche Zeitzone wie Server", - "startDateTime": "Start Datum/Uhrzeit", - "endDateTime": "Ende Datum/Uhrzeit", - "cronExpression": "Cron-Ausdruck", - "cronSchedule": "Zeitplan: ", - "invalidCronExpression": "Ungültiger Cron-Ausdruck: {0}", - "Show Clickable Link": "Klickbaren Link anzeigen", - "Open Badge Generator": "Abzeichengenerator öffnen", - "Badge Generator": "{0}'s Abzeichen Generator", - "Badge Type": "Abzeichen Typ", - "Badge Duration": "Badge Dauer", - "Badge Label": "Abzeichen Label", - "Show Clickable Link Description": "Wenn diese Option aktiviert ist, kann jeder, der Zugriff auf diese Statusseite hat, auf die Monitor-URL zugreifen.", - "Badge Label Color": "Abzeichen Label Farbe", - "Badge Color": "Abzeichen Farbe", - "Badge Label Prefix": "Abzeichen Label Präfix", - "Badge Label Suffix": "Abzeichen Label Suffix", - "Badge Maintenance Color": "Abzeichen Wartung Farbe", - "Badge Warn Color": "Abzeichen Warnung Farbe", - "Badge Style": "Abzeichen Stil", - "Badge value (For Testing only.)": "Abzeichen Wert (nur für Tests)", - "Badge URL": "Abzeichen URL", - "Badge Up Color": "Abzeichen Up Farbe", - "Badge Down Color": "Abzeichen Down Farbe", - "Badge Pending Color": "Abzeichen Pending Farbe", - "Badge Down Days": "Abzeichen Down Tage", - "Monitor Setting": "{0}'s Monitor Einstellung", - "Badge Prefix": "Abzeichen Wert Präfix", - "Badge Suffix": "Abzeichen Wert Suffix", - "Badge Warn Days": "Abzeichen Warnung Tage", - "Group": "Gruppe", - "Monitor Group": "Monitor Gruppe", - "noGroupMonitorMsg": "Nicht verfügbar. Erstelle zunächst einen Gruppenmonitor.", - "Close": "Schließen", - "chromeExecutableAutoDetect": "Automatische Erkennung", - "chromeExecutableDescription": "Für Docker-Benutzer, die Chromium noch nicht installiert haben, kann es ein paar Minuten dauern, bis es installiert ist und das Testergebnis angezeigt wird. Es benötigt 1 GB Speicherplatz.", - "chromeExecutable": "Chrome/Chromium Ausführbare Datei", - "Invert Keyword": "Schlüsselwort invertieren", - "invertKeywordDescription": "Achte darauf, dass das Schlüsselwort eher fehlt als vorhanden ist.", - "webhookCustomBodyDesc": "Definiere einen benutzerdefinierten HTTP-Body für die Anfrage. Die Template-Variablen {msg}, {heartbeat} und {monitor} werden akzeptiert.", - "webhookBodyPresetOption": "Voreinstellung - {0}", - "webhookBodyCustomOption": "Benutzerdefinierter Body", - "Request Body": "Anforderungstext", - "Badge Duration (in hours)": "Abzeichen Dauer (in Stunden)", - "Badge Preview": "Abzeichen Vorschau", - "twilioApiKey": "API-Schlüssel (optional)", - "Notify Channel": "Notify Kanal", - "Enter the list of brokers": "Gib die Liste der Broker ein", - "Kafka Topic Name": "Kafka Topic Name", - "Kafka Producer Message": "Kafka Producer Nachricht", - "Enable Kafka SSL": "Kafka SSL aktivieren", - "Enable Kafka Producer Auto Topic Creation": "Kafka Producer Auto Topic Creation aktivieren", - "Kafka SASL Options": "Kafka SASL Optionen", - "Mechanism": "Mechanismus", - "Pick a SASL Mechanism...": "Wähle ein SASL Mechanismus…", - "Authorization Identity": "Authorization Identity", - "AccessKey Id": "AccessKey Id", - "Secret AccessKey": "Geheimer Zugriffsschlüssel", - "Session Token": "Sitzungs-Token", - "aboutNotifyChannel": "Notify Kanal löst eine Desktop- oder Mobilbenachrichtigung für alle Mitglieder des Kanals aus, unabhängig davon, ob deine Verfügbarkeit auf aktiv oder abwesend eingestellt ist.", - "Kafka Brokers": "Kafka Brokers", - "Press Enter to add broker": "Drücke Enter um den Broker hinzuzufügen", - "filterActive": "Aktiv", - "filterActivePaused": "Pausiert", - "Expected Value": "Erwarteter Wert", - "Json Query": "Json-Abfrage", - "tailscalePingWarning": "Um den Tailscale Ping Monitor nutzen zu können, musst du Uptime Kuma ohne Docker installieren und den Tailscale Client auf dem Server installieren.", - "Server URL should not contain the nfty topic": "Die Server-URL sollte das nfty-Thema nicht enthalten", - "pushDeerServerDescription": "Leer lassen um den offiziellen Server zu verwenden", - "FlashDuty Severity": "Schweregrad", - "nostrRelays": "Nostr Relays", - "gamedigGuessPort": "Gamedig: Vermuteter Port", - "Request Timeout": "Zeitüberschreitung der Anfrage", - "styleElapsedTimeShowNoLine": "Anzeigen (keine Zeile)", - "Select": "Auswählen", - "selectedMonitorCount": "Ausgewählt: {0}", - "PushDeer Server": "PushDeer Server", - "nostrRelaysHelp": "Eine Relay-URL pro Zeile", - "nostrSender": "Privater Schlüssel des Absenders (nsec)", - "gamedigGuessPortDescription": "Der vom Valve Server Query Protocol verwendete Port kann sich vom Port des Clients unterscheiden. Versuche dies, wenn der Monitor keine Verbindung zum Server herstellen kann.", - "wayToGetFlashDutyKey": "Gehe zu Channel -> (Wähle einen Channel) -> Integrationen -> Neue Integration hinzufügen', füge ein 'Uptime Kuma' hinzu, um eine Push-Adresse zu erhalten, und kopiere den Integrationsschlüssel in die Adresse. Für weitere Informationen besuche", - "timeoutAfter": "Zeitüberschreitung nach {0} Sekunden", - "styleElapsedTimeShowWithLine": "Anzeigen (mit Zeile)", - "styleElapsedTime": "Verstrichene Zeit unter der Prüfintervallleiste", - "Check/Uncheck": "Aktivieren/Deaktivieren", - "nostrRecipients": "Öffentliche Schlüssel des Empfängers (npub)", - "nostrRecipientsHelp": "npub-Format, eine pro Zeile", - "showCertificateExpiry": "Ablauf des Zertifikats anzeigen", - "noOrBadCertificate": "Kein/schlechtes Zertifikat", - "enableNSCD": "Aktiviere NSCD (Name Service Cache Daemon) zur Zwischenspeicherung aller DNS-Anfragen", - "setupDatabaseChooseDatabase": "Welche Datenbank möchtest du verwenden?", - "setupDatabaseEmbeddedMariaDB": "Du brauchst nichts einzustellen. Dieses Docker-Image hat automatisch eine MariaDB für dich eingerichtet und konfiguriert. Uptime Kuma wird sich mit dieser Datenbank über einen Unix-Socket verbinden.", - "dbName": "Datenbank Name", - "setupDatabaseMariaDB": "Mit externer MariaDB-Datenbank verbinden. Du musst die Verbindungsinformationen für die Datenbank festlegen.", - "setupDatabaseSQLite": "Eine einfache Datenbankdatei, empfohlen für kleinere Bereitstellungen. Vor v2.0.0 verwendete Uptime Kuma SQLite als Standarddatenbank.", - "Saved.": "Gespeichert.", - "toastSuccessTimeout": "Zeitüberschreitung für Erfolgsbenachrichtigungen", - "toastErrorTimeout": "Zeitüberschreitung für Fehlerbenachrichtigungen", - "monitorToastMessagesLabel": "Toast-Benachrichtigungen überwachen", - "monitorToastMessagesDescription": "Toast-Benachrichtigungen für Monitore verschwinden nach einer bestimmten Zeit in Sekunden. Auf -1 setzen, um die Zeitüberschreitung zu deaktivieren. Der Wert 0 deaktiviert die Toast-Benachrichtigungen.", - "Bark API Version": "Bark API Version", - "pushViewCode": "Wie verwendet man den Push-Monitor? (Code anzeigen)", - "pushOthers": "Sonstige", - "programmingLanguages": "Programmiersprachen", - "authInvalidToken": "Ungültiges Token.", - "authIncorrectCreds": "Falscher Benutzername oder falsches Passwort.", - "2faAlreadyEnabled": "2FA ist bereits aktiviert.", - "2faEnabled": "2FA ist aktiviert.", - "2faDisabled": "2FA ist deaktiviert.", - "successResumed": "Erfolgreich wiederaufgenommen.", - "successPaused": "Erfolgreich pausiert.", - "successDeleted": "Erfolgreich gelöscht.", - "successEdited": "Erfolgreich bearbeitet.", - "successBackupRestored": "Sicherung erfolgreich wiederhergestellt.", - "successDisabled": "Erfolgreich deaktiviert.", - "successEnabled": "Erfolgreich aktiviert.", - "tagNotFound": "Tag nicht gefunden.", - "authUserInactiveOrDeleted": "Der Benutzer ist inaktiv oder gelöscht.", - "successAdded": "Erfolgreich hinzugefügt.", - "successAuthChangePassword": "Das Passwort wurde erfolgreich aktualisiert.", - "foundChromiumVersion": "Gefunden Chromium/Chrome. Version: {0}", - "Reset Token": "Token zurücksetzen", - "leave blank for default subject": "leer lassen für Standard-Betreff", - "emailCustomBody": "Benutzerdefinierter Body", - "leave blank for default body": "leer lassen für Standard Body", - "emailTemplateServiceName": "Dienst Name", - "emailTemplateStatus": "Status", - "emailTemplateMsg": "Nachricht der Benachrichtigung", - "liquidIntroduction": "Die Templatierbarkeit wird durch die Liquid Templating Language erreicht. Hinweise zur Verwendung findest du auf {0}. Dies sind die verfügbaren Variablen:", - "emailCustomisableContent": "Anpassbarer Inhalt", - "smtpLiquidIntroduction": "Die folgenden beiden Felder können mit der Liquid Templating Language angepasst werden. Eine Anleitung zur Verwendung findest du in der {0}. Dies sind die verfügbaren Variablen:", - "emailTemplateHostnameOrURL": "Hostname oder URL", - "emailTemplateLimitedToUpDownNotification": "nur bei UP/DOWN-Heartbeats verfügbar, sonst null", - "templateMsg": "Nachricht der Benachrichtigung", - "templateHeartbeatJSON": "Objekt, das den Heartbeat beschreibt", - "templateMonitorJSON": "Objekt zur Beschreibung des Monitors", - "templateLimitedToUpDownCertNotifications": "nur verfügbar für UP/DOWN/Zertifikat-Ablaufbenachrichtigungen", - "templateLimitedToUpDownNotifications": "nur für UP/DOWN-Benachrichtigungen verfügbar", - "emailTemplateMonitorJSON": "Objekt zur Beschreibung des Monitors", - "emailTemplateHeartbeatJSON": "Objekt, das den Heartbeat beschreibt", - "GrafanaOncallUrl": "Grafana Oncall URL", - "noDockerHostMsg": "Nicht verfügbar. Richte zunächst einen Docker-Host ein.", - "DockerHostRequired": "Bitte Docker-Host für diesen Monitor festlegen.", - "Browser Screenshot": "Browser Screenshot", - "setup a new monitor group": "Neue Monitorgruppe einrichten", - "Add a new expiry notification day": "Neuen Tag für Auslaufbenachrichtigung hinzufügen", - "Remote Browsers": "Remote Browser", - "Remote Browser": "Remote Browser", - "Add a Remote Browser": "Remote Browser hinzufügen", - "Remote Browser not found!": "Remote Browser nicht gefunden!", - "remoteBrowsersDescription": "Remote Browser sind eine Alternative zur lokalen Ausführung von Chromium. Einrichtung mit einem Dienst wie browserless.io oder verbinde mit deinem Eigenen", - "self-hosted container": "Selbstverwalteter Container", - "remoteBrowserToggle": "Standardmäßig läuft Chromium innerhalb des Uptime-Kuma-Containers. Du kannst einen Remote-Browser verwenden, indem du diesen Schalter umlegst.", - "useRemoteBrowser": "Verwende einen Remote Browser", - "deleteRemoteBrowserMessage": "Bist du sicher, dass du diesen Remote Browser für alle Monitore löschen möchtest?", - "Remove the expiry notification": "Tag für Auslaufbenachrichtigung löschen", - "openModalTo": "Modal öffnen nach {0}", - "Add a domain": "Domain hinzufügen", - "Remove domain": "Domain '{0}' entfernen", - "successKeyword": "Erfolgsschlüsselwort", - "successKeywordExplanation": "MQTT-Schlüsselwort, das als Erfolg gewertet wird", - "settingUpDatabaseMSG": "Die Datenbank wird eingerichtet. Dies kann einen Moment dauern, bitte habe Geduld.", - "Search monitored sites": "Überwachte Seiten durchsuchen", - "statusPageSpecialSlugDesc": "Spezieller Slug {0}: diese Seite wird angezeigt, wenn kein Slug angegeben wird", - "ntfyPriorityHelptextAllEvents": "Alle Ereignisse werden mit der höchsten Priorität gesendet", - "ntfyPriorityHelptextAllExceptDown": "Alle Ereignisse werden mit dieser Priorität gesendet, außer {0}-Ereignisse, die eine Priorität von {1} haben", - "What is a Remote Browser?": "Was ist ein Remote-Browser?", - "Channel access token (Long-lived)": "Channel-Token (langlebig)", - "Your User ID": "Deine Benutzer-ID", - "wayToGetHeiiOnCallDetails": "Wie man die Trigger-ID und API-Schlüssel erhält, wird in der {Dokumentation} erklärt", - "documentationOf": "{0} Dokumentation", - "gtxMessagingToHint": "Internationales Format, mit vorangestelltem \"+\" ({e164}, {e212} oder {e214})", - "From Phone Number / Transmission Path Originating Address (TPOA)": "Von Telefonnummer / Transmission Path Originating Address (TPOA)", - "To Phone Number": "Zur Telefonnummer", - "gtxMessagingApiKeyHint": "Du findest deinen API-Schlüssel unter: Meine Routing-Konten > Kontoinformationen anzeigen > API-Anmeldeinformationen > REST-API (v2.x)", - "gtxMessagingFromHint": "Auf Mobiltelefonen sieht der Empfänger die TPOA als Absender der Nachricht. Erlaubt sind bis zu 11 alphanumerische Zeichen, eine Kurzwahlnummer, die lokale Langwahlnummer oder internationale Nummern ({e164}, {e212} oder {e214})", - "Alphanumeric (recommended)": "Alphanumerisch (empfohlen)", - "Telephone number": "Telefonnummer", - "Originator": "Absender", - "cellsyntOriginator": "Sichtbar auf dem Mobiltelefon des Empfängers als Absender der Nachricht. Zulässige Werte und Funktion hängen vom Parametertyp ab.", - "Destination": "Ziel", - "Allow Long SMS": "Lange SMS zulassen", - "cellsyntSplitLongMessages": "Teile lange Nachrichten in bis zu 6 Teile. 153 x 6 = 918 Zeichen.", - "max 15 digits": "max. 15 Ziffern", - "max 11 alphanumeric characters": "max. 11 alphanumerische Zeichen", - "Originator type": "Typ des Absenders", - "cellsyntOriginatortypeAlphanumeric": "Alphanumerische Zeichenfolge (max. 11 alphanumerische Zeichen). Die Empfänger können nicht auf die Nachricht antworten.", - "cellsyntOriginatortypeNumeric": "Numerischer Wert (max. 15 Stellen) mit Telefonnummer im internationalen Format ohne Vorwahl 00 (Beispiel UK-Nummer 07920 110 000 sollte auf 447920110000 gesetzt werden). Empfänger können auf die Nachricht antworten.", - "cellsyntDestination": "Telefonnummer des Empfängers im internationalen Format mit führender 00, gefolgt von der Landesvorwahl, z. B. 00447920110000 für die britische Nummer 07920 110 000 (insgesamt maximal 17 Ziffern). Maximal 25000 kommagetrennte Empfänger pro HTTP-Anfrage.", - "callMeBotGet": "Hier kannst du einen Endpunkt für {0}, {1} und {2} generieren. Denke daran, dass der Durchsatz möglicherweise begrenzt ist. Die Durchsatzbegrenzung ist: {3}", - "wayToGetWhapiUrlAndToken": "Du kannst die API-URL und das Token erhalten, indem du in deinen gewünschten Channel von {0} gehst", - "whapiRecipient": "Telefonnummer / Kontakt-ID / Gruppen-ID", - "API URL": "API URL", - "wayToWriteWhapiRecipient": "Die Rufnummer mit der internationalen Vorwahl, aber ohne das Pluszeichen am Anfang ({0}), die Kontakt-ID ({1}) oder die Gruppen-ID ({2}).", - "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Gib entweder den Hostnamen des Servers ein, mit dem eine Verbindung hergestellt werden soll, oder {localhost}, wenn ein {local_mta} verwendet werden soll.", - "locally configured mail transfer agent": "Lokal konfigurierter Mail-Transfer-Agent", - "Mentioning": "Erwähnung", - "Don't mention people": "Keine Personen erwähnen", - "Mention group": "Erwähne {group}", - "senderSevenIO": "Absendernummer oder Name", - "receiverSevenIO": "Empfangende Nummer", - "apiKeySevenIO": "SevenIO API Schlüssel", - "wayToGetSevenIOApiKey": "Besuche das Dashboard unter app.seven.io > Entwickler > API Schlüssel > grüne Hinzufügen Schaltfläche", - "receiverInfoSevenIO": "Wenn sich die empfangende Nummer nicht in Deutschland befindet, muss der Nummer die Landesvorwahl vorangestellt werden (z.B. für die Landesvorwahl 1 aus den USA muss 117612121212 anstelle von 017612121212 verwendet werden)", - "Host URL": "Host URL", - "whatHappensAtForumPost": "Erstelle einen neuen Forumsbeitrag. Dadurch werden KEINE Nachrichten in einem bestehenden Beitrag veröffentlicht. Um einen Beitrag in einem bestehenden Beitrag zu erstellen, verwende \"{option}\"", - "Bitrix24 Webhook URL": "Bitrix24 Webhook URL", - "wayToGetBitrix24Webhook": "Du kannst einen Webhook erstellen, indem du die Schritte unter {0} befolgst", - "bitrix24SupportUserID": "Gib deine User-ID in Bitrix24 ein. Du kannst die ID über den Link erfahren, indem du auf das Profil des Users gehst.", - "Command": "Befehl", - "mongodbCommandDescription": "Führe einen MongoDB Befehl gegen die Datenbank aus. Informationen zu den verfügbaren Befehlen findest du in der {documentation}", - "Refresh Interval": "Aktualisierungsintervall", - "Refresh Interval Description": "Die Statusseite wird alle {0} Sekunden neu geladen", - "Select message type": "Nachrichtentyp auswählen", - "Send to channel": "An Kanal senden", - "ignoreTLSErrorGeneral": "TLS/SSL-Fehler für Verbindung ignorieren", - "Create new forum post": "Neuen Forumsbeitrag erstellen", - "postToExistingThread": "An bestehendes Thema/Forumbeitrag senden", - "forumPostName": "Name des Forumsbeitrags", - "threadForumPostID": "Themen-/Forumbeitrags-ID", - "e.g. {discordThreadID}": "z.B. {discordThreadID}", - "wayToGetDiscordThreadId": "Das Abrufen einer Thread-/Forumspost-ID ist ähnlich wie das Abrufen einer Channel-ID. Lese mehr darüber, wie man IDs abruft {0}", - "smspartnerPhoneNumber": "Telefonnummer(n)", - "smspartnerSenderName": "SMS Absender Name", - "smspartnerSenderNameInfo": "Muss zwischen 3..=11 regulären Zeichen sein", - "smspartnerApiurl": "Den API-Schlüssel findest du im Dashboard unter {0}", - "smspartnerPhoneNumberHelptext": "Die Nummer muss das internationale Format {0}, {1} haben. Mehrere Nummern müssen durch {2} getrennt werden", - "threemaRecipient": "Empfänger", - "threemaRecipientType": "Empfänger Typ", - "threemaRecipientTypeIdentity": "Threema-ID", - "threemaRecipientTypePhone": "Telefonnummer", - "threemaRecipientTypePhoneFormat": "E.164, ohne führendes +", - "threemaRecipientTypeEmail": "E-Mail Adresse", - "threemaSenderIdentity": "Gateway-ID", - "threemaApiAuthenticationSecret": "Gateway-ID Schlüssel", - "wayToGetThreemaGateway": "Du kannst dich für Threema Gateway {0} registrieren.", - "threemaRecipientTypeIdentityFormat": "8 Zeichen", - "threemaSenderIdentityFormat": "8 Zeichen, beginnt normalerweise mit *", - "threemaBasicModeInfo": "Hinweis: Diese Integration verwendet Threema Gateway im Basismodus (serverbasierte Verschlüsselung). Weitere Details siehe {0}.", - "apiKeysDisabledMsg": "API-Schlüssel sind deaktiviert, da die Authentifizierung deaktiviert ist.", - "wayToGetOnesenderUrlandToken": "Du kannst die URL und den Token auf der Onesender-Website erhalten. Weitere Infos {0}", - "Lost connection to the socket server.": "Verbindung zum Socket-Server verloren.", - "conditionDeleteGroup": "Gruppe löschen", - "greater than": "mehr als", - "snmpOIDHelptext": "Gib die OID für den zu überwachenden Sensor oder Status ein. Verwende Netzwerkverwaltungstools wie MIB-Browser oder SNMP-Software, wenn du bezüglich OID unsicher bist.", - "signl4Docs": "Weitere Informationen zur Konfiguration von SIGNL4 und zum Abrufen der SIGNL4-Webhook-URL siehe {0}.", - "now": "jetzt", - "time ago": "vor {0}", - "Json Query Expression": "Json Query Ausdrck", - "-year": "-Jahr", - "and": "und", - "jsonQueryDescription": "Parsen und Extrahieren spezifischer Daten aus der JSON-Antwort des Servers mittels JSON-Abfrage oder Verwendung von \"$\" für die rohe Antwort, wenn kein JSON erwartet wird. Das Ergebnis wird dann mit dem erwarteten Wert in Form von Strings verglichen. Siehe {0} für die Dokumentation und verwende {1}, um mit Abfragen zu experimentieren.", - "cacheBusterParamDescription": "Zufällig generierter Parameter um den Cache zu umgehen.", - "cacheBusterParam": "Den Parameter {0} hinzufügen", - "Community String": "Gemeinschaftliche Zeichenkette", - "snmpCommunityStringHelptext": "Diese Zeichenfolge dient als Passwort zur Authentifizierung und Kontrolle des Zugriffs auf SNMP-fähigen Geräten. Pass sie an die Konfiguration des SNMP-Geräts an.", - "OID (Object Identifier)": "OID (Objekt-Identifikator)", - "Condition": "Bedingung", - "SNMP Version": "SNMP Version", - "Please enter a valid OID.": "Gib eine gültige OID ein.", - "Host Onesender": "Host Onesender", - "Token Onesender": "Token Onesender", - "Recipient Type": "Empfänger Typ", - "Private Number": "Private Nummer", - "Group ID": "Gruppen ID", - "privateOnesenderDesc": "Stell sicher, dass die Telefonnummer gültig ist. Um Nachrichten an private Telefonnummer zu senden, z. B.: 628123456789", - "groupOnesenderDesc": "Stell sicher, dass die GroupID gültig ist. Um Nachricht an die Gruppe zu senden, z.B.: 628123456789-342345", - "Add Remote Browser": "Remote-Browser hinzufügen", - "New Group": "Neue Gruppe", - "Group Name": "Gruppenname", - "OAuth2: Client Credentials": "OAuth2: Client-Anmeldeinformationen", - "Authentication Method": "Authentifizierungsmethode", - "Authorization Header": "Autorisierungs-Header", - "Form Data Body": "Formular Data Body", - "OAuth Token URL": "OAuth Token URL", - "Client ID": "Client ID", - "Client Secret": "Client Secret", - "OAuth Scope": "OAuth Scope", - "Optional: Space separated list of scopes": "Optional: Durch Leerzeichen getrennte Liste der Scopes", - "Go back to home page.": "Zurück zur Startseite.", - "No tags found.": "Keine Tags gefunden.", - "Cannot connect to the socket server.": "Es kann keine Verbindung zum Socket-Server hergestellt werden.", - "SIGNL4": "SIGNL4", - "SIGNL4 Webhook URL": "SIGNL4 Webhook URL", - "Conditions": "Bedingungen", - "conditionAdd": "Bedingung hinzufügen", - "conditionDelete": "Bedingung löschen", - "conditionAddGroup": "Gruppe hinzufügen", - "conditionValuePlaceholder": "Wert", - "equals": "ist gleich", - "not equals": "ist nicht gleich", - "contains": "enthält", - "not contains": "enthält nicht", - "starts with": "beginnt mit", - "not starts with": "beginnt nicht mit", - "ends with": "endet mit", - "not ends with": "endet nicht mit", - "less than": "weniger als", - "less than or equal to": "kleiner als oder gleich", - "greater than or equal to": "größer als oder gleich", - "record": "Eintrag", - "shrinkDatabaseDescriptionSqlite": "Datenbank {vacuum} für SQLite auslösen. {auto_vacuum} ist bereits aktiviert, aber dies defragmentiert die Datenbank nicht und packt auch nicht einzelne Datenbankseiten neu, wie es der Befehl {vacuum} tut." -} +{ + "languageName": "Deutsch", + "Settings": "Einstellungen", + "Dashboard": "Überblick", + "New Update": "Aktualisierung verfügbar", + "Language": "Sprache", + "Appearance": "Erscheinungsbild", + "Theme": "Erscheinungsbild", + "General": "Allgemein", + "Version": "Version", + "Check Update On GitHub": "Auf GitHub nach Updates suchen", + "List": "Liste", + "Home": "Home", + "Add": "Hinzufügen", + "Add New Monitor": "Neuen Monitor hinzufügen", + "Quick Stats": "Übersicht", + "Up": "Aktiv", + "Down": "Inaktiv", + "Pending": "Ausstehend", + "Unknown": "Unbekannt", + "Cannot connect to the socket server": "Es kann keine Verbindung zum Socket-Server hergestellt werden", + "Reconnecting...": "Die Verbindung wird wiederhergestellt...", + "Pause": "Pausieren", + "pauseDashboardHome": "Pausiert", + "Name": "Name", + "Status": "Status", + "DateTime": "Datum / Uhrzeit", + "Message": "Nachricht", + "No important events": "Keine wichtigen Ereignisse", + "Resume": "Fortsetzen", + "Edit": "Bearbeiten", + "Delete": "Löschen", + "Current": "Aktuell", + "Uptime": "Verfügbarkeit", + "Cert Exp.": "Zertifikatsablauf", + "day": "Tag | Tage", + "-day": "-Tage", + "hour": "Stunde", + "-hour": "-Stunden", + "checkEverySecond": "Überprüfe alle {0} Sekunden", + "Response": "Antwortzeit", + "Ping": "Ping", + "Monitor Type": "Monitor-Typ", + "Keyword": "Suchwort", + "Friendly Name": "Anzeigename", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Port", + "Heartbeat Interval": "Prüfintervall", + "Retries": "Wiederholungen", + "retriesDescription": "Maximale Wiederholungen, bevor der Dienst als inaktiv markiert und eine Benachrichtigung gesendet wird", + "Advanced": "Erweitert", + "ignoreTLSError": "Ignoriere TLS-/SSL-Fehler von Webseiten", + "Upside Down Mode": "Umgekehrter Modus", + "upsideDownModeDescription": "Im umgekehrten Modus wird der Dienst als inaktiv angezeigt, wenn er erreichbar ist.", + "Max. Redirects": "Max. Weiterleitungen", + "maxRedirectDescription": "Maximale Anzahl von Weiterleitungen, denen gefolgt werden soll. Auf 0 setzen, um Weiterleitungen zu deaktivieren.", + "Accepted Status Codes": "Erlaubte HTTP-Statuscodes", + "acceptedStatusCodesDescription": "Statuscodes auswählen, die als erfolgreiche Verbindung gelten sollen.", + "Save": "Speichern", + "Notifications": "Benachrichtigungen", + "Not available, please setup.": "Nicht verfügbar, bitte einrichten.", + "Setup Notification": "Benachrichtigung einrichten", + "Light": "Hell", + "Dark": "Dunkel", + "Auto": "Auto", + "Theme - Heartbeat Bar": "Erscheinungsbild - Zeitleiste", + "Normal": "Normal", + "Bottom": "Unten", + "None": "Keine", + "Timezone": "Zeitzone", + "Search Engine Visibility": "Sichtbarkeit für Suchmaschinen", + "Allow indexing": "Indizierung zulassen", + "Discourage search engines from indexing site": "Suchmaschinen darum bitten, die Seite nicht zu indizieren", + "Change Password": "Passwort ändern", + "Current Password": "Aktuelles Passwort", + "New Password": "Neues Passwort", + "Repeat New Password": "Neues Passwort wiederholen", + "passwordNotMatchMsg": "Passwörter stimmen nicht überein.", + "Update Password": "Passwort aktualisieren", + "Disable Auth": "Authentifizierung deaktivieren", + "Enable Auth": "Authentifizierung aktivieren", + "disableauth.message1": "Bist du sicher das du die {disableAuth} möchtest?", + "disable authentication": "Authentifizierung deaktivieren", + "disableauth.message2": "Dies ist für Szenarien gedacht, {intendThirdPartyAuth} vor Uptime Kuma geschaltet hat, wie z.B. Cloudflare Access, Authelia oder andere Authentifizierungsmechanismen.", + "where you intend to implement third-party authentication": "in denen man eine externe Authentifizierung", + "Please use this option carefully!": "Bitte mit Vorsicht nutzen!", + "Logout": "Ausloggen", + "notificationDescription": "Benachrichtigungen müssen einem Monitor zugewiesen werden, damit diese funktionieren.", + "Leave": "Verlassen", + "I understand, please disable": "Ich verstehe, bitte deaktivieren", + "Confirm": "Bestätigen", + "Yes": "Ja", + "No": "Nein", + "Username": "Benutzername", + "Password": "Passwort", + "Remember me": "Angemeldet bleiben", + "Login": "Einloggen", + "No Monitors, please": "Keine Monitore, bitte", + "add one": "hinzufügen", + "Notification Type": "Benachrichtigungsdienst", + "Email": "E-Mail", + "Test": "Test", + "Certificate Info": "Zertifikatsinformation", + "keywordDescription": "Ein Suchwort in der HTML- oder JSON-Ausgabe finden. Bitte beachte: es wird zwischen Groß-/Kleinschreibung unterschieden.", + "deleteMonitorMsg": "Bist du sicher, dass du den Monitor löschen möchtest?", + "deleteNotificationMsg": "Möchtest du diese Benachrichtigung wirklich für alle Monitore löschen?", + "resolverserverDescription": "Cloudflare ist als der Standardserver festgelegt. Dieser kann jederzeit geändert werden.", + "Resolver Server": "Auflösungsserver", + "rrtypeDescription": "Wähle den RR-Typ aus, welchen du überwachen möchtest", + "Last Result": "Letztes Ergebnis", + "pauseMonitorMsg": "Bist du sicher, dass du den Monitor pausieren möchtest?", + "clearEventsMsg": "Bist du sicher, dass du alle Ereignisse für diesen Monitor löschen möchtest?", + "clearHeartbeatsMsg": "Bist du sicher, dass du alle Prüfintervalle für diesen Monitor löschen möchtest?", + "Clear Data": "Lösche Daten", + "Events": "Ereignisse", + "Heartbeats": "Prüfintervalle", + "confirmClearStatisticsMsg": "Bist du dir sicher, dass du ALLE Statistiken löschen möchtest?", + "Create your admin account": "Erstelle dein Admin-Konto", + "Repeat Password": "Passwort erneut eingeben", + "Resource Record Type": "Ressourcen Record Typ", + "Export": "Export", + "Import": "Import", + "respTime": "Antw.-Zeit (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Standardmäßig aktiviert", + "Apply on all existing monitors": "Auf alle existierenden Monitore anwenden", + "enableDefaultNotificationDescription": "Für jeden neuen Monitor wird diese Benachrichtigung standardmäßig aktiviert. Die Benachrichtigung kann weiterhin für jeden Monitor separat deaktiviert werden.", + "Create": "Erstellen", + "Auto Get": "Auto Get", + "backupDescription": "Es können alle Monitore und Benachrichtigungen in einer JSON-Datei gesichert werden.", + "backupDescription2": "PS: Verlaufs- und Ereignisdaten sind nicht enthalten.", + "backupDescription3": "Sensible Daten wie Benachrichtigungstoken sind in der Exportdatei enthalten, bitte bewahre sie sorgfältig auf.", + "alertNoFile": "Bitte wähle eine Datei zum Importieren aus.", + "alertWrongFileType": "Bitte wähle eine JSON-Datei aus.", + "Clear all statistics": "Lösche alle Statistiken", + "importHandleDescription": "Wähle 'Vorhandene überspringen' aus, wenn jeder Monitor oder jede Benachrichtigung mit demselben Namen übersprungen werden soll. 'Überschreiben' löscht jeden vorhandenen Monitor sowie Benachrichtigungen.", + "Skip existing": "Vorhandene überspringen", + "Overwrite": "Überschreiben", + "Options": "Optionen", + "confirmImportMsg": "Möchtest du das Backup wirklich importieren? Bitte stelle sicher, dass die richtige Import-Option ausgewählt ist.", + "Keep both": "Beide behalten", + "twoFAVerifyLabel": "Bitte trage deinen Token ein, um zu verifizieren, dass 2FA funktioniert:", + "Verify Token": "Token verifizieren", + "Setup 2FA": "2FA einrichten", + "Enable 2FA": "2FA aktivieren", + "Disable 2FA": "2FA deaktivieren", + "2FA Settings": "2FA-Einstellungen", + "confirmEnableTwoFAMsg": "Bist du sicher, dass du 2FA aktivieren möchtest?", + "confirmDisableTwoFAMsg": "Bist du sicher, dass du 2FA deaktivieren möchtest?", + "tokenValidSettingsMsg": "Token gültig! Du kannst jetzt die 2FA-Einstellungen speichern.", + "Two Factor Authentication": "Zwei-Faktor-Authentifizierung", + "Active": "Aktiv", + "Inactive": "Inaktiv", + "Token": "Token", + "Show URI": "URI anzeigen", + "Tags": "Tags", + "Add New below or Select...": "Einen bestehenden Tag auswählen oder neuen hinzufügen…", + "Tag with this name already exist.": "Ein Tag mit diesem Namen existiert bereits.", + "Tag with this value already exist.": "Ein Tag mit diesem Wert existiert bereits.", + "color": "Farbe", + "value (optional)": "Wert (optional)", + "Gray": "Grau", + "Red": "Rot", + "Orange": "Orange", + "Green": "Grün", + "Blue": "Blau", + "Indigo": "Indigo", + "Purple": "Lila", + "Pink": "Pink", + "Search...": "Suchen…", + "Heartbeat Retry Interval": "Überprüfungsintervall", + "Resend Notification if Down X times consecutively": "Benachrichtigung erneut senden, wenn inaktiv X Mal hintereinander", + "retryCheckEverySecond": "Alle {0} Sekunden neu versuchen", + "resendEveryXTimes": "Erneut versenden alle {0} mal", + "resendDisabled": "Erneut versenden deaktiviert", + "Import Backup": "Backup importieren", + "Export Backup": "Backup exportieren", + "Avg. Ping": "Durchschn. Ping", + "Avg. Response": "Durchschn. Antwort", + "Entry Page": "Einstiegsseite", + "statusPageNothing": "Noch ist hier nichts. Bitte füge eine Gruppe oder einen Monitor hinzu.", + "No Services": "Keine Dienste", + "All Systems Operational": "Alle Systeme betriebsbereit", + "Partially Degraded Service": "Teilweise beeinträchtigter Dienst", + "Degraded Service": "Eingeschränkter Dienst", + "Add Group": "Gruppe hinzufügen", + "Add a monitor": "Monitor hinzufügen", + "Edit Status Page": "Statusseite bearbeiten", + "Go to Dashboard": "Gehe zum Dashboard", + "Status Page": "Status-Seite", + "Status Pages": "Status-Seiten", + "telegram": "Telegram", + "webhook": "Webhook", + "smtp": "E-Mail (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Unterstützung für 50+ Benachrichtigungsdienste)", + "GoogleChat": "Google Chat (nur Google Workspace)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "Primary Base URL": "Primäre Basis-URL", + "Push URL": "Push URL", + "needPushEvery": "Du solltest diese URL alle {0} Sekunden aufrufen.", + "pushOptionalParams": "Optionale Parameter: {0}", + "defaultNotificationName": "Mein {notification} Alarm ({number})", + "here": "hier", + "Required": "Erforderlich", + "Bot Token": "Bot Token", + "wayToGetTelegramToken": "Hier kannst du einen Token erhalten {0}.", + "Chat ID": "Chat ID", + "supportTelegramChatID": "Unterstützt Direkt Chat / Gruppe / Kanal Chat-ID's", + "wayToGetTelegramChatID": "Du kannst deine Chat-ID erhalten, indem du eine Nachricht an den Bot sendest und zu dieser URL gehst, um die chat_id zu sehen:", + "YOUR BOT TOKEN HERE": "HIER DEIN BOT TOKEN", + "chatIDNotFound": "Chat-ID wurde nicht gefunden: bitte sende zuerst eine Nachricht an diesen Bot", + "Post URL": "Post URL", + "Content Type": "Content Type", + "webhookJsonDesc": "{0} ist gut für alle modernen HTTP-Server, wie z.B. Express.js, geeignet", + "webhookFormDataDesc": "{multipart} ist gut für PHP. Das JSON muss mit {decodeFunction} verarbeitet werden", + "secureOptionNone": "Keine / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "TLS-Fehler ignorieren", + "From Email": "Absender E-Mail", + "emailCustomSubject": "Benutzerdefinierter Betreff", + "To Email": "Empfänger E-Mail", + "smtpCC": "CC", + "smtpBCC": "BCC", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "Du kannst diese erhalten, indem du zu den Servereinstellungen gehst -> Integrationen -> WebHooks anzeigen -> Neuer WebHook", + "Bot Display Name": "Bot-Anzeigename", + "Prefix Custom Message": "Benutzerdefinierter Nachrichten Präfix", + "Hello @everyone is...": "Hallo {'@'}everyone ist…", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "Wie eine Webhook-URL erstellt werden kann, erfährst du {0}.", + "Number": "Nummer", + "Recipients": "Empfänger", + "needSignalAPI": "Es wird ein Signal Client mit REST-API benötigt.", + "wayToCheckSignalURL": "Du kannst diese URL aufrufen, um zu sehen, wie du eine einrichtest:", + "signalImportant": "WICHTIG: Gruppen und Nummern können in Empfängern nicht gemischt werden!", + "Application Token": "Anwendungs Token", + "Server URL": "Server URL", + "Priority": "Priorität", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Kanalname", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Weitere Informationen zu Webhooks auf: {0}", + "aboutChannelName": "Gebe den Kanalnamen ein in {0} Feld Kanalname, falls du den Webhook-Kanal umgehen möchtest. Ex: #other-channel", + "aboutKumaURL": "Wenn du das Feld für die Uptime Kuma URL leer lässt, wird es standardmäßig auf die Projekt-GitHub-Seite gesetzt.", + "emojiCheatSheet": "Emoji Cheat Sheet: {0}", + "User Key": "Benutzerschlüssel", + "Device": "Gerät", + "Message Title": "Nachrichtentitel", + "Notification Sound": "Benachrichtigungston", + "More info on:": "Mehr Infos auf: {0}", + "pushoverDesc1": "Notfallpriorität (2) hat standardmäßig 30 Sekunden Auszeit zwischen den Versuchen und läuft nach 1 Stunde ab.", + "pushoverDesc2": "Fülle das Geräte Feld aus, wenn du Benachrichtigungen an verschiedene Geräte senden möchtest.", + "pushoverMessageTtl": "Message TTL (Sekunden)", + "SMS Type": "SMS Typ", + "octopushTypePremium": "Premium (Schnell - zur Benachrichtigung empfohlen)", + "octopushTypeLowCost": "Kostengünstig (Langsam - manchmal vom Betreiber gesperrt)", + "checkPrice": "Prüfe {0} Preise:", + "octopushLegacyHint": "Verwendest du die Legacy-Version von Octopush (2011-2020) oder die neue Version?", + "Check octopush prices": "Vergleiche die Oktopush Preise {0}.", + "octopushPhoneNumber": "Telefonnummer (Internationales Format, z.B : +49612345678) ", + "octopushSMSSender": "Name des SMS-Absenders : 3-11 alphanumerische Zeichen und Leerzeichen (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Geräte ID", + "Apprise URL": "Apprise URL", + "Example:": "Beispiel: {0}", + "Read more:": "Weiterlesen: {0}", + "Status:": "Status: {0}", + "Read more": "Weiterlesen", + "appriseInstalled": "Apprise ist installiert.", + "appriseNotInstalled": "Apprise ist nicht installiert. {0}", + "Access Token": "Zugriffstoken", + "Channel access token": "Kanalzugriffstoken", + "Line Developers Console": "Zeile Entwickler Konsole", + "lineDevConsoleTo": "Line Entwicklerkonsole - {0}", + "Basic Settings": "Grundeinstellungen", + "User ID": "User ID", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "Rufe zuerst {0} auf, erstelle dann einen Provider und Channel (Messaging API). Als nächstes kannst du den Channel access token und die User ID aus den oben genannten Menüpunkten abrufen.", + "Icon URL": "Icon URL", + "aboutIconURL": "Du kannst einen Link zu einem Bild in 'Icon URL' übergeben um das Standardprofilbild zu überschreiben. Wird nicht verwendet, wenn ein Icon Emoji gesetzt ist.", + "aboutMattermostChannelName": "Du kannst den Standardkanal, auf dem der Webhook gesendet wird überschreiben, indem der Kanalnamen in das Feld 'Channel Name' eingeben wird. Dies muss in den Mattermost Webhook-Einstellungen aktiviert werden. Ex: #other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - billig, aber langsam und oft überladen. Auf polnische Empfänger beschränkt.", + "promosmsTypeFlash": "SMS FLASH - Die Nachricht wird automatisch auf dem Empfängergerät angezeigt. Auf polnische Empfänger beschränkt.", + "promosmsTypeFull": "SMS FULL - Premium Stufe von SMS, es kann der Absendernamen verwendet werden (Der Name musst zuerst registriert werden). Zuverlässig für Warnungen.", + "promosmsTypeSpeed": "SMS SPEED - Höchste Priorität im System. Sehr schnell und zuverlässig, aber teuer (Ungefähr das doppelte von SMS FULL).", + "promosmsPhoneNumber": "Telefonnummer (für polnische Empfänger können die Vorwahlen übersprungen werden)", + "promosmsSMSSender": "Name des SMS-Absenders : vorregistrierter Name oder einer der Standardwerte: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu Webhook URL", + "matrixHomeserverURL": "Heimserver URL (mit http(s):// und optionalen Ports)", + "Internal Room Id": "Interne Raum-ID", + "matrixDesc1": "Die interne Raum-ID findest du im erweiterten Bereich der Raumeinstellungen im Matrix-Client. Es sollte aussehen wie z.B. !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Es wird dringend empfohlen einen neuen Benutzer anzulegen und nicht den Zugriffstoken deines eigenen Matrix-Benutzers zu verwenden. Anderenfalls ermöglicht es vollen Zugriff auf dein Konto und alle Räume, denen du beigetreten bist. Erstelle stattdessen einen neuen Benutzer und lade ihn nur in den Raum ein, in dem du die Benachrichtigung erhalten möchtest. Du kannst den Zugriffstoken erhalten, indem du Folgendes ausführst {0}", + "Method": "Methode", + "Body": "Body", + "Headers": "Header", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "Der Header ist kein gültiges JSON: ", + "BodyInvalidFormat": "Der Body ist kein gültiges JSON: ", + "Monitor History": "Monitor Verlauf", + "clearDataOlderThan": "Bewahre die Monitor-Verlaufsdaten für {0} Tage auf.", + "PasswordsDoNotMatch": "Passwörter stimmen nicht überein.", + "records": "Einträge", + "One record": "Ein Eintrag", + "steamApiKeyDescription": "Um einen Steam Game Server zu überwachen, wird ein Steam Web-API-Schlüssel benötigt. Dieser kann hier registriert werden: ", + "Current User": "Aktueller Benutzer", + "recent": "Letzte", + "Done": "Fertig", + "Info": "Info", + "Security": "Sicherheit", + "Steam API Key": "Steam API-Schlüssel", + "Shrink Database": "Datenbank verkleinern", + "Pick a RR-Type...": "Wähle ein RR-Typ aus…", + "Pick Accepted Status Codes...": "Wähle akzeptierte Statuscodes aus…", + "Default": "Standard", + "HTTP Options": "HTTP Optionen", + "Create Incident": "Vorfall erstellen", + "Title": "Titel", + "Content": "Inhalt", + "Style": "Stil", + "info": "info", + "warning": "warnung", + "danger": "gefahr", + "primary": "primär", + "light": "hell", + "dark": "dunkel", + "Post": "Veröffentlichen", + "Please input title and content": "Bitte Titel und Inhalt eingeben", + "Created": "Erstellt", + "Last Updated": "Zuletzt aktualisiert", + "Unpin": "Loslösen", + "Switch to Light Theme": "Zu hellem Thema wechseln", + "Switch to Dark Theme": "Zum dunklen Thema wechseln", + "Show Tags": "Tags anzeigen", + "Hide Tags": "Tags ausblenden", + "Description": "Beschreibung", + "No monitors available.": "Keine Monitore verfügbar.", + "Add one": "Hinzufügen", + "No Monitors": "Keine Monitore", + "Untitled Group": "Gruppe ohne Titel", + "Services": "Dienste", + "Discard": "Verwerfen", + "Cancel": "Abbrechen", + "Powered by": "Erstellt mit", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Benutzername (inkl. webapi_ prefix)", + "serwersmsAPIPassword": "API Passwort", + "serwersmsPhoneNumber": "Telefonnummer", + "serwersmsSenderName": "Name des SMS-Absenders (über Kundenportal registriert)", + "stackfield": "Stackfield", + "clicksendsms": "ClickSend SMS", + "apiCredentials": "API Zugangsdaten", + "smtpDkimSettings": "DKIM Einstellungen", + "smtpDkimDesc": "Details zur Konfiguration sind in der Nodemailer DKIM {0} zu finden.", + "documentation": "Dokumentation", + "smtpDkimDomain": "Domain Name", + "smtpDkimKeySelector": "Schlüssel Auswahl", + "smtpDkimPrivateKey": "Privater Schlüssel", + "smtpDkimHashAlgo": "Hash-Algorithmus (Optional)", + "smtpDkimheaderFieldNames": "Zu validierende Header-Schlüssel (optional)", + "smtpDkimskipFields": "Zu ignorierende Header Schlüssel (optional)", + "PushByTechulus": "Push by Techulus", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpunkt", + "alertaEnvironment": "Umgebung", + "alertaApiKey": "API Schlüssel", + "alertaAlertState": "Alarmstatus", + "alertaRecoverState": "Wiederherstellungsstatus", + "deleteStatusPageMsg": "Bist du sicher, dass du diese Status-Seite löschen willst?", + "Proxies": "Proxys", + "default": "Standard", + "enabled": "Aktiviert", + "setAsDefault": "Als Standard setzen", + "deleteProxyMsg": "Bist du sicher, dass du diesen Proxy für alle Monitore löschen willst?", + "proxyDescription": "Proxys müssen einem Monitor zugewiesen werden, um zu funktionieren.", + "enableProxyDescription": "Dieser Proxy wird keinen Effekt auf Monitor-Anfragen haben, bis er aktiviert ist. Du kannst ihn temporär von allen Monitoren nach Aktivierungsstatus deaktivieren.", + "setAsDefaultProxyDescription": "Dieser Proxy wird standardmäßig für alle neuen Monitore aktiviert sein. Du kannst den Proxy immer noch für jeden Monitor einzeln deaktivieren.", + "Certificate Chain": "Zertifikatskette", + "Valid": "Gültig", + "Invalid": "Ungültig", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "Geheimer Zugangsschlüssel", + "PhoneNumbers": "Telefonnummern", + "TemplateCode": "Vorlagencode", + "SignName": "Signaturname", + "Sms template must contain parameters: ": "SMS Vorlage muss folgende Parameter enthalten: ", + "Bark Endpoint": "Bark Endpunkt", + "WebHookUrl": "Webhook URL", + "SecretKey": "Geheimer Schlüssel", + "For safety, must use secret key": "Zur Sicherheit muss ein geheimer Schlüssel verwendet werden", + "Device Token": "Gerätetoken", + "Platform": "Platform", + "Huawei": "Huawei", + "High": "Hoch", + "Retry": "Wiederholungen", + "Topic": "Thema", + "WeCom Bot Key": "WeCom Bot Schlüssel", + "Setup Proxy": "Proxy einrichten", + "Proxy Protocol": "Proxy Protokoll", + "Proxy Server": "Proxy-Server", + "Proxy server has authentication": "Proxy-Server hat Authentifizierung", + "User": "Benutzer", + "Installed": "Installiert", + "Not installed": "Nicht installiert", + "Running": "Läuft", + "Not running": "Gestoppt", + "Remove Token": "Token entfernen", + "Start": "Start", + "Stop": "Stop", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Neue Status-Seite hinzufügen", + "Slug": "Slug", + "Accept characters:": "Akzeptierte Zeichen:", + "startOrEndWithOnly": "Nur mit {0} anfangen und enden", + "No consecutive dashes": "Keine aufeinanderfolgenden Bindestriche", + "Next": "Weiter", + "The slug is already taken. Please choose another slug.": "Der Slug ist bereits in Verwendung. Bitte wähle einen anderen.", + "No Proxy": "Kein Proxy", + "Authentication": "Authentifizierung", + "HTTP Basic Auth": "HTTP Basisauthentifizierung", + "New Status Page": "Neue Status-Seite", + "Page Not Found": "Seite nicht gefunden", + "Reverse Proxy": "Reverse Proxy", + "Backup": "Sicherung", + "About": "Über", + "wayToGetCloudflaredURL": "(Lade cloudflared von {0} herunter)", + "cloudflareWebsite": "Cloudflare Website", + "Message:": "Nachricht:", + "Don't know how to get the token? Please read the guide:": "Du weißt nicht, wie man den Token bekommt? Lies die Anleitung dazu:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Die aktuelle Verbindung kann unterbrochen werden, wenn du aktuell über Cloudflare Tunnel verbunden bist. Bist du sicher, dass du es stoppen willst? Gib zur Bestätigung dein aktuelles Passwort ein.", + "Other Software": "Andere Software", + "For example: nginx, Apache and Traefik.": "Zum Beispiel: nginx, Apache und Traefik.", + "Please read": "Bitte lesen", + "Subject:": "Betreff:", + "Valid To:": "Gültig bis:", + "Days Remaining:": "Tage verbleibend:", + "Issuer:": "Aussteller:", + "Fingerprint:": "Fingerabdruck:", + "No status pages": "Keine Status-Seiten", + "Domain Name Expiry Notification": "Benachrichtigung bei Ablauf des Domainnamens", + "Customize": "Anpassen", + "Custom Footer": "Eigener Footer", + "Custom CSS": "Eigenes CSS", + "Footer Text": "Fußzeile", + "Show Powered By": "Zeige 'Powered By'", + "Date Created": "Erstellt am", + "Domain Names": "Domainnamen", + "signedInDisp": "Angemeldet als {0}", + "signedInDispDisabled": "Authentifizierung deaktiviert.", + "dnsPortDescription": "DNS Server Port. Standard ist 53. Der Port kann jederzeit geändert werden.", + "topic": "Thema", + "topicExplanation": "MQTT Thema für den monitor", + "successMessage": "Erfolgsnachricht", + "successMessageExplanation": "MQTT Nachricht, die als Erfolg angesehen wird", + "error": "Fehler", + "critical": "kritisch", + "wayToGetPagerDutyKey": "Dieser kann unter Service -> Service Directory -> (Select a service) -> Integrations -> Add integration gefunden werden. Hier muss nach \"Events API V2\" gesucht werden. Mehr informationen {0}", + "Integration Key": "Schlüssel der Integration", + "Integration URL": "URL der Integration", + "Auto resolve or acknowledged": "Automatisch lösen oder bestätigen", + "do nothing": "nichts tun", + "auto acknowledged": "automatisch bestätigen", + "auto resolve": "automatisch lösen", + "Bark Group": "Bark Gruppe", + "Bark Sound": "Bark Klang", + "HTTP Headers": "HTTP Kopfzeilen", + "Trust Proxy": "Vertrauenswürdiger Proxy", + "Proxy": "Proxy", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "OneBot HTTP Adresse", + "onebotMessageType": "OneBot Nachrichtentyp", + "onebotGroupMessage": "Gruppe", + "onebotPrivateMessage": "Privat", + "onebotUserOrGroupId": "Gruppe/Nutzer ID", + "onebotSafetyTips": "Zur Sicherheit ein access token setzen", + "PushDeer Key": "PushDeer Schlüssel", + "RadiusSecret": "Radius Geheimnis", + "RadiusSecretDescription": "Geteiltes Geheimnis zwischen Client und Server", + "RadiusCalledStationId": "ID der angesprochenen Station", + "RadiusCalledStationIdDescription": "Identifikation des angesprochenen Geräts", + "RadiusCallingStationId": "ID der ansprechenden Station", + "RadiusCallingStationIdDescription": "Identifikation des ansprechenden Geräts", + "Certificate Expiry Notification": "Benachrichtigung ablaufendes Zertifikat", + "API Username": "API Nutzername", + "API Key": "API Schlüssel", + "Recipient Number": "Empfängernummer", + "From Name/Number": "Von Name/Nummer", + "Leave blank to use a shared sender number.": "Leer lassen um eine geteilte Absendernummer zu nutzen.", + "Octopush API Version": "Octopush API Version", + "Legacy Octopush-DM": "Legacy Octopush-DM", + "endpoint": "Endpunkt", + "octopushAPIKey": "\"API Schlüssel\" der HTTP API Zugangsdaten im control panel", + "octopushLogin": "\"Login\" der HTTP API Zugangsdaten im control panel", + "promosmsLogin": "API Login Name", + "promosmsPassword": "API Password", + "pushoversounds pushover": "Pushover (Standard)", + "pushoversounds bike": "Fahrrad", + "pushoversounds bugle": "Signalhorn", + "pushoversounds cashregister": "Kasse", + "pushoversounds classical": "Klassisch", + "pushoversounds cosmic": "Kosmisch", + "pushoversounds falling": "Abfallend", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Eingang", + "pushoversounds intermission": "Pause", + "pushoversounds magic": "Magisch", + "pushoversounds mechanical": "Mechanisch", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Sirene", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "Schlepper Horn", + "pushoversounds alien": "Außerirdisch (lang)", + "pushoversounds climb": "Ansteigende (lang)", + "pushoversounds persistent": "Hartnäckig (lang)", + "pushoversounds echo": "Pushover Echo (lang)", + "pushoversounds updown": "Auf und Ab (lang)", + "pushoversounds vibrate": "Nur vibrieren", + "pushoversounds none": "Nichts (Stille)", + "pushyAPIKey": "Geheimer API Schlüssel", + "pushyToken": "Gerätetoken", + "Show update if available": "Verfügbare Updates anzeigen", + "Also check beta release": "Auch nach Beta Versionen schauen", + "Using a Reverse Proxy?": "Wird ein Reverse Proxy genutzt?", + "Check how to config it for WebSocket": "Prüfen, wie er für die Nutzung mit WebSocket konfiguriert wird", + "Steam Game Server": "Steam Spielserver", + "Most likely causes:": "Wahrscheinliche Ursachen:", + "The resource is no longer available.": "Die Quelle ist nicht mehr verfügbar.", + "There might be a typing error in the address.": "Es gibt einen Tippfehler in der Adresse.", + "What you can try:": "Was du versuchen kannst:", + "Retype the address.": "Schreibe die Adresse erneut.", + "Go back to the previous page.": "Gehe zur vorigen Seite.", + "Coming Soon": "Kommt bald", + "wayToGetClickSendSMSToken": "Du kannst einen API Nutzernamen und Schlüssel unter {0} erhalten.", + "Connection String": "Verbindungstext", + "Query": "Abfrage", + "settingsCertificateExpiry": "TLS Zertifikatsablauf", + "certificationExpiryDescription": "HTTPS Monitore senden eine Benachrichtigung, wenn das Zertifikat abläuft in:", + "Setup Docker Host": "Docker Host einrichten", + "Connection Type": "Verbindungstyp", + "Docker Daemon": "Docker Daemon", + "deleteDockerHostMsg": "Bist du sicher diesen docker host für alle Monitore zu löschen?", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "Docker Container", + "Container Name / ID": "Container-Bezeichnung / ID", + "Docker Host": "Docker-Host", + "Docker Hosts": "Docker-Hosts", + "ntfy Topic": "ntfy Thema", + "Domain": "Domain", + "Workstation": "Workstation", + "disableCloudflaredNoAuthMsg": "Du bist im nicht-authentifizieren Modus, ein Passwort wird nicht benötigt.", + "trustProxyDescription": "Vertraue 'X-Forwarded-*' headern. Wenn man die richtige Client IP haben möchte und Uptime Kuma hinter einem Proxy wie Nginx oder Apache läuft, sollte dies aktiviert werden.", + "wayToGetLineNotifyToken": "Du kannst hier ein Token erhalten: {0}", + "Examples": "Beispiele", + "Home Assistant URL": "Heimassistent-URL", + "Long-Lived Access Token": "Lange gültiges Access Token", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Lange gültige Access Token können durch klicken auf den Profilnamen (unten links) und dann einen Klick auf Create Token am Ende erstellt werden. ", + "Notification Service": "Benachrichtigungsdienst", + "default: notify all devices": "standard: Alle Geräte benachrichtigen", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Eine Liste der Benachrichtigungsdienste kann im Home Assistant unter \"Developer Tools > Services\" gefunden werden, wnen man nach \"notification\" sucht um den Geräte-/Telefonnamen zu finden.", + "Automations can optionally be triggered in Home Assistant:": "Automatisierungen können optional im Home Assistant ausgelöst werden:", + "Trigger type:": "Auslöser:", + "Event type:": "Ereignistyp:", + "Event data:": "Ereignis daten:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Dann eine Aktion wählen, zum Beispiel eine Scene wählen in der ein RGB Licht rot ist.", + "Frontend Version": "Frontend-Version", + "Frontend Version do not match backend version!": "Die Frontend Version stimmt nicht mit der backend version überein!", + "Maintenance": "Wartung", + "statusMaintenance": "Wartung", + "Schedule maintenance": "Geplante Wartung", + "Affected Monitors": "Betroffene Monitore", + "Pick Affected Monitors...": "Wähle betroffene Monitore…", + "Start of maintenance": "Beginn der Wartung", + "All Status Pages": "Alle Status Seiten", + "Select status pages...": "Statusseiten auswählen…", + "recurringIntervalMessage": "Einmal pro Tag ausgeführt | Wird alle {0} Tage ausgführt", + "affectedMonitorsDescription": "Wähle Monitore aus, die von der aktuellen Wartung betroffen sind", + "affectedStatusPages": "Diese Wartungsmeldung auf ausgewählten Statusseiten anzeigen", + "atLeastOneMonitor": "Wähle mindestens einen Monitor", + "deleteMaintenanceMsg": "Möchtest du diese Wartung löschen?", + "Base URL": "Basis URL", + "goAlertInfo": "GoAlert ist eine Open-Source Applikation für Rufbereitschaftsplanung, automatische Eskalation und Benachrichtigung (z.B. SMS oder Telefonanrufe). Engagiere automatisch die richtige Person, auf die richtige Art und Weise und zum richtigen Zeitpunkt! {0}", + "goAlertIntegrationKeyInfo": "Bekommt einen generischen API Schlüssel in folgenden Format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\". Normalerweise entspricht dies dem Wert des Token aus der URL.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Veraltet: Da viele Funktionen hinzugefügt wurden und diese Sicherungsfunktion nicht mehr gepflegt wird, kann keine vollständige Sicherung erstellen oder wiederherstellen werden.", + "backupRecommend": "Bitte sichere stattdessen das Volume oder den Datenordner (./data/) direkt.", + "Optional": "Optional", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "SMSManager API Dokumente ", + "Gateway Type": "Gateway Typ", + "SMSManager": "SMSManager", + "You can divide numbers with": "Du kannst Zahlen teilen mit", + "or": "oder", + "recurringInterval": "Intervall", + "Recurring": "Wiederkehrend", + "Single Maintenance Window": "Einmaliges Wartungsfenster", + "Maintenance Time Window of a Day": "Zeitfenster für die Wartung", + "Effective Date Range": "Bereich der Wirksamkeitsdaten (Optional)", + "strategyManual": "Aktiv/Inaktiv Manuell", + "warningTimezone": "Es wird die Zeitzone des Servers verwendet", + "weekdayShortMon": "Mo", + "weekdayShortTue": "Di", + "weekdayShortWed": "Mi", + "weekdayShortThu": "Do", + "weekdayShortFri": "Fr", + "weekdayShortSat": "Sa", + "weekdayShortSun": "So", + "dayOfWeek": "Tag der Woche", + "dayOfMonth": "Tag im Monat", + "lastDay": "Letzter Tag", + "lastDay1": "Letzter Tag im Monat", + "lastDay2": "Vorletzer Tag im Monat", + "lastDay3": "3. letzter Tag im Monat", + "lastDay4": "4. letzter Tag im Monat", + "No Maintenance": "Keine Wartung", + "Schedule Maintenance": "Wartung planen", + "Edit Maintenance": "Wartung bearbeiten", + "pauseMaintenanceMsg": "Möchtest du wirklich pausieren?", + "maintenanceStatus-under-maintenance": "In Wartung", + "maintenanceStatus-inactive": "Inaktiv", + "maintenanceStatus-scheduled": "Geplant", + "maintenanceStatus-ended": "Ende", + "maintenanceStatus-unknown": "Unbekannt", + "Display Timezone": "Zeitzone anzeigen", + "Server Timezone": "Server Zeitzone", + "Date and Time": "Datum und Zeit", + "DateTime Range": "Datums- und Zeitbereich", + "Strategy": "Strategie", + "statusPageMaintenanceEndDate": "Ende", + "Help": "Hilfe", + "Game": "Spiel", + "Custom": "Benutzerdefiniert", + "Enable DNS Cache": "(Veraltet) DNS-Cache für HTTP(s)-Monitore aktivieren", + "Enable": "Aktivieren", + "Disable": "Deaktivieren", + "Custom Monitor Type": "Benutzerdefinierter Monitortyp", + "webhookAdditionalHeadersDesc": "Legt zusätzliche Kopfzeilen fest, die mit dem Webhook gesendet werden. Jede Kopfzeile sollte als JSON Schlüssel/Wert definiert werden.", + "dnsCacheDescription": "In einigen IPv6-Umgebungen funktioniert es möglicherweise nicht. Deaktiviere es, wenn Probleme auftreten.", + "loadingError": "Die Daten konnten nicht abgerufen werden, bitte später noch einmal versuchen.", + "confirmUninstallPlugin": "Möchtest du dieses Plugin wirklich deinstallieren?", + "grpcMethodDescription": "Der Name der Methode wird in das \"camelCase\"-Format konvertiert z.B. sayHello, check, etc.", + "Passive Monitor Type": "Passiver Monitortyp", + "Specific Monitor Type": "Spezifischer Monitortyp", + "webhookAdditionalHeadersTitle": "Zusätzliche Header", + "Packet Size": "Paketgröße", + "IconUrl": "Symbol-URL", + "wayToGetZohoCliqURL": "Wie eine Webhook URL erstellt werden kann, erfährst du {0}.", + "dataRetentionTimeError": "Aufbewahrungszeit muss 0 oder größer sein", + "infiniteRetention": "Für unendliche Aufbewahrung auf 0 setzen.", + "confirmDeleteTagMsg": "Möchtest du dieses Tag wirklich löschen? Monitore, die mit diesem Tag verknüpft sind, werden nicht gelöscht.", + "enableGRPCTls": "Senden von gRPC-Anforderungen mit TLS-Verbindung zulassen", + "ZohoCliq": "ZohoCliq", + "Monitor": "Überwachung | Monitore", + "plugin": "Plugin | Plugins", + "install": "Installieren", + "installing": "Installiere", + "uninstall": "Deinstallieren", + "uninstalling": "Deinstallation", + "markdownSupported": "Markdown-Syntax unterstützt", + "wayToGetKookBotToken": "Erstelle eine Anwendung und erhalte den Bot-Token unter {0}", + "wayToGetKookGuildID": "Schalte den „Entwicklermodus“ in den Kook-Einstellungen ein und klicke mit der rechten Maustaste auf die Gilde, um die ID zu erhalten", + "Guild ID": "Guild-ID", + "Free Mobile User Identifier": "Kostenlose mobile Benutzerkennung", + "Free Mobile API Key": "Kostenloser Mobile API-Schlüssel", + "Enable TLS": "Aktiviere TLS", + "Proto Service Name": "Name des Proto-Dienstes", + "Proto Method": "Proto-Methode", + "Proto Content": "Proto-Inhalt", + "Economy": "Wirtschaft", + "Lowcost": "Kostengünstig", + "high": "hoch", + "promosmsAllowLongSMS": "Erlaube lange SMS", + "General Monitor Type": "Allgemeiner Monitortyp", + "smseagle": "SMSEagle", + "smseagleTo": "Telefonnummer(n)", + "smseagleGroup": "Telefonbuch Gruppenname(n)", + "smseagleContact": "Telefonbuch Kontaktname(n)", + "smseagleRecipientType": "Empfängertyp", + "smseagleRecipient": "Empfänger (mehrere müssen durch Komma getrennt werden)", + "smseagleToken": "API-Zugriffstoken", + "smseagleUrl": "Ihre SMSEagle-Geräte-URL", + "Kook": "Kook", + "smseagleEncoding": "Als Unicode senden", + "smseaglePriority": "Nachrichtenpriorität (0-9, Standard = 0)", + "Google Analytics ID": "Google Analytics ID", + "Edit Tag": "bearbeite Tag", + "Server Address": "Server Adresse", + "Learn More": "Erfahre mehr", + "Body Encoding": "Inhaltskodierung", + "Add API Key": "API Schlüssel hinzufügen", + "apiKey-active": "Aktiv", + "apiKey-expired": "Abgelaufen", + "apiKey-inactive": "Inaktiv", + "Expires": "Läuft ab", + "deleteAPIKeyMsg": "Bist du sicher, dass du diesen API Schlüssel löschen willst?", + "Generate": "Generieren", + "API Keys": "API Schlüssel", + "Expiry": "Ablauf", + "Expiry date": "Ablaufdatum", + "Don't expire": "Nicht ablaufen", + "Continue": "Weiter", + "Add Another": "Hinzufügen", + "Clone Monitor": "Duplikat von", + "Clone": "Duplizieren", + "cloneOf": "Duplikat von {0}", + "pagertreeIntegrationUrl": "Integrations URL", + "pagertreeUrgency": "Dringlichkeit", + "pagertreeSilent": "Leise", + "pagertreeLow": "Niedrig", + "pagertreeMedium": "Medium", + "pagertreeHigh": "Hoch", + "pagertreeCritical": "Kritisch", + "pagertreeResolve": "Automatisch Auflösen", + "No API Keys": "Keine API Schlüssel", + "disableAPIKeyMsg": "Bist du sicher, dass du diesen API Schlüssel deaktivieren willst?", + "pagertreeDoNothing": "Nichts tun", + "wayToGetPagerTreeIntegrationURL": "Nachdem du die Uptime Kuma Integration in PagerTree erstellt hast, kopiere den Endpunkt. Siehe details {0}", + "telegramProtectContent": "Schütze gegen Weiterleiten/Speichern der Nachricht", + "telegramProtectContentDescription": "Die Bot-Nachrichten in Telegram sind gegen Weiterleitung und Speichern geschützt.", + "notificationRegional": "Regional", + "Key Added": "Schlüssel hinzugefügt", + "apiKeyAddedMsg": "API Schlüssel wurde hinzugefügt. Bitte notiere den Schlüssel, da er nicht erneut angezeigt wird.", + "telegramMessageThreadID": "(Optional) Nachrichten Thread ID", + "telegramMessageThreadIDDescription": "Optionale eindeutige Kennung für den Ziel-Thread (Thema) des Forums; nur für Forum-Supergroups", + "telegramSendSilently": "Stumm Senden", + "telegramSendSilentlyDescription": "Sende die Nachricht stumm. Nutzer bekommen eine Benachrichtigung ohne Ton.", + "Add New Tag": "Neuen Tag hinzufügen", + "lunaseaDeviceID": "Geräte-ID", + "lunaseaTarget": "Ziel", + "lunaseaUserID": "Benutzer-ID", + "ntfyAuthenticationMethod": "Authentifizierungsmethode", + "ntfyUsernameAndPassword": "Benutzername und Passwort", + "twilioAccountSID": "Account SID", + "twilioFromNumber": "Absender", + "twilioToNumber": "Empfänger", + "twilioAuthToken": "Auth Token / API Key Secret", + "statusPageRefreshIn": "Aktualisierung in: {0}", + "sameAsServerTimezone": "Gleiche Zeitzone wie Server", + "startDateTime": "Start Datum/Uhrzeit", + "endDateTime": "Ende Datum/Uhrzeit", + "cronExpression": "Cron-Ausdruck", + "cronSchedule": "Zeitplan: ", + "invalidCronExpression": "Ungültiger Cron-Ausdruck: {0}", + "Show Clickable Link": "Klickbaren Link anzeigen", + "Open Badge Generator": "Abzeichengenerator öffnen", + "Badge Generator": "{0}'s Abzeichen Generator", + "Badge Type": "Abzeichen Typ", + "Badge Duration": "Badge Dauer", + "Badge Label": "Abzeichen Label", + "Show Clickable Link Description": "Wenn diese Option aktiviert ist, kann jeder, der Zugriff auf diese Statusseite hat, auf die Monitor-URL zugreifen.", + "Badge Label Color": "Abzeichen Label Farbe", + "Badge Color": "Abzeichen Farbe", + "Badge Label Prefix": "Abzeichen Label Präfix", + "Badge Label Suffix": "Abzeichen Label Suffix", + "Badge Maintenance Color": "Abzeichen Wartung Farbe", + "Badge Warn Color": "Abzeichen Warnung Farbe", + "Badge Style": "Abzeichen Stil", + "Badge value (For Testing only.)": "Abzeichen Wert (nur für Tests)", + "Badge URL": "Abzeichen URL", + "Badge Up Color": "Abzeichen Up Farbe", + "Badge Down Color": "Abzeichen Down Farbe", + "Badge Pending Color": "Abzeichen Pending Farbe", + "Badge Down Days": "Abzeichen Down Tage", + "Monitor Setting": "{0}'s Monitor Einstellung", + "Badge Prefix": "Abzeichen Wert Präfix", + "Badge Suffix": "Abzeichen Wert Suffix", + "Badge Warn Days": "Abzeichen Warnung Tage", + "Group": "Gruppe", + "Monitor Group": "Monitor Gruppe", + "noGroupMonitorMsg": "Nicht verfügbar. Erstelle zunächst einen Gruppenmonitor.", + "Close": "Schließen", + "chromeExecutableAutoDetect": "Automatische Erkennung", + "chromeExecutableDescription": "Für Docker-Benutzer, die Chromium noch nicht installiert haben, kann es ein paar Minuten dauern, bis es installiert ist und das Testergebnis angezeigt wird. Es benötigt 1 GB Speicherplatz.", + "chromeExecutable": "Chrome/Chromium Ausführbare Datei", + "Invert Keyword": "Schlüsselwort invertieren", + "invertKeywordDescription": "Achte darauf, dass das Schlüsselwort eher fehlt als vorhanden ist.", + "webhookCustomBodyDesc": "Definiere einen benutzerdefinierten HTTP-Body für die Anfrage. Die Template-Variablen {msg}, {heartbeat} und {monitor} werden akzeptiert.", + "webhookBodyPresetOption": "Voreinstellung - {0}", + "webhookBodyCustomOption": "Benutzerdefinierter Body", + "Request Body": "Anforderungstext", + "Badge Duration (in hours)": "Abzeichen Dauer (in Stunden)", + "Badge Preview": "Abzeichen Vorschau", + "twilioApiKey": "API-Schlüssel (optional)", + "Notify Channel": "Notify Kanal", + "Enter the list of brokers": "Gib die Liste der Broker ein", + "Kafka Topic Name": "Kafka Topic Name", + "Kafka Producer Message": "Kafka Producer Nachricht", + "Enable Kafka SSL": "Kafka SSL aktivieren", + "Enable Kafka Producer Auto Topic Creation": "Kafka Producer Auto Topic Creation aktivieren", + "Kafka SASL Options": "Kafka SASL Optionen", + "Mechanism": "Mechanismus", + "Pick a SASL Mechanism...": "Wähle ein SASL Mechanismus…", + "Authorization Identity": "Authorization Identity", + "AccessKey Id": "AccessKey Id", + "Secret AccessKey": "Geheimer Zugriffsschlüssel", + "Session Token": "Sitzungs-Token", + "aboutNotifyChannel": "Notify Kanal löst eine Desktop- oder Mobilbenachrichtigung für alle Mitglieder des Kanals aus, unabhängig davon, ob deine Verfügbarkeit auf aktiv oder abwesend eingestellt ist.", + "Kafka Brokers": "Kafka Brokers", + "Press Enter to add broker": "Drücke Enter um den Broker hinzuzufügen", + "filterActive": "Aktiv", + "filterActivePaused": "Pausiert", + "Expected Value": "Erwarteter Wert", + "Json Query": "Json-Abfrage", + "tailscalePingWarning": "Um den Tailscale Ping Monitor nutzen zu können, musst du Uptime Kuma ohne Docker installieren und den Tailscale Client auf dem Server installieren.", + "Server URL should not contain the nfty topic": "Die Server-URL sollte das nfty-Thema nicht enthalten", + "pushDeerServerDescription": "Leer lassen um den offiziellen Server zu verwenden", + "FlashDuty Severity": "Schweregrad", + "nostrRelays": "Nostr Relays", + "gamedigGuessPort": "Gamedig: Vermuteter Port", + "Request Timeout": "Zeitüberschreitung der Anfrage", + "styleElapsedTimeShowNoLine": "Anzeigen (keine Zeile)", + "Select": "Auswählen", + "selectedMonitorCount": "Ausgewählt: {0}", + "PushDeer Server": "PushDeer Server", + "nostrRelaysHelp": "Eine Relay-URL pro Zeile", + "nostrSender": "Privater Schlüssel des Absenders (nsec)", + "gamedigGuessPortDescription": "Der vom Valve Server Query Protocol verwendete Port kann sich vom Port des Clients unterscheiden. Versuche dies, wenn der Monitor keine Verbindung zum Server herstellen kann.", + "wayToGetFlashDutyKey": "Gehe zu Channel -> (Wähle einen Channel) -> Integrationen -> Neue Integration hinzufügen', füge ein 'Uptime Kuma' hinzu, um eine Push-Adresse zu erhalten, und kopiere den Integrationsschlüssel in die Adresse. Für weitere Informationen besuche", + "timeoutAfter": "Zeitüberschreitung nach {0} Sekunden", + "styleElapsedTimeShowWithLine": "Anzeigen (mit Zeile)", + "styleElapsedTime": "Verstrichene Zeit unter der Prüfintervallleiste", + "Check/Uncheck": "Aktivieren/Deaktivieren", + "nostrRecipients": "Öffentliche Schlüssel des Empfängers (npub)", + "nostrRecipientsHelp": "npub-Format, eine pro Zeile", + "showCertificateExpiry": "Ablauf des Zertifikats anzeigen", + "noOrBadCertificate": "Kein/schlechtes Zertifikat", + "enableNSCD": "Aktiviere NSCD (Name Service Cache Daemon) zur Zwischenspeicherung aller DNS-Anfragen", + "setupDatabaseChooseDatabase": "Welche Datenbank möchtest du verwenden?", + "setupDatabaseEmbeddedMariaDB": "Du brauchst nichts einzustellen. Dieses Docker-Image hat automatisch eine MariaDB für dich eingerichtet und konfiguriert. Uptime Kuma wird sich mit dieser Datenbank über einen Unix-Socket verbinden.", + "dbName": "Datenbank Name", + "setupDatabaseMariaDB": "Mit externer MariaDB-Datenbank verbinden. Du musst die Verbindungsinformationen für die Datenbank festlegen.", + "setupDatabaseSQLite": "Eine einfache Datenbankdatei, empfohlen für kleinere Bereitstellungen. Vor v2.0.0 verwendete Uptime Kuma SQLite als Standarddatenbank.", + "Saved.": "Gespeichert.", + "toastSuccessTimeout": "Zeitüberschreitung für Erfolgsbenachrichtigungen", + "toastErrorTimeout": "Zeitüberschreitung für Fehlerbenachrichtigungen", + "monitorToastMessagesLabel": "Toast-Benachrichtigungen überwachen", + "monitorToastMessagesDescription": "Toast-Benachrichtigungen für Monitore verschwinden nach einer bestimmten Zeit in Sekunden. Auf -1 setzen, um die Zeitüberschreitung zu deaktivieren. Der Wert 0 deaktiviert die Toast-Benachrichtigungen.", + "Bark API Version": "Bark API Version", + "pushViewCode": "Wie verwendet man den Push-Monitor? (Code anzeigen)", + "pushOthers": "Sonstige", + "programmingLanguages": "Programmiersprachen", + "authInvalidToken": "Ungültiges Token.", + "authIncorrectCreds": "Falscher Benutzername oder falsches Passwort.", + "2faAlreadyEnabled": "2FA ist bereits aktiviert.", + "2faEnabled": "2FA ist aktiviert.", + "2faDisabled": "2FA ist deaktiviert.", + "successResumed": "Erfolgreich wiederaufgenommen.", + "successPaused": "Erfolgreich pausiert.", + "successDeleted": "Erfolgreich gelöscht.", + "successEdited": "Erfolgreich bearbeitet.", + "successBackupRestored": "Sicherung erfolgreich wiederhergestellt.", + "successDisabled": "Erfolgreich deaktiviert.", + "successEnabled": "Erfolgreich aktiviert.", + "tagNotFound": "Tag nicht gefunden.", + "authUserInactiveOrDeleted": "Der Benutzer ist inaktiv oder gelöscht.", + "successAdded": "Erfolgreich hinzugefügt.", + "successAuthChangePassword": "Das Passwort wurde erfolgreich aktualisiert.", + "foundChromiumVersion": "Gefunden Chromium/Chrome. Version: {0}", + "Reset Token": "Token zurücksetzen", + "leave blank for default subject": "leer lassen für Standard-Betreff", + "emailCustomBody": "Benutzerdefinierter Body", + "leave blank for default body": "leer lassen für Standard Body", + "emailTemplateServiceName": "Dienst Name", + "emailTemplateStatus": "Status", + "emailTemplateMsg": "Nachricht der Benachrichtigung", + "liquidIntroduction": "Die Templatierbarkeit wird durch die Liquid Templating Language erreicht. Hinweise zur Verwendung findest du auf {0}. Dies sind die verfügbaren Variablen:", + "emailCustomisableContent": "Anpassbarer Inhalt", + "smtpLiquidIntroduction": "Die folgenden beiden Felder können mit der Liquid Templating Language angepasst werden. Eine Anleitung zur Verwendung findest du in der {0}. Dies sind die verfügbaren Variablen:", + "emailTemplateHostnameOrURL": "Hostname oder URL", + "emailTemplateLimitedToUpDownNotification": "nur bei UP/DOWN-Heartbeats verfügbar, sonst null", + "templateMsg": "Nachricht der Benachrichtigung", + "templateHeartbeatJSON": "Objekt, das den Heartbeat beschreibt", + "templateMonitorJSON": "Objekt zur Beschreibung des Monitors", + "templateLimitedToUpDownCertNotifications": "nur verfügbar für UP/DOWN/Zertifikat-Ablaufbenachrichtigungen", + "templateLimitedToUpDownNotifications": "nur für UP/DOWN-Benachrichtigungen verfügbar", + "emailTemplateMonitorJSON": "Objekt zur Beschreibung des Monitors", + "emailTemplateHeartbeatJSON": "Objekt, das den Heartbeat beschreibt", + "GrafanaOncallUrl": "Grafana Oncall URL", + "noDockerHostMsg": "Nicht verfügbar. Richte zunächst einen Docker-Host ein.", + "DockerHostRequired": "Bitte Docker-Host für diesen Monitor festlegen.", + "Browser Screenshot": "Browser Screenshot", + "setup a new monitor group": "Neue Monitorgruppe einrichten", + "Add a new expiry notification day": "Neuen Tag für Auslaufbenachrichtigung hinzufügen", + "Remote Browsers": "Remote Browser", + "Remote Browser": "Remote Browser", + "Add a Remote Browser": "Remote Browser hinzufügen", + "Remote Browser not found!": "Remote Browser nicht gefunden!", + "remoteBrowsersDescription": "Remote Browser sind eine Alternative zur lokalen Ausführung von Chromium. Einrichtung mit einem Dienst wie browserless.io oder verbinde mit deinem Eigenen", + "self-hosted container": "Selbstverwalteter Container", + "remoteBrowserToggle": "Standardmäßig läuft Chromium innerhalb des Uptime-Kuma-Containers. Du kannst einen Remote-Browser verwenden, indem du diesen Schalter umlegst.", + "useRemoteBrowser": "Verwende einen Remote Browser", + "deleteRemoteBrowserMessage": "Bist du sicher, dass du diesen Remote Browser für alle Monitore löschen möchtest?", + "Remove the expiry notification": "Tag für Auslaufbenachrichtigung löschen", + "openModalTo": "Modal öffnen nach {0}", + "Add a domain": "Domain hinzufügen", + "Remove domain": "Domain '{0}' entfernen", + "successKeyword": "Erfolgsschlüsselwort", + "successKeywordExplanation": "MQTT-Schlüsselwort, das als Erfolg gewertet wird", + "settingUpDatabaseMSG": "Die Datenbank wird eingerichtet. Dies kann einen Moment dauern, bitte habe Geduld.", + "Search monitored sites": "Überwachte Seiten durchsuchen", + "statusPageSpecialSlugDesc": "Spezieller Slug {0}: diese Seite wird angezeigt, wenn kein Slug angegeben wird", + "ntfyPriorityHelptextAllEvents": "Alle Ereignisse werden mit der höchsten Priorität gesendet", + "ntfyPriorityHelptextAllExceptDown": "Alle Ereignisse werden mit dieser Priorität gesendet, außer {0}-Ereignisse, die eine Priorität von {1} haben", + "What is a Remote Browser?": "Was ist ein Remote-Browser?", + "Channel access token (Long-lived)": "Channel-Token (langlebig)", + "Your User ID": "Deine Benutzer-ID", + "wayToGetHeiiOnCallDetails": "Wie man die Trigger-ID und API-Schlüssel erhält, wird in der {Dokumentation} erklärt", + "documentationOf": "{0} Dokumentation", + "gtxMessagingToHint": "Internationales Format, mit vorangestelltem \"+\" ({e164}, {e212} oder {e214})", + "From Phone Number / Transmission Path Originating Address (TPOA)": "Von Telefonnummer / Transmission Path Originating Address (TPOA)", + "To Phone Number": "Zur Telefonnummer", + "gtxMessagingApiKeyHint": "Du findest deinen API-Schlüssel unter: Meine Routing-Konten > Kontoinformationen anzeigen > API-Anmeldeinformationen > REST-API (v2.x)", + "gtxMessagingFromHint": "Auf Mobiltelefonen sieht der Empfänger die TPOA als Absender der Nachricht. Erlaubt sind bis zu 11 alphanumerische Zeichen, eine Kurzwahlnummer, die lokale Langwahlnummer oder internationale Nummern ({e164}, {e212} oder {e214})", + "Alphanumeric (recommended)": "Alphanumerisch (empfohlen)", + "Telephone number": "Telefonnummer", + "Originator": "Absender", + "cellsyntOriginator": "Sichtbar auf dem Mobiltelefon des Empfängers als Absender der Nachricht. Zulässige Werte und Funktion hängen vom Parametertyp ab.", + "Destination": "Ziel", + "Allow Long SMS": "Lange SMS zulassen", + "cellsyntSplitLongMessages": "Teile lange Nachrichten in bis zu 6 Teile. 153 x 6 = 918 Zeichen.", + "max 15 digits": "max. 15 Ziffern", + "max 11 alphanumeric characters": "max. 11 alphanumerische Zeichen", + "Originator type": "Typ des Absenders", + "cellsyntOriginatortypeAlphanumeric": "Alphanumerische Zeichenfolge (max. 11 alphanumerische Zeichen). Die Empfänger können nicht auf die Nachricht antworten.", + "cellsyntOriginatortypeNumeric": "Numerischer Wert (max. 15 Stellen) mit Telefonnummer im internationalen Format ohne Vorwahl 00 (Beispiel UK-Nummer 07920 110 000 sollte auf 447920110000 gesetzt werden). Empfänger können auf die Nachricht antworten.", + "cellsyntDestination": "Telefonnummer des Empfängers im internationalen Format mit führender 00, gefolgt von der Landesvorwahl, z. B. 00447920110000 für die britische Nummer 07920 110 000 (insgesamt maximal 17 Ziffern). Maximal 25000 kommagetrennte Empfänger pro HTTP-Anfrage.", + "callMeBotGet": "Hier kannst du einen Endpunkt für {0}, {1} und {2} generieren. Denke daran, dass der Durchsatz möglicherweise begrenzt ist. Die Durchsatzbegrenzung ist: {3}", + "wayToGetWhapiUrlAndToken": "Du kannst die API-URL und das Token erhalten, indem du in deinen gewünschten Channel von {0} gehst", + "whapiRecipient": "Telefonnummer / Kontakt-ID / Gruppen-ID", + "API URL": "API URL", + "wayToWriteWhapiRecipient": "Die Rufnummer mit der internationalen Vorwahl, aber ohne das Pluszeichen am Anfang ({0}), die Kontakt-ID ({1}) oder die Gruppen-ID ({2}).", + "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Gib entweder den Hostnamen des Servers ein, mit dem eine Verbindung hergestellt werden soll, oder {localhost}, wenn ein {local_mta} verwendet werden soll.", + "locally configured mail transfer agent": "Lokal konfigurierter Mail-Transfer-Agent", + "Mentioning": "Erwähnung", + "Don't mention people": "Keine Personen erwähnen", + "Mention group": "Erwähne {group}", + "senderSevenIO": "Absendernummer oder Name", + "receiverSevenIO": "Empfangende Nummer", + "apiKeySevenIO": "SevenIO API Schlüssel", + "wayToGetSevenIOApiKey": "Besuche das Dashboard unter app.seven.io > Entwickler > API Schlüssel > grüne Hinzufügen Schaltfläche", + "receiverInfoSevenIO": "Wenn sich die empfangende Nummer nicht in Deutschland befindet, muss der Nummer die Landesvorwahl vorangestellt werden (z.B. für die Landesvorwahl 1 aus den USA muss 117612121212 anstelle von 017612121212 verwendet werden)", + "Host URL": "Host URL", + "whatHappensAtForumPost": "Erstelle einen neuen Forumsbeitrag. Dadurch werden KEINE Nachrichten in einem bestehenden Beitrag veröffentlicht. Um einen Beitrag in einem bestehenden Beitrag zu erstellen, verwende \"{option}\"", + "Bitrix24 Webhook URL": "Bitrix24 Webhook URL", + "wayToGetBitrix24Webhook": "Du kannst einen Webhook erstellen, indem du die Schritte unter {0} befolgst", + "bitrix24SupportUserID": "Gib deine User-ID in Bitrix24 ein. Du kannst die ID über den Link erfahren, indem du auf das Profil des Users gehst.", + "Command": "Befehl", + "mongodbCommandDescription": "Führe einen MongoDB Befehl gegen die Datenbank aus. Informationen zu den verfügbaren Befehlen findest du in der {documentation}", + "Refresh Interval": "Aktualisierungsintervall", + "Refresh Interval Description": "Die Statusseite wird alle {0} Sekunden neu geladen", + "Select message type": "Nachrichtentyp auswählen", + "Send to channel": "An Kanal senden", + "ignoreTLSErrorGeneral": "TLS/SSL-Fehler für Verbindung ignorieren", + "Create new forum post": "Neuen Forumsbeitrag erstellen", + "postToExistingThread": "An bestehendes Thema/Forumbeitrag senden", + "forumPostName": "Name des Forumsbeitrags", + "threadForumPostID": "Themen-/Forumbeitrags-ID", + "e.g. {discordThreadID}": "z.B. {discordThreadID}", + "wayToGetDiscordThreadId": "Das Abrufen einer Thread-/Forumspost-ID ist ähnlich wie das Abrufen einer Channel-ID. Lese mehr darüber, wie man IDs abruft {0}", + "smspartnerPhoneNumber": "Telefonnummer(n)", + "smspartnerSenderName": "SMS Absender Name", + "smspartnerSenderNameInfo": "Muss zwischen 3..=11 regulären Zeichen sein", + "smspartnerApiurl": "Den API-Schlüssel findest du im Dashboard unter {0}", + "smspartnerPhoneNumberHelptext": "Die Nummer muss das internationale Format {0}, {1} haben. Mehrere Nummern müssen durch {2} getrennt werden", + "threemaRecipient": "Empfänger", + "threemaRecipientType": "Empfänger Typ", + "threemaRecipientTypeIdentity": "Threema-ID", + "threemaRecipientTypePhone": "Telefonnummer", + "threemaRecipientTypePhoneFormat": "E.164, ohne führendes +", + "threemaRecipientTypeEmail": "E-Mail Adresse", + "threemaSenderIdentity": "Gateway-ID", + "threemaApiAuthenticationSecret": "Gateway-ID Schlüssel", + "wayToGetThreemaGateway": "Du kannst dich für Threema Gateway {0} registrieren.", + "threemaRecipientTypeIdentityFormat": "8 Zeichen", + "threemaSenderIdentityFormat": "8 Zeichen, beginnt normalerweise mit *", + "threemaBasicModeInfo": "Hinweis: Diese Integration verwendet Threema Gateway im Basismodus (serverbasierte Verschlüsselung). Weitere Details siehe {0}.", + "apiKeysDisabledMsg": "API-Schlüssel sind deaktiviert, da die Authentifizierung deaktiviert ist.", + "wayToGetOnesenderUrlandToken": "Du kannst die URL und den Token auf der Onesender-Website erhalten. Weitere Infos {0}", + "Lost connection to the socket server.": "Verbindung zum Socket-Server verloren.", + "conditionDeleteGroup": "Gruppe löschen", + "greater than": "mehr als", + "snmpOIDHelptext": "Gib die OID für den zu überwachenden Sensor oder Status ein. Verwende Netzwerkverwaltungstools wie MIB-Browser oder SNMP-Software, wenn du bezüglich OID unsicher bist.", + "signl4Docs": "Weitere Informationen zur Konfiguration von SIGNL4 und zum Abrufen der SIGNL4-Webhook-URL siehe {0}.", + "now": "jetzt", + "time ago": "vor {0}", + "Json Query Expression": "Json Query Ausdrck", + "-year": "-Jahr", + "and": "und", + "jsonQueryDescription": "Parsen und Extrahieren spezifischer Daten aus der JSON-Antwort des Servers mittels JSON-Abfrage oder Verwendung von \"$\" für die rohe Antwort, wenn kein JSON erwartet wird. Das Ergebnis wird dann mit dem erwarteten Wert in Form von Strings verglichen. Siehe {0} für die Dokumentation und verwende {1}, um mit Abfragen zu experimentieren.", + "cacheBusterParamDescription": "Zufällig generierter Parameter um den Cache zu umgehen.", + "cacheBusterParam": "Den Parameter {0} hinzufügen", + "Community String": "Gemeinschaftliche Zeichenkette", + "snmpCommunityStringHelptext": "Diese Zeichenfolge dient als Passwort zur Authentifizierung und Kontrolle des Zugriffs auf SNMP-fähigen Geräten. Pass sie an die Konfiguration des SNMP-Geräts an.", + "OID (Object Identifier)": "OID (Objekt-Identifikator)", + "Condition": "Bedingung", + "SNMP Version": "SNMP Version", + "Please enter a valid OID.": "Gib eine gültige OID ein.", + "Host Onesender": "Host Onesender", + "Token Onesender": "Token Onesender", + "Recipient Type": "Empfänger Typ", + "Private Number": "Private Nummer", + "Group ID": "Gruppen ID", + "privateOnesenderDesc": "Stell sicher, dass die Telefonnummer gültig ist. Um Nachrichten an private Telefonnummer zu senden, z. B.: 628123456789", + "groupOnesenderDesc": "Stell sicher, dass die GroupID gültig ist. Um Nachricht an die Gruppe zu senden, z.B.: 628123456789-342345", + "Add Remote Browser": "Remote-Browser hinzufügen", + "New Group": "Neue Gruppe", + "Group Name": "Gruppenname", + "OAuth2: Client Credentials": "OAuth2: Client-Anmeldeinformationen", + "Authentication Method": "Authentifizierungsmethode", + "Authorization Header": "Autorisierungs-Header", + "Form Data Body": "Formular Data Body", + "OAuth Token URL": "OAuth Token URL", + "Client ID": "Client ID", + "Client Secret": "Client Secret", + "OAuth Scope": "OAuth Scope", + "Optional: Space separated list of scopes": "Optional: Durch Leerzeichen getrennte Liste der Scopes", + "Go back to home page.": "Zurück zur Startseite.", + "No tags found.": "Keine Tags gefunden.", + "Cannot connect to the socket server.": "Es kann keine Verbindung zum Socket-Server hergestellt werden.", + "SIGNL4": "SIGNL4", + "SIGNL4 Webhook URL": "SIGNL4 Webhook URL", + "Conditions": "Bedingungen", + "conditionAdd": "Bedingung hinzufügen", + "conditionDelete": "Bedingung löschen", + "conditionAddGroup": "Gruppe hinzufügen", + "conditionValuePlaceholder": "Wert", + "equals": "ist gleich", + "not equals": "ist nicht gleich", + "contains": "enthält", + "not contains": "enthält nicht", + "starts with": "beginnt mit", + "not starts with": "beginnt nicht mit", + "ends with": "endet mit", + "not ends with": "endet nicht mit", + "less than": "weniger als", + "less than or equal to": "kleiner als oder gleich", + "greater than or equal to": "größer als oder gleich", + "record": "Eintrag", + "shrinkDatabaseDescriptionSqlite": "Datenbank {vacuum} für SQLite auslösen. {auto_vacuum} ist bereits aktiviert, aber dies defragmentiert die Datenbank nicht und packt auch nicht einzelne Datenbankseiten neu, wie es der Befehl {vacuum} tut." +} diff --git a/src/lang/en.json b/src/lang/en.json index 5bfc3bd92..99e9f775d 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -1,1057 +1,1057 @@ -{ - "languageName": "English", - "setupDatabaseChooseDatabase": "Which database would you like to use?", - "setupDatabaseEmbeddedMariaDB": "You don't need to set anything. This docker image has embedded and configured MariaDB for you automatically. Uptime Kuma will connect to this database via unix socket.", - "setupDatabaseMariaDB": "Connect to an external MariaDB database. You need to set the database connection information.", - "setupDatabaseSQLite": "A simple database file, recommended for small-scale deployments. Prior to v2.0.0, Uptime Kuma used SQLite as the default database.", - "settingUpDatabaseMSG": "Setting up the database. It may take a while, please be patient.", - "dbName": "Database Name", - "Settings": "Settings", - "Dashboard": "Dashboard", - "Help": "Help", - "New Update": "New Update", - "Language": "Language", - "Appearance": "Appearance", - "Theme": "Theme", - "General": "General", - "Game": "Game", - "Primary Base URL": "Primary Base URL", - "Version": "Version", - "Check Update On GitHub": "Check Update On GitHub", - "List": "List", - "Home": "Home", - "Add": "Add", - "Add New Monitor": "Add New Monitor", - "Quick Stats": "Quick Stats", - "Up": "Up", - "Down": "Down", - "Pending": "Pending", - "statusMaintenance": "Maintenance", - "Maintenance": "Maintenance", - "Unknown": "Unknown", - "Cannot connect to the socket server": "Cannot connect to the socket server", - "Reconnecting...": "Reconnecting...", - "General Monitor Type": "General Monitor Type", - "Passive Monitor Type": "Passive Monitor Type", - "Specific Monitor Type": "Specific Monitor Type", - "markdownSupported": "Markdown syntax supported", - "pauseDashboardHome": "Pause", - "Pause": "Pause", - "Name": "Name", - "Status": "Status", - "DateTime": "DateTime", - "Message": "Message", - "No important events": "No important events", - "Resume": "Resume", - "Edit": "Edit", - "Delete": "Delete", - "Current": "Current", - "Uptime": "Uptime", - "Cert Exp.": "Cert Exp.", - "Monitor": "Monitor | Monitors", - "now": "now", - "time ago": "{0} ago", - "day": "day | days", - "-day": "-day", - "hour": "hour", - "-hour": "-hour", - "-year": "-year", - "Response": "Response", - "Ping": "Ping", - "Monitor Type": "Monitor Type", - "Keyword": "Keyword", - "Invert Keyword": "Invert Keyword", - "Expected Value": "Expected Value", - "Json Query Expression": "Json Query Expression", - "Friendly Name": "Friendly Name", - "URL": "URL", - "Hostname": "Hostname", - "Host URL": "Host URL", - "locally configured mail transfer agent": "locally configured mail transfer agent", - "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Either enter the hostname of the server you want to connect to or {localhost} if you intend to use a {local_mta}", - "Port": "Port", - "Heartbeat Interval": "Heartbeat Interval", - "Request Timeout": "Request Timeout", - "timeoutAfter": "Timeout after {0} seconds", - "Retries": "Retries", - "Heartbeat Retry Interval": "Heartbeat Retry Interval", - "Resend Notification if Down X times consecutively": "Resend Notification if Down X times consecutively", - "Advanced": "Advanced", - "checkEverySecond": "Check every {0} seconds", - "retryCheckEverySecond": "Retry every {0} seconds", - "resendEveryXTimes": "Resend every {0} times", - "resendDisabled": "Resend disabled", - "retriesDescription": "Maximum retries before the service is marked as down and a notification is sent", - "ignoredTLSError": "TLS/SSL errors have been ignored", - "ignoreTLSError": "Ignore TLS/SSL errors for HTTPS websites", - "ignoreTLSErrorGeneral": "Ignore TLS/SSL error for connection", - "upsideDownModeDescription": "Flip the status upside down. If the service is reachable, it is DOWN.", - "maxRedirectDescription": "Maximum number of redirects to follow. Set to 0 to disable redirects.", - "Upside Down Mode": "Upside Down Mode", - "Max. Redirects": "Max. Redirects", - "Accepted Status Codes": "Accepted Status Codes", - "Push URL": "Push URL", - "needPushEvery": "You should call this URL every {0} seconds.", - "pushOptionalParams": "Optional parameters: {0}", - "pushViewCode": "How to use Push monitor? (View Code)", - "pushOthers": "Others", - "programmingLanguages": "Programming Languages", - "Save": "Save", - "Debug": "Debug", - "Copy": "Copy", - "Notifications": "Notifications", - "Not available, please setup.": "Not available, please set up.", - "Setup Notification": "Set Up Notification", - "Light": "Light", - "Dark": "Dark", - "Auto": "Auto", - "Theme - Heartbeat Bar": "Theme - Heartbeat Bar", - "styleElapsedTime": "Elapsed time under the heartbeat bar", - "styleElapsedTimeShowNoLine": "Show (No Line)", - "styleElapsedTimeShowWithLine": "Show (With Line)", - "Normal": "Normal", - "Bottom": "Bottom", - "None": "None", - "Timezone": "Timezone", - "Search Engine Visibility": "Search Engine Visibility", - "Allow indexing": "Allow indexing", - "Discourage search engines from indexing site": "Discourage search engines from indexing site", - "Change Password": "Change Password", - "Current Password": "Current Password", - "New Password": "New Password", - "Repeat New Password": "Repeat New Password", - "Update Password": "Update Password", - "Disable Auth": "Disable Auth", - "Enable Auth": "Enable Auth", - "disableauth.message1": "Are you sure want to {disableAuth}?", - "disable authentication": "disable authentication", - "disableauth.message2": "It is designed for scenarios {intendThirdPartyAuth} in front of Uptime Kuma such as Cloudflare Access, Authelia or other authentication mechanisms.", - "where you intend to implement third-party authentication": "where you intend to implement third-party authentication", - "Please use this option carefully!": "Please use this option carefully!", - "Logout": "Log out", - "Leave": "Leave", - "I understand, please disable": "I understand, please disable", - "Confirm": "Confirm", - "Yes": "Yes", - "No": "No", - "Username": "Username", - "Password": "Password", - "Remember me": "Remember me", - "Login": "Log in", - "No Monitors, please": "No Monitors, please", - "add one": "add one", - "Notification Type": "Notification Type", - "Email": "Email", - "Test": "Test", - "Certificate Info": "Certificate Info", - "Resolver Server": "Resolver Server", - "Resource Record Type": "Resource Record Type", - "Last Result": "Last Result", - "Create your admin account": "Create your admin account", - "Repeat Password": "Repeat Password", - "Import Backup": "Import Backup", - "Export Backup": "Export Backup", - "Export": "Export", - "Import": "Import", - "respTime": "Resp. Time (ms)", - "notAvailableShort": "N/A", - "Default enabled": "Default enabled", - "Apply on all existing monitors": "Apply on all existing monitors", - "Create": "Create", - "Clear Data": "Clear Data", - "Events": "Events", - "Heartbeats": "Heartbeats", - "Auto Get": "Auto Get", - "Schedule maintenance": "Schedule maintenance", - "Affected Monitors": "Affected Monitors", - "Pick Affected Monitors...": "Pick Affected Monitors…", - "Start of maintenance": "Start of maintenance", - "All Status Pages": "All Status Pages", - "Select status pages...": "Select status pages…", - "alertNoFile": "Please select a file to import.", - "alertWrongFileType": "Please select a JSON file.", - "Clear all statistics": "Clear all Statistics", - "Skip existing": "Skip existing", - "Overwrite": "Overwrite", - "Options": "Options", - "Keep both": "Keep both", - "Verify Token": "Verify Token", - "Setup 2FA": "Set Up 2FA", - "Enable 2FA": "Enable 2FA", - "Disable 2FA": "Disable 2FA", - "2FA Settings": "2FA Settings", - "Two Factor Authentication": "Two Factor Authentication", - "filterActive": "Active", - "filterActivePaused": "Paused", - "Active": "Active", - "Inactive": "Inactive", - "Token": "Token", - "Show URI": "Show URI", - "Tags": "Tags", - "Add New Tag": "Add New Tag", - "Add New below or Select...": "Add New below or Select…", - "Tag with this name already exist.": "Tag with this name already exists.", - "Tag with this value already exist.": "Tag with this value already exists.", - "color": "Color", - "value (optional)": "value (optional)", - "Gray": "Gray", - "Red": "Red", - "Orange": "Orange", - "Green": "Green", - "Blue": "Blue", - "Indigo": "Indigo", - "Purple": "Purple", - "Pink": "Pink", - "Custom": "Custom", - "Search...": "Search…", - "Search monitored sites": "Search monitored sites", - "Avg. Ping": "Avg. Ping", - "Avg. Response": "Avg. Response", - "Entry Page": "Entry Page", - "statusPageNothing": "Nothing here, please add a group or a monitor.", - "statusPageRefreshIn": "Refresh in: {0}", - "No Services": "No Services", - "All Systems Operational": "All Systems Operational", - "Partially Degraded Service": "Partially Degraded Service", - "Degraded Service": "Degraded Service", - "Add Group": "Add Group", - "Add a monitor": "Add a monitor", - "Edit Status Page": "Edit Status Page", - "Go to Dashboard": "Go to Dashboard", - "Status Page": "Status Page", - "Status Pages": "Status Pages", - "defaultNotificationName": "My {notification} Alert ({number})", - "here": "here", - "Required": "Required", - "Post URL": "Post URL", - "Content Type": "Content Type", - "webhookJsonDesc": "{0} is good for any modern HTTP servers such as Express.js", - "webhookFormDataDesc": "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", - "liquidIntroduction": "Templatability is achieved via the Liquid templating language. Please refer to the {0} for usage instructions. These are the available variables:", - "templateMsg": "message of the notification", - "templateHeartbeatJSON": "object describing the heartbeat", - "templateMonitorJSON": "object describing the monitor", - "templateLimitedToUpDownCertNotifications": "only available for UP/DOWN/Certificate expiry notifications", - "templateLimitedToUpDownNotifications": "only available for UP/DOWN notifications", - "webhookAdditionalHeadersTitle": "Additional Headers", - "webhookAdditionalHeadersDesc": "Sets additional headers sent with the webhook. Each header should be defined as a JSON key/value.", - "webhookBodyPresetOption": "Preset - {0}", - "webhookBodyCustomOption": "Custom Body", - "Webhook URL": "Webhook URL", - "Application Token": "Application Token", - "Server URL": "Server URL", - "Priority": "Priority", - "emojiCheatSheet": "Emoji cheat sheet: {0}", - "Read more": "Read more", - "appriseInstalled": "Apprise is installed.", - "appriseNotInstalled": "Apprise is not installed. {0}", - "Method": "Method", - "Body": "Body", - "Headers": "Headers", - "PushUrl": "Push URL", - "HeadersInvalidFormat": "The request headers are not valid JSON: ", - "BodyInvalidFormat": "The request body is not valid JSON: ", - "CopyToClipboardError": "Couldn't copy to clipbard: {error}", - "CopyToClipboardSuccess": "Copied!", - "CurlDebugInfo": "To debug the monitor, you can either paste this into your own machines terminal or into the machines terminal which uptime kuma is running on and see what you are requesting.{newiline}Please be aware of networking differences like {firewalls}, {dns_resolvers} or {docker_networks}.", - "firewalls": "firewalls", - "dns resolvers": "dns resolvers", - "docker networks": "docker networks", - "CurlDebugInfoOAuth2CCUnsupported": "Full oauth client credential flow is not supported in {curl}.{newline}Please get a bearer token and pass it via the {oauth2_bearer} option.", - "CurlDebugInfoProxiesUnsupported": "Proxy support in the above {curl} command is currently not implemented.", - "Monitor History": "Monitor History", - "clearDataOlderThan": "Keep monitor history data for {0} days.", - "PasswordsDoNotMatch": "Passwords do not match.", - "records": "records", - "One record": "One record", - "steamApiKeyDescription": "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", - "Current User": "Current User", - "topic": "Topic", - "topicExplanation": "MQTT topic to monitor", - "successKeyword": "Success Keyword", - "successKeywordExplanation": "MQTT Keyword that will be considered as success", - "recent": "Recent", - "Reset Token": "Reset Token", - "Done": "Done", - "Info": "Info", - "Security": "Security", - "Steam API Key": "Steam API Key", - "Shrink Database": "Shrink Database", - "shrinkDatabaseDescriptionSqlite": "Trigger database {vacuum} for SQLite. {auto_vacuum} is already enabled but this does not defragment the database nor repack individual database pages the way that the {vacuum} command does.", - "Pick a RR-Type...": "Pick a RR-Type…", - "Pick Accepted Status Codes...": "Pick Accepted Status Codes…", - "Default": "Default", - "HTTP Options": "HTTP Options", - "Create Incident": "Create Incident", - "Title": "Title", - "Content": "Content", - "Style": "Style", - "info": "info", - "warning": "warning", - "danger": "danger", - "error": "error", - "critical": "critical", - "primary": "primary", - "light": "light", - "dark": "dark", - "Post": "Post", - "Please input title and content": "Please input title and content", - "Created": "Created", - "Last Updated": "Last Updated", - "Switch to Light Theme": "Switch to Light Theme", - "Switch to Dark Theme": "Switch to Dark Theme", - "Show Tags": "Show Tags", - "Hide Tags": "Hide Tags", - "Description": "Description", - "No monitors available.": "No monitors available.", - "Add one": "Add one", - "No Monitors": "No Monitors", - "Untitled Group": "Untitled Group", - "Services": "Services", - "Discard": "Discard", - "Cancel": "Cancel", - "Select": "Select", - "selectedMonitorCount": "Selected: {0}", - "Check/Uncheck": "Check/Uncheck", - "Powered by": "Powered by", - "Customize": "Customize", - "Custom Footer": "Custom Footer", - "Custom CSS": "Custom CSS", - "deleteStatusPageMsg": "Are you sure want to delete this status page?", - "Proxies": "Proxies", - "default": "Default", - "enabled": "Enabled", - "setAsDefault": "Set As Default", - "deleteProxyMsg": "Are you sure want to delete this proxy for all monitors?", - "proxyDescription": "Proxies must be assigned to a monitor to function.", - "enableProxyDescription": "This proxy will not effect on monitor requests until it is activated. You can control temporarily disable the proxy from all monitors by activation status.", - "setAsDefaultProxyDescription": "This proxy will be enabled by default for new monitors. You can still disable the proxy separately for each monitor.", - "Certificate Chain": "Certificate Chain", - "Valid": "Valid", - "Invalid": "Invalid", - "User": "User", - "Installed": "Installed", - "Not installed": "Not installed", - "Running": "Running", - "Not running": "Not running", - "Remove Token": "Remove Token", - "Start": "Start", - "Stop": "Stop", - "Add New Status Page": "Add New Status Page", - "Slug": "Slug", - "Accept characters:": "Accept characters:", - "startOrEndWithOnly": "Start or end with {0} only", - "No consecutive dashes": "No consecutive dashes", - "statusPageSpecialSlugDesc": "Special slug {0}: this page will be shown when no slug is provided", - "Next": "Next", - "The slug is already taken. Please choose another slug.": "The slug is already taken. Please choose another slug.", - "No Proxy": "No Proxy", - "Authentication": "Authentication", - "HTTP Basic Auth": "HTTP Basic Auth", - "New Status Page": "New Status Page", - "Page Not Found": "Page Not Found", - "Reverse Proxy": "Reverse Proxy", - "Backup": "Backup", - "About": "About", - "wayToGetCloudflaredURL": "(Download cloudflared from {0})", - "cloudflareWebsite": "Cloudflare Website", - "Message:": "Message:", - "Don't know how to get the token? Please read the guide:": "Don't know how to get the token? Please read the guide:", - "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.", - "HTTP Headers": "HTTP Headers", - "Trust Proxy": "Trust Proxy", - "Other Software": "Other Software", - "For example: nginx, Apache and Traefik.": "For example: nginx, Apache and Traefik.", - "Please read": "Please read", - "Subject:": "Subject:", - "Valid To:": "Valid To:", - "Days Remaining:": "Days Remaining:", - "Issuer:": "Issuer:", - "Fingerprint:": "Fingerprint:", - "No status pages": "No status pages", - "Domain Name Expiry Notification": "Domain Name Expiry Notification", - "Add a new expiry notification day": "Add a new expiry notification day", - "Remove the expiry notification": "Remove the expiry notification day", - "Proxy": "Proxy", - "Date Created": "Date Created", - "Footer Text": "Footer Text", - "Refresh Interval": "Refresh Interval", - "Refresh Interval Description": "The status page will do a full site refresh every {0} seconds", - "Show Powered By": "Show Powered By", - "Domain Names": "Domain Names", - "signedInDisp": "Signed in as {0}", - "signedInDispDisabled": "Auth Disabled.", - "RadiusSecret": "Radius Secret", - "RadiusSecretDescription": "Shared Secret between client and server", - "RadiusCalledStationId": "Called Station Id", - "RadiusCalledStationIdDescription": "Identifier of the called device", - "RadiusCallingStationId": "Calling Station Id", - "RadiusCallingStationIdDescription": "Identifier of the calling device", - "Certificate Expiry Notification": "Certificate Expiry Notification", - "API Username": "API Username", - "API Key": "API Key", - "Show update if available": "Show update if available", - "Also check beta release": "Also check beta release", - "Using a Reverse Proxy?": "Using a Reverse Proxy?", - "Check how to config it for WebSocket": "Check how to config it for WebSocket", - "Steam Game Server": "Steam Game Server", - "Most likely causes:": "Most likely causes:", - "The resource is no longer available.": "The resource is no longer available.", - "There might be a typing error in the address.": "There might be a typing error in the address.", - "What you can try:": "What you can try:", - "Retype the address.": "Retype the address.", - "Go back to the previous page.": "Go back to the previous page.", - "Coming Soon": "Coming Soon", - "Connection String": "Connection String", - "Query": "Query", - "settingsCertificateExpiry": "TLS Certificate Expiry", - "certificationExpiryDescription": "HTTPS Monitors trigger notification when TLS certificate expires in:", - "Setup Docker Host": "Set Up Docker Host", - "Connection Type": "Connection Type", - "Docker Daemon": "Docker Daemon", - "noDockerHostMsg": "Not Available. Set Up a Docker Host First.", - "DockerHostRequired": "Please set the Docker Host for this monitor.", - "deleteDockerHostMsg": "Are you sure want to delete this docker host for all monitors?", - "socket": "Socket", - "tcp": "TCP / HTTP", - "tailscalePingWarning": "In order to use the Tailscale Ping monitor, you need to install Uptime Kuma without Docker and also install Tailscale client on your server.", - "Docker Container": "Docker Container", - "Container Name / ID": "Container Name / ID", - "Docker Host": "Docker Host", - "Docker Hosts": "Docker Hosts", - "Domain": "Domain", - "Workstation": "Workstation", - "Packet Size": "Packet Size", - "Bot Token": "Bot Token", - "wayToGetTelegramToken": "You can get a token from {0}.", - "Chat ID": "Chat ID", - "telegramMessageThreadID": "(Optional) Message Thread ID", - "telegramMessageThreadIDDescription": "Optional Unique identifier for the target message thread (topic) of the forum; for forum supergroups only", - "telegramSendSilently": "Send Silently", - "telegramSendSilentlyDescription": "Sends the message silently. Users will receive a notification with no sound.", - "telegramProtectContent": "Protect Forwarding/Saving", - "telegramProtectContentDescription": "If enabled, the bot messages in Telegram will be protected from forwarding and saving.", - "supportTelegramChatID": "Support Direct Chat / Group / Channel's Chat ID", - "wayToGetTelegramChatID": "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", - "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", - "chatIDNotFound": "Chat ID is not found; please send a message to this bot first", - "disableCloudflaredNoAuthMsg": "You are in No Auth mode, a password is not required.", - "trustProxyDescription": "Trust 'X-Forwarded-*' headers. If you want to get the correct client IP and your Uptime Kuma is behind a proxy such as Nginx or Apache, you should enable this.", - "wayToGetLineNotifyToken": "You can get an access token from {0}", - "Examples": "Examples", - "Home Assistant URL": "Home Assistant URL", - "Long-Lived Access Token": "Long-Lived Access Token", - "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ", - "Notification Service": "Notification Service", - "default: notify all devices": "default: notify all devices", - "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.", - "Automations can optionally be triggered in Home Assistant:": "Automations can optionally be triggered in Home Assistant:", - "Trigger type:": "Trigger type:", - "Event type:": "Event type:", - "Event data:": "Event data:", - "Then choose an action, for example switch the scene to where an RGB light is red.": "Then choose an action, for example switch the scene to where an RGB light is red.", - "Frontend Version": "Frontend Version", - "Frontend Version do not match backend version!": "Frontend Version do not match backend version!", - "backupOutdatedWarning": "Deprecated: Since a lot of features were added and this backup feature is a bit unmaintained, it cannot generate or restore a complete backup.", - "backupRecommend": "Please backup the volume or the data folder (./data/) directly instead.", - "Optional": "Optional", - "and": "and", - "or": "or", - "sameAsServerTimezone": "Same as Server Timezone", - "startDateTime": "Start Date/Time", - "endDateTime": "End Date/Time", - "cronExpression": "Cron Expression", - "cronSchedule": "Schedule: ", - "invalidCronExpression": "Invalid Cron Expression: {0}", - "recurringInterval": "Interval", - "Recurring": "Recurring", - "strategyManual": "Active/Inactive Manually", - "warningTimezone": "It is using the server's timezone", - "weekdayShortMon": "Mon", - "weekdayShortTue": "Tue", - "weekdayShortWed": "Wed", - "weekdayShortThu": "Thu", - "weekdayShortFri": "Fri", - "weekdayShortSat": "Sat", - "weekdayShortSun": "Sun", - "dayOfWeek": "Day of Week", - "dayOfMonth": "Day of Month", - "lastDay": "Last Day", - "lastDay1": "Last Day of Month", - "lastDay2": "2nd Last Day of Month", - "lastDay3": "3rd Last Day of Month", - "lastDay4": "4th Last Day of Month", - "No Maintenance": "No Maintenance", - "pauseMaintenanceMsg": "Are you sure want to pause?", - "maintenanceStatus-under-maintenance": "Under Maintenance", - "maintenanceStatus-inactive": "Inactive", - "maintenanceStatus-scheduled": "Scheduled", - "maintenanceStatus-ended": "Ended", - "maintenanceStatus-unknown": "Unknown", - "Display Timezone": "Display Timezone", - "Server Timezone": "Server Timezone", - "statusPageMaintenanceEndDate": "End", - "IconUrl": "Icon URL", - "Enable DNS Cache": "(Deprecated) Enable DNS Cache for HTTP(s) monitors", - "Enable": "Enable", - "Disable": "Disable", - "enableNSCD": "Enable NSCD (Name Service Cache Daemon) for caching all DNS requests", - "chromeExecutable": "Chrome/Chromium Executable", - "chromeExecutableAutoDetect": "Auto Detect", - "chromeExecutableDescription": "For Docker users, if Chromium is not yet installed, it may take a few minutes to install and display the test result. It takes 1GB of disk space.", - "dnsCacheDescription": "It may be not working in some IPv6 environments, disable it if you encounter any issues.", - "Single Maintenance Window": "Single Maintenance Window", - "Maintenance Time Window of a Day": "Maintenance Time Window of a Day", - "Effective Date Range": "Effective Date Range (Optional)", - "Schedule Maintenance": "Schedule Maintenance", - "Edit Maintenance": "Edit Maintenance", - "Date and Time": "Date and Time", - "DateTime Range": "DateTime Range", - "loadingError": "Cannot fetch the data, please try again later.", - "plugin": "Plugin | Plugins", - "install": "Install", - "installing": "Installing", - "uninstall": "Uninstall", - "uninstalling": "Uninstalling", - "confirmUninstallPlugin": "Are you sure want to uninstall this plugin?", - "notificationRegional": "Regional", - "Clone Monitor": "Clone Monitor", - "Clone": "Clone", - "cloneOf": "Clone of {0}", - "smtp": "Email (SMTP)", - "secureOptionNone": "None / STARTTLS (25, 587)", - "secureOptionTLS": "TLS (465)", - "Ignore TLS Error": "Ignore TLS Error", - "From Email": "From Email", - "emailCustomisableContent": "Customisable content", - "smtpLiquidIntroduction": "The following two fields are templatable via the Liquid templating Language. Please refer to the {0} for usage instructions. These are the available variables:", - "emailCustomSubject": "Custom Subject", - "leave blank for default subject": "leave blank for default subject", - "emailCustomBody": "Custom Body", - "leave blank for default body": "leave blank for default body", - "emailTemplateServiceName": "Service Name", - "emailTemplateHostnameOrURL": "Hostname or URL", - "emailTemplateStatus": "Status", - "emailTemplateMonitorJSON": "object describing the monitor", - "emailTemplateHeartbeatJSON": "object describing the heartbeat", - "emailTemplateMsg": "message of the notification", - "emailTemplateLimitedToUpDownNotification": "only available for UP/DOWN heartbeats, otherwise null", - "To Email": "To Email", - "smtpCC": "CC", - "smtpBCC": "BCC", - "Discord Webhook URL": "Discord Webhook URL", - "wayToGetDiscordURL": "You can get this by going to Server Settings -> Integrations -> View Webhooks -> New Webhook", - "Bot Display Name": "Bot Display Name", - "Prefix Custom Message": "Prefix Custom Message", - "Hello @everyone is...": "Hello {'@'}everyone is…", - "Select message type": "Select message type", - "Send to channel": "Send to channel", - "Create new forum post": "Create new forum post", - "postToExistingThread": "Post to existing thread / forum post", - "forumPostName": "Forum post name", - "threadForumPostID": "Thread / Forum post ID", - "e.g. {discordThreadID}": "e.g. {discordThreadID}", - "whatHappensAtForumPost": "Create a new forum post. This does NOT post messages in existing post. To post in existing post use \"{option}\"", - "wayToGetDiscordThreadId": "Getting a thread / forum post id is similar to getting a channel id. Read more about how to get ids {0}", - "wayToGetTeamsURL": "You can learn how to create a webhook URL {0}.", - "wayToGetZohoCliqURL": "You can learn how to create a webhook URL {0}.", - "needSignalAPI": "You need to have a signal client with REST API.", - "wayToCheckSignalURL": "You can check this URL to view how to set one up:", - "Number": "Number", - "Recipients": "Recipients", - "Access Token": "Access Token", - "Channel access token": "Channel access token", - "Channel access token (Long-lived)": "Channel access token (Long-lived)", - "Line Developers Console": "Line Developers Console", - "lineDevConsoleTo": "Line Developers Console - {0}", - "Basic Settings": "Basic Settings", - "User ID": "User ID", - "Your User ID": "Your user ID", - "Messaging API": "Messaging API", - "wayToGetLineChannelToken": "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", - "Icon URL": "Icon URL", - "aboutIconURL": "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", - "aboutMattermostChannelName": "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", - "dataRetentionTimeError": "Retention period must be 0 or greater", - "infiniteRetention": "Set to 0 for infinite retention.", - "confirmDeleteTagMsg": "Are you sure you want to delete this tag? Monitors associated with this tag will not be deleted.", - "enableGRPCTls": "Allow to send gRPC request with TLS connection", - "grpcMethodDescription": "Method name is convert to camelCase format such as sayHello, check, etc.", - "acceptedStatusCodesDescription": "Select status codes which are considered as a successful response.", - "deleteMonitorMsg": "Are you sure want to delete this monitor?", - "deleteMaintenanceMsg": "Are you sure want to delete this maintenance?", - "deleteNotificationMsg": "Are you sure want to delete this notification for all monitors?", - "dnsPortDescription": "DNS server port. Defaults to 53. You can change the port at any time.", - "resolverserverDescription": "Cloudflare is the default server. You can change the resolver server anytime.", - "rrtypeDescription": "Select the RR type you want to monitor", - "pauseMonitorMsg": "Are you sure want to pause?", - "enableDefaultNotificationDescription": "This notification will be enabled by default for new monitors. You can still disable the notification separately for each monitor.", - "clearEventsMsg": "Are you sure want to delete all events for this monitor?", - "clearHeartbeatsMsg": "Are you sure want to delete all heartbeats for this monitor?", - "confirmClearStatisticsMsg": "Are you sure you want to delete ALL statistics?", - "importHandleDescription": "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", - "confirmImportMsg": "Are you sure you want to import the backup? Please verify you've selected the correct import option.", - "twoFAVerifyLabel": "Please enter your token to verify 2FA:", - "tokenValidSettingsMsg": "Token is valid! You can now save the 2FA settings.", - "confirmEnableTwoFAMsg": "Are you sure you want to enable 2FA?", - "confirmDisableTwoFAMsg": "Are you sure you want to disable 2FA?", - "recurringIntervalMessage": "Run once every day | Run once every {0} days", - "affectedMonitorsDescription": "Select monitors that are affected by current maintenance", - "affectedStatusPages": "Show this maintenance message on selected status pages", - "atLeastOneMonitor": "Select at least one affected monitor", - "passwordNotMatchMsg": "The repeat password does not match.", - "notificationDescription": "Notifications must be assigned to a monitor to function.", - "keywordDescription": "Search keyword in plain HTML or JSON response. The search is case-sensitive.", - "invertKeywordDescription": "Look for the keyword to be absent rather than present.", - "jsonQueryDescription": "Parse and extract specific data from the server's JSON response using JSON query or use \"$\" for the raw response, if not expecting JSON. The result is then compared to the expected value, as strings. See {0} for documentation and use {1} to experiment with queries.", - "backupDescription": "You can backup all monitors and notifications into a JSON file.", - "backupDescription2": "Note: history and event data is not included.", - "backupDescription3": "Sensitive data such as notification tokens are included in the export file; please store export securely.", - "endpoint": "endpoint", - "octopushAPIKey": "\"API key\" from HTTP API credentials in control panel", - "octopushLogin": "\"Login\" from HTTP API credentials in control panel", - "promosmsLogin": "API Login Name", - "promosmsPassword": "API Password", - "pushoversounds pushover": "Pushover (default)", - "pushoversounds bike": "Bike", - "pushoversounds bugle": "Bugle", - "pushoversounds cashregister": "Cash Register", - "pushoversounds classical": "Classical", - "pushoversounds cosmic": "Cosmic", - "pushoversounds falling": "Falling", - "pushoversounds gamelan": "Gamelan", - "pushoversounds incoming": "Incoming", - "pushoversounds intermission": "Intermission", - "pushoversounds magic": "Magic", - "pushoversounds mechanical": "Mechanical", - "pushoversounds pianobar": "Piano Bar", - "pushoversounds siren": "Siren", - "pushoversounds spacealarm": "Space Alarm", - "pushoversounds tugboat": "Tug Boat", - "pushoversounds alien": "Alien Alarm (long)", - "pushoversounds climb": "Climb (long)", - "pushoversounds persistent": "Persistent (long)", - "pushoversounds echo": "Pushover Echo (long)", - "pushoversounds updown": "Up Down (long)", - "pushoversounds vibrate": "Vibrate Only", - "pushoversounds none": "None (silent)", - "pushyAPIKey": "Secret API Key", - "pushyToken": "Device token", - "apprise": "Apprise (Support 50+ Notification services)", - "GoogleChat": "Google Chat (Google Workspace only)", - "wayToGetKookBotToken": "Create application and get your bot token at {0}", - "wayToGetKookGuildID": "Switch on 'Developer Mode' in Kook setting, and right click the guild to get its ID", - "Guild ID": "Guild ID", - "User Key": "User Key", - "Device": "Device", - "Message Title": "Message Title", - "Notification Sound": "Notification Sound", - "More info on:": "More info on: {0}", - "pushoverDesc1": "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", - "pushoverDesc2": "If you want to send notifications to different devices, fill out Device field.", - "pushoverMessageTtl": "Message TTL (Seconds)", - "SMS Type": "SMS Type", - "octopushTypePremium": "Premium (Fast - recommended for alerting)", - "octopushTypeLowCost": "Low Cost (Slow - sometimes blocked by operator)", - "checkPrice": "Check {0} prices:", - "apiCredentials": "API credentials", - "octopushLegacyHint": "Do you use the legacy version of Octopush (2011-2020) or the new version?", - "Check octopush prices": "Check octopush prices {0}.", - "octopushPhoneNumber": "Phone number (intl format, eg : +33612345678) ", - "octopushSMSSender": "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea Device ID", - "Apprise URL": "Apprise URL", - "Example:": "Example: {0}", - "Read more:": "Read more: {0}", - "Status:": "Status: {0}", - "Strategy": "Strategy", - "Free Mobile User Identifier": "Free Mobile User Identifier", - "Free Mobile API Key": "Free Mobile API Key", - "Enable TLS": "Enable TLS", - "Proto Service Name": "Proto Service Name", - "Proto Method": "Proto Method", - "Proto Content": "Proto Content", - "Economy": "Economy", - "Lowcost": "Lowcost", - "high": "high", - "SendKey": "SendKey", - "SMSManager API Docs": "SMSManager API Docs ", - "Gateway Type": "Gateway Type", - "You can divide numbers with": "You can divide numbers with", - "Base URL": "Base URL", - "goAlertInfo": "GoAlert is a An open source application for on-call scheduling, automated escalations and notifications (like SMS or voice calls). Automatically engage the right person, the right way, and at the right time! {0}", - "goAlertIntegrationKeyInfo": "Get generic API integration key for the service in this format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" usually the value of token parameter of copied URL.", - "AccessKeyId": "AccessKey ID", - "SecretAccessKey": "AccessKey Secret", - "PhoneNumbers": "PhoneNumbers", - "TemplateCode": "TemplateCode", - "SignName": "SignName", - "Sms template must contain parameters: ": "Sms template must contain parameters: ", - "Bark API Version": "Bark API Version", - "Bark Endpoint": "Bark Endpoint", - "Bark Group": "Bark Group", - "Bark Sound": "Bark Sound", - "WebHookUrl": "WebHookUrl", - "SecretKey": "SecretKey", - "For safety, must use secret key": "For safety, must use secret key", - "Mentioning": "Mentioning", - "Don't mention people": "Don't mention people", - "Mention group": "Mention {group}", - "Device Token": "Device Token", - "Platform": "Platform", - "Huawei": "Huawei", - "High": "High", - "Retry": "Retry", - "Topic": "Topic", - "WeCom Bot Key": "WeCom Bot Key", - "Setup Proxy": "Set Up Proxy", - "Proxy Protocol": "Proxy Protocol", - "Proxy Server": "Proxy Server", - "Proxy server has authentication": "Proxy server has authentication", - "promosmsTypeEco": "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", - "promosmsTypeFlash": "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", - "promosmsTypeFull": "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", - "promosmsTypeSpeed": "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", - "promosmsPhoneNumber": "Phone number (for Polish recipient You can skip area codes)", - "promosmsSMSSender": "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "promosmsAllowLongSMS": "Allow long SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - "matrixHomeserverURL": "Homeserver URL (with http(s):// and optionally port)", - "Internal Room Id": "Internal Room ID", - "matrixDesc1": "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", - "matrixDesc2": "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", - "Channel Name": "Channel Name", - "Notify Channel": "Notify Channel", - "aboutNotifyChannel": "Notify channel will trigger a desktop or mobile notification for all members of the channel, whether their availability is set to active or away.", - "Uptime Kuma URL": "Uptime Kuma URL", - "setup a new monitor group": "set up a new monitor group", - "openModalTo": "open modal to {0}", - "Add a domain": "Add a domain", - "Remove domain": "Remove domain '{0}'", - "Icon Emoji": "Icon Emoji", - "signalImportant": "IMPORTANT: You cannot mix groups and numbers in recipients!", - "aboutWebhooks": "More info about Webhooks on: {0}", - "aboutChannelName": "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", - "aboutKumaURL": "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", - "smtpDkimSettings": "DKIM Settings", - "smtpDkimDesc": "Please refer to the Nodemailer DKIM {0} for usage.", - "documentation": "documentation", - "smtpDkimDomain": "Domain Name", - "smtpDkimKeySelector": "Key Selector", - "smtpDkimPrivateKey": "Private Key", - "smtpDkimHashAlgo": "Hash Algorithm (Optional)", - "smtpDkimheaderFieldNames": "Header Keys to sign (Optional)", - "smtpDkimskipFields": "Header Keys not to sign (Optional)", - "wayToGetPagerDutyKey": "You can get this by going to Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Here you can search for \"Events API V2\". More info {0}", - "Integration Key": "Integration Key", - "Integration URL": "Integration URL", - "Auto resolve or acknowledged": "Auto resolve or acknowledged", - "do nothing": "do nothing", - "auto acknowledged": "auto acknowledged", - "auto resolve": "auto resolve", - "alertaApiEndpoint": "API Endpoint", - "alertaEnvironment": "Environment", - "alertaApiKey": "API Key", - "alertaAlertState": "Alert State", - "alertaRecoverState": "Recover State", - "serwersmsAPIUser": "API Username (incl. webapi_ prefix)", - "serwersmsAPIPassword": "API Password", - "serwersmsPhoneNumber": "Phone number", - "serwersmsSenderName": "SMS Sender Name (registered via customer portal)", - "smseagleTo": "Phone number(s)", - "smseagleGroup": "Phonebook group name(s)", - "smseagleContact": "Phonebook contact name(s)", - "smseagleRecipientType": "Recipient type", - "smseagleRecipient": "Recipient(s) (multiple must be separated with comma)", - "smseagleToken": "API Access token", - "smseagleUrl": "Your SMSEagle device URL", - "smseagleEncoding": "Send as Unicode", - "smseaglePriority": "Message priority (0-9, default = 0)", - "smspartnerApiurl": "You can find your API key in your dashboard at {0}", - "smspartnerPhoneNumber": "Phone number(s)", - "smspartnerPhoneNumberHelptext": "The number must be in the international format {0}, {1}. Multiple numbers must be separated by {2}", - "smspartnerSenderName": "SMS Sender Name", - "smspartnerSenderNameInfo": "Must be between 3..=11 regular characters", - "Recipient Number": "Recipient Number", - "From Name/Number": "From Name/Number", - "Leave blank to use a shared sender number.": "Leave blank to use a shared sender number.", - "Octopush API Version": "Octopush API Version", - "Legacy Octopush-DM": "Legacy Octopush-DM", - "ntfy Topic": "ntfy Topic", - "Server URL should not contain the nfty topic": "Server URL should not contain the nfty topic", - "onebotHttpAddress": "OneBot HTTP Address", - "onebotMessageType": "OneBot Message Type", - "onebotGroupMessage": "Group", - "onebotPrivateMessage": "Private", - "onebotUserOrGroupId": "Group/User ID", - "onebotSafetyTips": "For safety, must set access token", - "PushDeer Server": "PushDeer Server", - "pushDeerServerDescription": "Leave blank to use the official server", - "PushDeer Key": "PushDeer Key", - "wayToGetClickSendSMSToken": "You can get API Username and API Key from {0} .", - "Custom Monitor Type": "Custom Monitor Type", - "Google Analytics ID": "Google Analytics ID", - "Edit Tag": "Edit Tag", - "Server Address": "Server Address", - "Learn More": "Learn More", - "Body Encoding": "Body Encoding", - "API Keys": "API Keys", - "Expiry": "Expiry", - "Expiry date": "Expiry date", - "Don't expire": "Don't expire", - "Continue": "Continue", - "Add Another": "Add Another", - "Key Added": "Key Added", - "apiKeyAddedMsg": "Your API key has been added. Please make a note of it as it will not be shown again.", - "Add API Key": "Add API Key", - "No API Keys": "No API Keys", - "apiKey-active": "Active", - "apiKey-expired": "Expired", - "apiKey-inactive": "Inactive", - "Expires": "Expires", - "disableAPIKeyMsg": "Are you sure you want to disable this API key?", - "deleteAPIKeyMsg": "Are you sure you want to delete this API key?", - "Generate": "Generate", - "pagertreeIntegrationUrl": "Integration URL", - "pagertreeUrgency": "Urgency", - "pagertreeSilent": "Silent", - "pagertreeLow": "Low", - "pagertreeMedium": "Medium", - "pagertreeHigh": "High", - "pagertreeCritical": "Critical", - "pagertreeResolve": "Auto Resolve", - "pagertreeDoNothing": "Do Nothing", - "wayToGetPagerTreeIntegrationURL": "After creating the Uptime Kuma integration in PagerTree, copy the Endpoint. See full details {0}", - "lunaseaTarget": "Target", - "lunaseaDeviceID": "Device ID", - "lunaseaUserID": "User ID", - "ntfyAuthenticationMethod": "Authentication Method", - "ntfyPriorityHelptextAllEvents": "All events are sent with the maximum priority", - "ntfyPriorityHelptextAllExceptDown": "All events are sent with this priority, except {0}-events, which have a priority of {1}", - "ntfyUsernameAndPassword": "Username and Password", - "twilioAccountSID": "Account SID", - "twilioApiKey": "Api Key (optional)", - "twilioAuthToken": "Auth Token / Api Key Secret", - "twilioFromNumber": "From Number", - "twilioToNumber": "To Number", - "Monitor Setting": "{0}'s Monitor Setting", - "Show Clickable Link": "Show Clickable Link", - "Show Clickable Link Description": "If checked everyone who have access to this status page can have access to monitor URL.", - "Open Badge Generator": "Open Badge Generator", - "Badge Generator": "{0}'s Badge Generator", - "Badge Type": "Badge Type", - "Badge Duration (in hours)": "Badge Duration (in hours)", - "Badge Label": "Badge Label", - "Badge Prefix": "Badge Value Prefix", - "Badge Suffix": "Badge Value Suffix", - "Badge Label Color": "Badge Label Color", - "Badge Color": "Badge Color", - "Badge Label Prefix": "Badge Label Prefix", - "Badge Preview": "Badge Preview", - "Badge Label Suffix": "Badge Label Suffix", - "Badge Up Color": "Badge Up Color", - "Badge Down Color": "Badge Down Color", - "Badge Pending Color": "Badge Pending Color", - "Badge Maintenance Color": "Badge Maintenance Color", - "Badge Warn Color": "Badge Warn Color", - "Badge Warn Days": "Badge Warn Days", - "Badge Down Days": "Badge Down Days", - "Badge Style": "Badge Style", - "Badge value (For Testing only.)": "Badge value (For Testing only.)", - "Badge URL": "Badge URL", - "Group": "Group", - "Monitor Group": "Monitor Group", - "monitorToastMessagesLabel": "Monitor Toast notifications", - "monitorToastMessagesDescription": "Toast notifications for monitors disappear after given time in seconds. Set to -1 disables timeout. Set to 0 disables toast notifications.", - "toastErrorTimeout": "Timeout for Error Notifications", - "toastSuccessTimeout": "Timeout for Success Notifications", - "Kafka Brokers": "Kafka Brokers", - "Enter the list of brokers": "Enter the list of brokers", - "Press Enter to add broker": "Press Enter to add broker", - "Kafka Topic Name": "Kafka Topic Name", - "Kafka Producer Message": "Kafka Producer Message", - "Enable Kafka SSL": "Enable Kafka SSL", - "Enable Kafka Producer Auto Topic Creation": "Enable Kafka Producer Auto Topic Creation", - "Kafka SASL Options": "Kafka SASL Options", - "Mechanism": "Mechanism", - "Pick a SASL Mechanism...": "Pick a SASL Mechanism…", - "Authorization Identity": "Authorization Identity", - "AccessKey Id": "AccessKey Id", - "Secret AccessKey": "Secret AccessKey", - "Session Token": "Session Token", - "noGroupMonitorMsg": "Not Available. Create a Group Monitor First.", - "Close": "Close", - "Request Body": "Request Body", - "wayToGetFlashDutyKey": "You can go to Channel -> (Select a Channel) -> Integrations -> Add a new integration' page, add a 'Uptime Kuma' to get a push address, copy the Integration Key in the address. For more information, please visit", - "FlashDuty Severity": "Severity", - "nostrRelays": "Nostr relays", - "nostrRelaysHelp": "One relay URL per line", - "nostrSender": "Sender Private Key (nsec)", - "nostrRecipients": "Recipients Public Keys (npub)", - "nostrRecipientsHelp": "npub format, one per line", - "showCertificateExpiry": "Show Certificate Expiry", - "noOrBadCertificate": "No/Bad Certificate", - "cacheBusterParam": "Add the {0} parameter", - "cacheBusterParamDescription": "Randomly generated parameter to skip caches.", - "gamedigGuessPort": "Gamedig: Guess Port", - "gamedigGuessPortDescription": "The port used by Valve Server Query Protocol may be different from the client port. Try this if the monitor cannot connect to your server.", - "Message format": "Message format", - "Send rich messages": "Send rich messages", - "Bitrix24 Webhook URL": "Bitrix24 Webhook URL", - "wayToGetBitrix24Webhook": "You can create a webhook by following the steps at {0}", - "bitrix24SupportUserID": "Enter your user ID in Bitrix24. You can find out the ID from the link by going to the user's profile.", - "Saved.": "Saved.", - "authUserInactiveOrDeleted": "The user is inactive or deleted.", - "authInvalidToken": "Invalid Token.", - "authIncorrectCreds": "Incorrect username or password.", - "2faAlreadyEnabled": "2FA is already enabled.", - "2faEnabled": "2FA Enabled.", - "2faDisabled": "2FA Disabled.", - "successAdded": "Added Successfully.", - "successResumed": "Resumed Successfully.", - "successPaused": "Paused Successfully.", - "successDeleted": "Deleted Successfully.", - "successEdited": "Edited Successfully.", - "successAuthChangePassword": "Password has been updated successfully.", - "successBackupRestored": "Backup successfully restored.", - "successDisabled": "Disabled Successfully.", - "successEnabled": "Enabled Successfully.", - "tagNotFound": "Tag not found.", - "foundChromiumVersion": "Found Chromium/Chrome. Version: {0}", - "Remote Browsers": "Remote Browsers", - "Remote Browser": "Remote Browser", - "Add a Remote Browser": "Add a Remote Browser", - "Remote Browser not found!": "Remote Browser not found!", - "remoteBrowsersDescription": "Remote Browsers are an alternative to running Chromium locally. Set up with a service like browserless.io or connect to your own", - "self-hosted container": "self-hosted container", - "remoteBrowserToggle": "By default Chromium runs inside the Uptime Kuma container. You can use a remote browser by toggling this switch.", - "useRemoteBrowser": "Use a Remote Browser", - "deleteRemoteBrowserMessage": "Are you sure want to delete this Remote Browser for all monitors?", - "GrafanaOncallUrl": "Grafana Oncall URL", - "Browser Screenshot": "Browser Screenshot", - "Command": "Command", - "mongodbCommandDescription": "Run a MongoDB command against the database. For information about the available commands check out the {documentation}", - "wayToGetSevenIOApiKey": "Visit the dashboard under app.seven.io > developer > api key > the green add button", - "senderSevenIO": "Sending number or name", - "receiverSevenIO": "Receiving number", - "receiverInfoSevenIO": "If the receiving number is not located in Germany, you have to add the country code in front of the number (e.g. for the country code 1 from the US use 117612121212 instead of 017612121212)", - "apiKeySevenIO": "SevenIO API Key", - "wayToWriteWhapiRecipient": "The phone number with the international prefix, but without the plus sign at the start ({0}), the Contact ID ({1}) or the Group ID ({2}).", - "wayToGetWhapiUrlAndToken": "You can get the API URL and the token by going into your desired channel from {0}", - "whapiRecipient": "Phone Number / Contact ID / Group ID", - "API URL": "API URL", - "What is a Remote Browser?": "What is a Remote Browser?", - "wayToGetHeiiOnCallDetails": "How to get the Trigger ID and API Keys is explained in the {documentation}", - "documentationOf": "{0} Documentation", - "callMeBotGet": "Here you can generate an endpoint for {0}, {1} and {2}. Keep in mind that you might get rate limited. The ratelimits appear to be: {3}", - "gtxMessagingApiKeyHint": "You can find your API key at: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)", - "From Phone Number / Transmission Path Originating Address (TPOA)": "From Phone Number / Transmission Path Originating Address (TPOA)", - "gtxMessagingFromHint": "On mobile phones, your recipients sees the TPOA displayed as the sender of the message. Allowed are up to 11 alphanumeric characters, a shortcode, the local longcode or international numbers ({e164}, {e212} or {e214})", - "To Phone Number": "To Phone Number", - "gtxMessagingToHint": "International format, with leading \"+\" ({e164}, {e212} or {e214})", - "Originator type": "Originator type", - "Alphanumeric (recommended)": "Alphanumeric (recommended)", - "Telephone number": "Telephone number", - "cellsyntOriginatortypeAlphanumeric": "Alphanumeric string (max 11 alphanumeric characters). Recipients can not reply to the message.", - "cellsyntOriginatortypeNumeric": "Numeric value (max 15 digits) with telephone number on international format without leading 00 (example UK number 07920 110 000 should be set as 447920110000). Recipients can reply to the message.", - "Originator": "Originator", - "cellsyntOriginator": "Visible on recipient's mobile phone as originator of the message. Allowed values and function depends on parameter originatortype.", - "Destination": "Destination", - "cellsyntDestination": "Recipient's telephone number using international format with leading 00 followed by country code, e.g. 00447920110000 for the UK number 07920 110 000 (max 17 digits in total). Max 25000 comma separated recipients per HTTP request.", - "Allow Long SMS": "Allow Long SMS", - "cellsyntSplitLongMessages": "Split long messages into up to 6 parts. 153 x 6 = 918 characters.", - "max 15 digits": "max 15 digits", - "max 11 alphanumeric characters": "max 11 alphanumeric characters", - "Community String": "Community String", - "snmpCommunityStringHelptext": "This string functions as a password to authenticate and control access to SNMP-enabled devices. Match it with your SNMP device's configuration.", - "OID (Object Identifier)": "OID (Object Identifier)", - "snmpOIDHelptext": "Enter the OID for the sensor or status you want to monitor. Use network management tools like MIB browsers or SNMP software if you're unsure about the OID.", - "Condition": "Condition", - "SNMP Version": "SNMP Version", - "Please enter a valid OID.": "Please enter a valid OID.", - "wayToGetThreemaGateway": "You can register for Threema Gateway {0}.", - "threemaRecipient": "Recipient", - "threemaRecipientType": "Recipient Type", - "threemaRecipientTypeIdentity": "Threema-ID", - "threemaRecipientTypeIdentityFormat": "8 characters", - "threemaRecipientTypePhone": "Phone Number", - "threemaRecipientTypePhoneFormat": "E.164, without leading +", - "threemaRecipientTypeEmail": "Email Address", - "threemaSenderIdentity": "Gateway-ID", - "threemaSenderIdentityFormat": "8 characters, usually starts with *", - "threemaApiAuthenticationSecret": "Gateway-ID Secret", - "threemaBasicModeInfo": "Note: This integration uses Threema Gateway in basic mode (server-based encryption). Further details can be found {0}.", - "apiKeysDisabledMsg": "API keys are disabled because authentication is disabled.", - "Host Onesender": "Host Onesender", - "Token Onesender": "Token Onesender", - "Recipient Type": "Recipient Type", - "Private Number": "Private Number", - "privateOnesenderDesc": "Make sure the number phone is valid. To send message into private number phone, ex: 628123456789", - "groupOnesenderDesc": "Make sure the GroupID is valid. To send message into Group, ex: 628123456789-342345", - "Group ID": "Group ID", - "wayToGetOnesenderUrlandToken": "You can get the URL and Token by going to the Onesender website. More info {0}", - "Add Remote Browser": "Add Remote Browser", - "New Group": "New Group", - "Group Name": "Group Name", - "OAuth2: Client Credentials": "OAuth2: Client Credentials", - "Authentication Method": "Authentication Method", - "Authorization Header": "Authorization Header", - "Form Data Body": "Form Data Body", - "OAuth Token URL": "OAuth Token URL", - "Client ID": "Client ID", - "Client Secret": "Client Secret", - "OAuth Scope": "OAuth Scope", - "Optional: Space separated list of scopes": "Optional: Space separated list of scopes", - "Go back to home page.": "Go back to home page.", - "No tags found.": "No tags found.", - "Lost connection to the socket server.": "Lost connection to the socket server.", - "Cannot connect to the socket server.": "Cannot connect to the socket server.", - "SIGNL4": "SIGNL4", - "SIGNL4 Webhook URL": "SIGNL4 Webhook URL", - "signl4Docs": "You can find more information about how to configure SIGNL4 and how to obtain the SIGNL4 webhook URL in the {0}.", - "Conditions": "Conditions", - "conditionAdd": "Add Condition", - "conditionDelete": "Delete Condition", - "conditionAddGroup": "Add Group", - "conditionDeleteGroup": "Delete Group", - "conditionValuePlaceholder": "Value", - "equals": "equals", - "not equals": "not equals", - "contains": "contains", - "not contains": "not contains", - "starts with": "starts with", - "not starts with": "not starts with", - "ends with": "ends with", - "not ends with": "not ends with", - "less than": "less than", - "greater than": "greater than", - "less than or equal to": "less than or equal to", - "greater than or equal to": "greater than or equal to", - "record": "record", - "Notification Channel": "Notification Channel", - "Sound": "Sound", - "Alphanumerical string and hyphens only": "Alphanumerical string and hyphens only", - "Arcade": "Arcade", - "Correct": "Correct", - "Fail":"Fail", - "Harp":"Harp", - "Reveal":"Reveal", - "Bubble":"Bubble", - "Doorbell":"Doorbell", - "Flute":"Flute", - "Money":"Money", - "Scifi":"Scifi", - "Clear":"Clear", - "Elevator":"Elevator", - "Guitar":"Guitar", - "Pop":"Pop", - "Custom sound to override default notification sound": "Custom sound to override default notification sound", - "Time Sensitive (iOS Only)": "Time Sensitive (iOS Only)", - "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.", - "From":"From", - "Can be found on:": "Can be found on: {0}", - "The phone number of the recipient in E.164 format.": "The phone number of the recipient in E.164 format.", - "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.":"Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.", - "SendGrid API Key": "SendGrid API Key", - "Separate multiple email addresses with commas": "Separate multiple email addresses with commas" -} +{ + "languageName": "English", + "setupDatabaseChooseDatabase": "Which database would you like to use?", + "setupDatabaseEmbeddedMariaDB": "You don't need to set anything. This docker image has embedded and configured MariaDB for you automatically. Uptime Kuma will connect to this database via unix socket.", + "setupDatabaseMariaDB": "Connect to an external MariaDB database. You need to set the database connection information.", + "setupDatabaseSQLite": "A simple database file, recommended for small-scale deployments. Prior to v2.0.0, Uptime Kuma used SQLite as the default database.", + "settingUpDatabaseMSG": "Setting up the database. It may take a while, please be patient.", + "dbName": "Database Name", + "Settings": "Settings", + "Dashboard": "Dashboard", + "Help": "Help", + "New Update": "New Update", + "Language": "Language", + "Appearance": "Appearance", + "Theme": "Theme", + "General": "General", + "Game": "Game", + "Primary Base URL": "Primary Base URL", + "Version": "Version", + "Check Update On GitHub": "Check Update On GitHub", + "List": "List", + "Home": "Home", + "Add": "Add", + "Add New Monitor": "Add New Monitor", + "Quick Stats": "Quick Stats", + "Up": "Up", + "Down": "Down", + "Pending": "Pending", + "statusMaintenance": "Maintenance", + "Maintenance": "Maintenance", + "Unknown": "Unknown", + "Cannot connect to the socket server": "Cannot connect to the socket server", + "Reconnecting...": "Reconnecting...", + "General Monitor Type": "General Monitor Type", + "Passive Monitor Type": "Passive Monitor Type", + "Specific Monitor Type": "Specific Monitor Type", + "markdownSupported": "Markdown syntax supported", + "pauseDashboardHome": "Pause", + "Pause": "Pause", + "Name": "Name", + "Status": "Status", + "DateTime": "DateTime", + "Message": "Message", + "No important events": "No important events", + "Resume": "Resume", + "Edit": "Edit", + "Delete": "Delete", + "Current": "Current", + "Uptime": "Uptime", + "Cert Exp.": "Cert Exp.", + "Monitor": "Monitor | Monitors", + "now": "now", + "time ago": "{0} ago", + "day": "day | days", + "-day": "-day", + "hour": "hour", + "-hour": "-hour", + "-year": "-year", + "Response": "Response", + "Ping": "Ping", + "Monitor Type": "Monitor Type", + "Keyword": "Keyword", + "Invert Keyword": "Invert Keyword", + "Expected Value": "Expected Value", + "Json Query Expression": "Json Query Expression", + "Friendly Name": "Friendly Name", + "URL": "URL", + "Hostname": "Hostname", + "Host URL": "Host URL", + "locally configured mail transfer agent": "locally configured mail transfer agent", + "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Either enter the hostname of the server you want to connect to or {localhost} if you intend to use a {local_mta}", + "Port": "Port", + "Heartbeat Interval": "Heartbeat Interval", + "Request Timeout": "Request Timeout", + "timeoutAfter": "Timeout after {0} seconds", + "Retries": "Retries", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Resend Notification if Down X times consecutively": "Resend Notification if Down X times consecutively", + "Advanced": "Advanced", + "checkEverySecond": "Check every {0} seconds", + "retryCheckEverySecond": "Retry every {0} seconds", + "resendEveryXTimes": "Resend every {0} times", + "resendDisabled": "Resend disabled", + "retriesDescription": "Maximum retries before the service is marked as down and a notification is sent", + "ignoredTLSError": "TLS/SSL errors have been ignored", + "ignoreTLSError": "Ignore TLS/SSL errors for HTTPS websites", + "ignoreTLSErrorGeneral": "Ignore TLS/SSL error for connection", + "upsideDownModeDescription": "Flip the status upside down. If the service is reachable, it is DOWN.", + "maxRedirectDescription": "Maximum number of redirects to follow. Set to 0 to disable redirects.", + "Upside Down Mode": "Upside Down Mode", + "Max. Redirects": "Max. Redirects", + "Accepted Status Codes": "Accepted Status Codes", + "Push URL": "Push URL", + "needPushEvery": "You should call this URL every {0} seconds.", + "pushOptionalParams": "Optional parameters: {0}", + "pushViewCode": "How to use Push monitor? (View Code)", + "pushOthers": "Others", + "programmingLanguages": "Programming Languages", + "Save": "Save", + "Debug": "Debug", + "Copy": "Copy", + "Notifications": "Notifications", + "Not available, please setup.": "Not available, please set up.", + "Setup Notification": "Set Up Notification", + "Light": "Light", + "Dark": "Dark", + "Auto": "Auto", + "Theme - Heartbeat Bar": "Theme - Heartbeat Bar", + "styleElapsedTime": "Elapsed time under the heartbeat bar", + "styleElapsedTimeShowNoLine": "Show (No Line)", + "styleElapsedTimeShowWithLine": "Show (With Line)", + "Normal": "Normal", + "Bottom": "Bottom", + "None": "None", + "Timezone": "Timezone", + "Search Engine Visibility": "Search Engine Visibility", + "Allow indexing": "Allow indexing", + "Discourage search engines from indexing site": "Discourage search engines from indexing site", + "Change Password": "Change Password", + "Current Password": "Current Password", + "New Password": "New Password", + "Repeat New Password": "Repeat New Password", + "Update Password": "Update Password", + "Disable Auth": "Disable Auth", + "Enable Auth": "Enable Auth", + "disableauth.message1": "Are you sure want to {disableAuth}?", + "disable authentication": "disable authentication", + "disableauth.message2": "It is designed for scenarios {intendThirdPartyAuth} in front of Uptime Kuma such as Cloudflare Access, Authelia or other authentication mechanisms.", + "where you intend to implement third-party authentication": "where you intend to implement third-party authentication", + "Please use this option carefully!": "Please use this option carefully!", + "Logout": "Log out", + "Leave": "Leave", + "I understand, please disable": "I understand, please disable", + "Confirm": "Confirm", + "Yes": "Yes", + "No": "No", + "Username": "Username", + "Password": "Password", + "Remember me": "Remember me", + "Login": "Log in", + "No Monitors, please": "No Monitors, please", + "add one": "add one", + "Notification Type": "Notification Type", + "Email": "Email", + "Test": "Test", + "Certificate Info": "Certificate Info", + "Resolver Server": "Resolver Server", + "Resource Record Type": "Resource Record Type", + "Last Result": "Last Result", + "Create your admin account": "Create your admin account", + "Repeat Password": "Repeat Password", + "Import Backup": "Import Backup", + "Export Backup": "Export Backup", + "Export": "Export", + "Import": "Import", + "respTime": "Resp. Time (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Default enabled", + "Apply on all existing monitors": "Apply on all existing monitors", + "Create": "Create", + "Clear Data": "Clear Data", + "Events": "Events", + "Heartbeats": "Heartbeats", + "Auto Get": "Auto Get", + "Schedule maintenance": "Schedule maintenance", + "Affected Monitors": "Affected Monitors", + "Pick Affected Monitors...": "Pick Affected Monitors…", + "Start of maintenance": "Start of maintenance", + "All Status Pages": "All Status Pages", + "Select status pages...": "Select status pages…", + "alertNoFile": "Please select a file to import.", + "alertWrongFileType": "Please select a JSON file.", + "Clear all statistics": "Clear all Statistics", + "Skip existing": "Skip existing", + "Overwrite": "Overwrite", + "Options": "Options", + "Keep both": "Keep both", + "Verify Token": "Verify Token", + "Setup 2FA": "Set Up 2FA", + "Enable 2FA": "Enable 2FA", + "Disable 2FA": "Disable 2FA", + "2FA Settings": "2FA Settings", + "Two Factor Authentication": "Two Factor Authentication", + "filterActive": "Active", + "filterActivePaused": "Paused", + "Active": "Active", + "Inactive": "Inactive", + "Token": "Token", + "Show URI": "Show URI", + "Tags": "Tags", + "Add New Tag": "Add New Tag", + "Add New below or Select...": "Add New below or Select…", + "Tag with this name already exist.": "Tag with this name already exists.", + "Tag with this value already exist.": "Tag with this value already exists.", + "color": "Color", + "value (optional)": "value (optional)", + "Gray": "Gray", + "Red": "Red", + "Orange": "Orange", + "Green": "Green", + "Blue": "Blue", + "Indigo": "Indigo", + "Purple": "Purple", + "Pink": "Pink", + "Custom": "Custom", + "Search...": "Search…", + "Search monitored sites": "Search monitored sites", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", + "Entry Page": "Entry Page", + "statusPageNothing": "Nothing here, please add a group or a monitor.", + "statusPageRefreshIn": "Refresh in: {0}", + "No Services": "No Services", + "All Systems Operational": "All Systems Operational", + "Partially Degraded Service": "Partially Degraded Service", + "Degraded Service": "Degraded Service", + "Add Group": "Add Group", + "Add a monitor": "Add a monitor", + "Edit Status Page": "Edit Status Page", + "Go to Dashboard": "Go to Dashboard", + "Status Page": "Status Page", + "Status Pages": "Status Pages", + "defaultNotificationName": "My {notification} Alert ({number})", + "here": "here", + "Required": "Required", + "Post URL": "Post URL", + "Content Type": "Content Type", + "webhookJsonDesc": "{0} is good for any modern HTTP servers such as Express.js", + "webhookFormDataDesc": "{multipart} is good for PHP. The JSON will need to be parsed with {decodeFunction}", + "liquidIntroduction": "Templatability is achieved via the Liquid templating language. Please refer to the {0} for usage instructions. These are the available variables:", + "templateMsg": "message of the notification", + "templateHeartbeatJSON": "object describing the heartbeat", + "templateMonitorJSON": "object describing the monitor", + "templateLimitedToUpDownCertNotifications": "only available for UP/DOWN/Certificate expiry notifications", + "templateLimitedToUpDownNotifications": "only available for UP/DOWN notifications", + "webhookAdditionalHeadersTitle": "Additional Headers", + "webhookAdditionalHeadersDesc": "Sets additional headers sent with the webhook. Each header should be defined as a JSON key/value.", + "webhookBodyPresetOption": "Preset - {0}", + "webhookBodyCustomOption": "Custom Body", + "Webhook URL": "Webhook URL", + "Application Token": "Application Token", + "Server URL": "Server URL", + "Priority": "Priority", + "emojiCheatSheet": "Emoji cheat sheet: {0}", + "Read more": "Read more", + "appriseInstalled": "Apprise is installed.", + "appriseNotInstalled": "Apprise is not installed. {0}", + "Method": "Method", + "Body": "Body", + "Headers": "Headers", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "The request headers are not valid JSON: ", + "BodyInvalidFormat": "The request body is not valid JSON: ", + "CopyToClipboardError": "Couldn't copy to clipbard: {error}", + "CopyToClipboardSuccess": "Copied!", + "CurlDebugInfo": "To debug the monitor, you can either paste this into your own machines terminal or into the machines terminal which uptime kuma is running on and see what you are requesting.{newiline}Please be aware of networking differences like {firewalls}, {dns_resolvers} or {docker_networks}.", + "firewalls": "firewalls", + "dns resolvers": "dns resolvers", + "docker networks": "docker networks", + "CurlDebugInfoOAuth2CCUnsupported": "Full oauth client credential flow is not supported in {curl}.{newline}Please get a bearer token and pass it via the {oauth2_bearer} option.", + "CurlDebugInfoProxiesUnsupported": "Proxy support in the above {curl} command is currently not implemented.", + "Monitor History": "Monitor History", + "clearDataOlderThan": "Keep monitor history data for {0} days.", + "PasswordsDoNotMatch": "Passwords do not match.", + "records": "records", + "One record": "One record", + "steamApiKeyDescription": "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", + "Current User": "Current User", + "topic": "Topic", + "topicExplanation": "MQTT topic to monitor", + "successKeyword": "Success Keyword", + "successKeywordExplanation": "MQTT Keyword that will be considered as success", + "recent": "Recent", + "Reset Token": "Reset Token", + "Done": "Done", + "Info": "Info", + "Security": "Security", + "Steam API Key": "Steam API Key", + "Shrink Database": "Shrink Database", + "shrinkDatabaseDescriptionSqlite": "Trigger database {vacuum} for SQLite. {auto_vacuum} is already enabled but this does not defragment the database nor repack individual database pages the way that the {vacuum} command does.", + "Pick a RR-Type...": "Pick a RR-Type…", + "Pick Accepted Status Codes...": "Pick Accepted Status Codes…", + "Default": "Default", + "HTTP Options": "HTTP Options", + "Create Incident": "Create Incident", + "Title": "Title", + "Content": "Content", + "Style": "Style", + "info": "info", + "warning": "warning", + "danger": "danger", + "error": "error", + "critical": "critical", + "primary": "primary", + "light": "light", + "dark": "dark", + "Post": "Post", + "Please input title and content": "Please input title and content", + "Created": "Created", + "Last Updated": "Last Updated", + "Switch to Light Theme": "Switch to Light Theme", + "Switch to Dark Theme": "Switch to Dark Theme", + "Show Tags": "Show Tags", + "Hide Tags": "Hide Tags", + "Description": "Description", + "No monitors available.": "No monitors available.", + "Add one": "Add one", + "No Monitors": "No Monitors", + "Untitled Group": "Untitled Group", + "Services": "Services", + "Discard": "Discard", + "Cancel": "Cancel", + "Select": "Select", + "selectedMonitorCount": "Selected: {0}", + "Check/Uncheck": "Check/Uncheck", + "Powered by": "Powered by", + "Customize": "Customize", + "Custom Footer": "Custom Footer", + "Custom CSS": "Custom CSS", + "deleteStatusPageMsg": "Are you sure want to delete this status page?", + "Proxies": "Proxies", + "default": "Default", + "enabled": "Enabled", + "setAsDefault": "Set As Default", + "deleteProxyMsg": "Are you sure want to delete this proxy for all monitors?", + "proxyDescription": "Proxies must be assigned to a monitor to function.", + "enableProxyDescription": "This proxy will not effect on monitor requests until it is activated. You can control temporarily disable the proxy from all monitors by activation status.", + "setAsDefaultProxyDescription": "This proxy will be enabled by default for new monitors. You can still disable the proxy separately for each monitor.", + "Certificate Chain": "Certificate Chain", + "Valid": "Valid", + "Invalid": "Invalid", + "User": "User", + "Installed": "Installed", + "Not installed": "Not installed", + "Running": "Running", + "Not running": "Not running", + "Remove Token": "Remove Token", + "Start": "Start", + "Stop": "Stop", + "Add New Status Page": "Add New Status Page", + "Slug": "Slug", + "Accept characters:": "Accept characters:", + "startOrEndWithOnly": "Start or end with {0} only", + "No consecutive dashes": "No consecutive dashes", + "statusPageSpecialSlugDesc": "Special slug {0}: this page will be shown when no slug is provided", + "Next": "Next", + "The slug is already taken. Please choose another slug.": "The slug is already taken. Please choose another slug.", + "No Proxy": "No Proxy", + "Authentication": "Authentication", + "HTTP Basic Auth": "HTTP Basic Auth", + "New Status Page": "New Status Page", + "Page Not Found": "Page Not Found", + "Reverse Proxy": "Reverse Proxy", + "Backup": "Backup", + "About": "About", + "wayToGetCloudflaredURL": "(Download cloudflared from {0})", + "cloudflareWebsite": "Cloudflare Website", + "Message:": "Message:", + "Don't know how to get the token? Please read the guide:": "Don't know how to get the token? Please read the guide:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.", + "HTTP Headers": "HTTP Headers", + "Trust Proxy": "Trust Proxy", + "Other Software": "Other Software", + "For example: nginx, Apache and Traefik.": "For example: nginx, Apache and Traefik.", + "Please read": "Please read", + "Subject:": "Subject:", + "Valid To:": "Valid To:", + "Days Remaining:": "Days Remaining:", + "Issuer:": "Issuer:", + "Fingerprint:": "Fingerprint:", + "No status pages": "No status pages", + "Domain Name Expiry Notification": "Domain Name Expiry Notification", + "Add a new expiry notification day": "Add a new expiry notification day", + "Remove the expiry notification": "Remove the expiry notification day", + "Proxy": "Proxy", + "Date Created": "Date Created", + "Footer Text": "Footer Text", + "Refresh Interval": "Refresh Interval", + "Refresh Interval Description": "The status page will do a full site refresh every {0} seconds", + "Show Powered By": "Show Powered By", + "Domain Names": "Domain Names", + "signedInDisp": "Signed in as {0}", + "signedInDispDisabled": "Auth Disabled.", + "RadiusSecret": "Radius Secret", + "RadiusSecretDescription": "Shared Secret between client and server", + "RadiusCalledStationId": "Called Station Id", + "RadiusCalledStationIdDescription": "Identifier of the called device", + "RadiusCallingStationId": "Calling Station Id", + "RadiusCallingStationIdDescription": "Identifier of the calling device", + "Certificate Expiry Notification": "Certificate Expiry Notification", + "API Username": "API Username", + "API Key": "API Key", + "Show update if available": "Show update if available", + "Also check beta release": "Also check beta release", + "Using a Reverse Proxy?": "Using a Reverse Proxy?", + "Check how to config it for WebSocket": "Check how to config it for WebSocket", + "Steam Game Server": "Steam Game Server", + "Most likely causes:": "Most likely causes:", + "The resource is no longer available.": "The resource is no longer available.", + "There might be a typing error in the address.": "There might be a typing error in the address.", + "What you can try:": "What you can try:", + "Retype the address.": "Retype the address.", + "Go back to the previous page.": "Go back to the previous page.", + "Coming Soon": "Coming Soon", + "Connection String": "Connection String", + "Query": "Query", + "settingsCertificateExpiry": "TLS Certificate Expiry", + "certificationExpiryDescription": "HTTPS Monitors trigger notification when TLS certificate expires in:", + "Setup Docker Host": "Set Up Docker Host", + "Connection Type": "Connection Type", + "Docker Daemon": "Docker Daemon", + "noDockerHostMsg": "Not Available. Set Up a Docker Host First.", + "DockerHostRequired": "Please set the Docker Host for this monitor.", + "deleteDockerHostMsg": "Are you sure want to delete this docker host for all monitors?", + "socket": "Socket", + "tcp": "TCP / HTTP", + "tailscalePingWarning": "In order to use the Tailscale Ping monitor, you need to install Uptime Kuma without Docker and also install Tailscale client on your server.", + "Docker Container": "Docker Container", + "Container Name / ID": "Container Name / ID", + "Docker Host": "Docker Host", + "Docker Hosts": "Docker Hosts", + "Domain": "Domain", + "Workstation": "Workstation", + "Packet Size": "Packet Size", + "Bot Token": "Bot Token", + "wayToGetTelegramToken": "You can get a token from {0}.", + "Chat ID": "Chat ID", + "telegramMessageThreadID": "(Optional) Message Thread ID", + "telegramMessageThreadIDDescription": "Optional Unique identifier for the target message thread (topic) of the forum; for forum supergroups only", + "telegramSendSilently": "Send Silently", + "telegramSendSilentlyDescription": "Sends the message silently. Users will receive a notification with no sound.", + "telegramProtectContent": "Protect Forwarding/Saving", + "telegramProtectContentDescription": "If enabled, the bot messages in Telegram will be protected from forwarding and saving.", + "supportTelegramChatID": "Support Direct Chat / Group / Channel's Chat ID", + "wayToGetTelegramChatID": "You can get your chat ID by sending a message to the bot and going to this URL to view the chat_id:", + "YOUR BOT TOKEN HERE": "YOUR BOT TOKEN HERE", + "chatIDNotFound": "Chat ID is not found; please send a message to this bot first", + "disableCloudflaredNoAuthMsg": "You are in No Auth mode, a password is not required.", + "trustProxyDescription": "Trust 'X-Forwarded-*' headers. If you want to get the correct client IP and your Uptime Kuma is behind a proxy such as Nginx or Apache, you should enable this.", + "wayToGetLineNotifyToken": "You can get an access token from {0}", + "Examples": "Examples", + "Home Assistant URL": "Home Assistant URL", + "Long-Lived Access Token": "Long-Lived Access Token", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ", + "Notification Service": "Notification Service", + "default: notify all devices": "default: notify all devices", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.", + "Automations can optionally be triggered in Home Assistant:": "Automations can optionally be triggered in Home Assistant:", + "Trigger type:": "Trigger type:", + "Event type:": "Event type:", + "Event data:": "Event data:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Then choose an action, for example switch the scene to where an RGB light is red.", + "Frontend Version": "Frontend Version", + "Frontend Version do not match backend version!": "Frontend Version do not match backend version!", + "backupOutdatedWarning": "Deprecated: Since a lot of features were added and this backup feature is a bit unmaintained, it cannot generate or restore a complete backup.", + "backupRecommend": "Please backup the volume or the data folder (./data/) directly instead.", + "Optional": "Optional", + "and": "and", + "or": "or", + "sameAsServerTimezone": "Same as Server Timezone", + "startDateTime": "Start Date/Time", + "endDateTime": "End Date/Time", + "cronExpression": "Cron Expression", + "cronSchedule": "Schedule: ", + "invalidCronExpression": "Invalid Cron Expression: {0}", + "recurringInterval": "Interval", + "Recurring": "Recurring", + "strategyManual": "Active/Inactive Manually", + "warningTimezone": "It is using the server's timezone", + "weekdayShortMon": "Mon", + "weekdayShortTue": "Tue", + "weekdayShortWed": "Wed", + "weekdayShortThu": "Thu", + "weekdayShortFri": "Fri", + "weekdayShortSat": "Sat", + "weekdayShortSun": "Sun", + "dayOfWeek": "Day of Week", + "dayOfMonth": "Day of Month", + "lastDay": "Last Day", + "lastDay1": "Last Day of Month", + "lastDay2": "2nd Last Day of Month", + "lastDay3": "3rd Last Day of Month", + "lastDay4": "4th Last Day of Month", + "No Maintenance": "No Maintenance", + "pauseMaintenanceMsg": "Are you sure want to pause?", + "maintenanceStatus-under-maintenance": "Under Maintenance", + "maintenanceStatus-inactive": "Inactive", + "maintenanceStatus-scheduled": "Scheduled", + "maintenanceStatus-ended": "Ended", + "maintenanceStatus-unknown": "Unknown", + "Display Timezone": "Display Timezone", + "Server Timezone": "Server Timezone", + "statusPageMaintenanceEndDate": "End", + "IconUrl": "Icon URL", + "Enable DNS Cache": "(Deprecated) Enable DNS Cache for HTTP(s) monitors", + "Enable": "Enable", + "Disable": "Disable", + "enableNSCD": "Enable NSCD (Name Service Cache Daemon) for caching all DNS requests", + "chromeExecutable": "Chrome/Chromium Executable", + "chromeExecutableAutoDetect": "Auto Detect", + "chromeExecutableDescription": "For Docker users, if Chromium is not yet installed, it may take a few minutes to install and display the test result. It takes 1GB of disk space.", + "dnsCacheDescription": "It may be not working in some IPv6 environments, disable it if you encounter any issues.", + "Single Maintenance Window": "Single Maintenance Window", + "Maintenance Time Window of a Day": "Maintenance Time Window of a Day", + "Effective Date Range": "Effective Date Range (Optional)", + "Schedule Maintenance": "Schedule Maintenance", + "Edit Maintenance": "Edit Maintenance", + "Date and Time": "Date and Time", + "DateTime Range": "DateTime Range", + "loadingError": "Cannot fetch the data, please try again later.", + "plugin": "Plugin | Plugins", + "install": "Install", + "installing": "Installing", + "uninstall": "Uninstall", + "uninstalling": "Uninstalling", + "confirmUninstallPlugin": "Are you sure want to uninstall this plugin?", + "notificationRegional": "Regional", + "Clone Monitor": "Clone Monitor", + "Clone": "Clone", + "cloneOf": "Clone of {0}", + "smtp": "Email (SMTP)", + "secureOptionNone": "None / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Ignore TLS Error", + "From Email": "From Email", + "emailCustomisableContent": "Customisable content", + "smtpLiquidIntroduction": "The following two fields are templatable via the Liquid templating Language. Please refer to the {0} for usage instructions. These are the available variables:", + "emailCustomSubject": "Custom Subject", + "leave blank for default subject": "leave blank for default subject", + "emailCustomBody": "Custom Body", + "leave blank for default body": "leave blank for default body", + "emailTemplateServiceName": "Service Name", + "emailTemplateHostnameOrURL": "Hostname or URL", + "emailTemplateStatus": "Status", + "emailTemplateMonitorJSON": "object describing the monitor", + "emailTemplateHeartbeatJSON": "object describing the heartbeat", + "emailTemplateMsg": "message of the notification", + "emailTemplateLimitedToUpDownNotification": "only available for UP/DOWN heartbeats, otherwise null", + "To Email": "To Email", + "smtpCC": "CC", + "smtpBCC": "BCC", + "Discord Webhook URL": "Discord Webhook URL", + "wayToGetDiscordURL": "You can get this by going to Server Settings -> Integrations -> View Webhooks -> New Webhook", + "Bot Display Name": "Bot Display Name", + "Prefix Custom Message": "Prefix Custom Message", + "Hello @everyone is...": "Hello {'@'}everyone is…", + "Select message type": "Select message type", + "Send to channel": "Send to channel", + "Create new forum post": "Create new forum post", + "postToExistingThread": "Post to existing thread / forum post", + "forumPostName": "Forum post name", + "threadForumPostID": "Thread / Forum post ID", + "e.g. {discordThreadID}": "e.g. {discordThreadID}", + "whatHappensAtForumPost": "Create a new forum post. This does NOT post messages in existing post. To post in existing post use \"{option}\"", + "wayToGetDiscordThreadId": "Getting a thread / forum post id is similar to getting a channel id. Read more about how to get ids {0}", + "wayToGetTeamsURL": "You can learn how to create a webhook URL {0}.", + "wayToGetZohoCliqURL": "You can learn how to create a webhook URL {0}.", + "needSignalAPI": "You need to have a signal client with REST API.", + "wayToCheckSignalURL": "You can check this URL to view how to set one up:", + "Number": "Number", + "Recipients": "Recipients", + "Access Token": "Access Token", + "Channel access token": "Channel access token", + "Channel access token (Long-lived)": "Channel access token (Long-lived)", + "Line Developers Console": "Line Developers Console", + "lineDevConsoleTo": "Line Developers Console - {0}", + "Basic Settings": "Basic Settings", + "User ID": "User ID", + "Your User ID": "Your user ID", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "First access the {0}, create a provider and channel (Messaging API), then you can get the channel access token and user ID from the above mentioned menu items.", + "Icon URL": "Icon URL", + "aboutIconURL": "You can provide a link to a picture in \"Icon URL\" to override the default profile picture. Will not be used if Icon Emoji is set.", + "aboutMattermostChannelName": "You can override the default channel that the Webhook posts to by entering the channel name into \"Channel Name\" field. This needs to be enabled in the Mattermost Webhook settings. Ex: #other-channel", + "dataRetentionTimeError": "Retention period must be 0 or greater", + "infiniteRetention": "Set to 0 for infinite retention.", + "confirmDeleteTagMsg": "Are you sure you want to delete this tag? Monitors associated with this tag will not be deleted.", + "enableGRPCTls": "Allow to send gRPC request with TLS connection", + "grpcMethodDescription": "Method name is convert to camelCase format such as sayHello, check, etc.", + "acceptedStatusCodesDescription": "Select status codes which are considered as a successful response.", + "deleteMonitorMsg": "Are you sure want to delete this monitor?", + "deleteMaintenanceMsg": "Are you sure want to delete this maintenance?", + "deleteNotificationMsg": "Are you sure want to delete this notification for all monitors?", + "dnsPortDescription": "DNS server port. Defaults to 53. You can change the port at any time.", + "resolverserverDescription": "Cloudflare is the default server. You can change the resolver server anytime.", + "rrtypeDescription": "Select the RR type you want to monitor", + "pauseMonitorMsg": "Are you sure want to pause?", + "enableDefaultNotificationDescription": "This notification will be enabled by default for new monitors. You can still disable the notification separately for each monitor.", + "clearEventsMsg": "Are you sure want to delete all events for this monitor?", + "clearHeartbeatsMsg": "Are you sure want to delete all heartbeats for this monitor?", + "confirmClearStatisticsMsg": "Are you sure you want to delete ALL statistics?", + "importHandleDescription": "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + "confirmImportMsg": "Are you sure you want to import the backup? Please verify you've selected the correct import option.", + "twoFAVerifyLabel": "Please enter your token to verify 2FA:", + "tokenValidSettingsMsg": "Token is valid! You can now save the 2FA settings.", + "confirmEnableTwoFAMsg": "Are you sure you want to enable 2FA?", + "confirmDisableTwoFAMsg": "Are you sure you want to disable 2FA?", + "recurringIntervalMessage": "Run once every day | Run once every {0} days", + "affectedMonitorsDescription": "Select monitors that are affected by current maintenance", + "affectedStatusPages": "Show this maintenance message on selected status pages", + "atLeastOneMonitor": "Select at least one affected monitor", + "passwordNotMatchMsg": "The repeat password does not match.", + "notificationDescription": "Notifications must be assigned to a monitor to function.", + "keywordDescription": "Search keyword in plain HTML or JSON response. The search is case-sensitive.", + "invertKeywordDescription": "Look for the keyword to be absent rather than present.", + "jsonQueryDescription": "Parse and extract specific data from the server's JSON response using JSON query or use \"$\" for the raw response, if not expecting JSON. The result is then compared to the expected value, as strings. See {0} for documentation and use {1} to experiment with queries.", + "backupDescription": "You can backup all monitors and notifications into a JSON file.", + "backupDescription2": "Note: history and event data is not included.", + "backupDescription3": "Sensitive data such as notification tokens are included in the export file; please store export securely.", + "endpoint": "endpoint", + "octopushAPIKey": "\"API key\" from HTTP API credentials in control panel", + "octopushLogin": "\"Login\" from HTTP API credentials in control panel", + "promosmsLogin": "API Login Name", + "promosmsPassword": "API Password", + "pushoversounds pushover": "Pushover (default)", + "pushoversounds bike": "Bike", + "pushoversounds bugle": "Bugle", + "pushoversounds cashregister": "Cash Register", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Cosmic", + "pushoversounds falling": "Falling", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Incoming", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "Magic", + "pushoversounds mechanical": "Mechanical", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Siren", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "Tug Boat", + "pushoversounds alien": "Alien Alarm (long)", + "pushoversounds climb": "Climb (long)", + "pushoversounds persistent": "Persistent (long)", + "pushoversounds echo": "Pushover Echo (long)", + "pushoversounds updown": "Up Down (long)", + "pushoversounds vibrate": "Vibrate Only", + "pushoversounds none": "None (silent)", + "pushyAPIKey": "Secret API Key", + "pushyToken": "Device token", + "apprise": "Apprise (Support 50+ Notification services)", + "GoogleChat": "Google Chat (Google Workspace only)", + "wayToGetKookBotToken": "Create application and get your bot token at {0}", + "wayToGetKookGuildID": "Switch on 'Developer Mode' in Kook setting, and right click the guild to get its ID", + "Guild ID": "Guild ID", + "User Key": "User Key", + "Device": "Device", + "Message Title": "Message Title", + "Notification Sound": "Notification Sound", + "More info on:": "More info on: {0}", + "pushoverDesc1": "Emergency priority (2) has default 30 second timeout between retries and will expire after 1 hour.", + "pushoverDesc2": "If you want to send notifications to different devices, fill out Device field.", + "pushoverMessageTtl": "Message TTL (Seconds)", + "SMS Type": "SMS Type", + "octopushTypePremium": "Premium (Fast - recommended for alerting)", + "octopushTypeLowCost": "Low Cost (Slow - sometimes blocked by operator)", + "checkPrice": "Check {0} prices:", + "apiCredentials": "API credentials", + "octopushLegacyHint": "Do you use the legacy version of Octopush (2011-2020) or the new version?", + "Check octopush prices": "Check octopush prices {0}.", + "octopushPhoneNumber": "Phone number (intl format, eg : +33612345678) ", + "octopushSMSSender": "SMS Sender Name : 3-11 alphanumeric characters and space (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Device ID", + "Apprise URL": "Apprise URL", + "Example:": "Example: {0}", + "Read more:": "Read more: {0}", + "Status:": "Status: {0}", + "Strategy": "Strategy", + "Free Mobile User Identifier": "Free Mobile User Identifier", + "Free Mobile API Key": "Free Mobile API Key", + "Enable TLS": "Enable TLS", + "Proto Service Name": "Proto Service Name", + "Proto Method": "Proto Method", + "Proto Content": "Proto Content", + "Economy": "Economy", + "Lowcost": "Lowcost", + "high": "high", + "SendKey": "SendKey", + "SMSManager API Docs": "SMSManager API Docs ", + "Gateway Type": "Gateway Type", + "You can divide numbers with": "You can divide numbers with", + "Base URL": "Base URL", + "goAlertInfo": "GoAlert is a An open source application for on-call scheduling, automated escalations and notifications (like SMS or voice calls). Automatically engage the right person, the right way, and at the right time! {0}", + "goAlertIntegrationKeyInfo": "Get generic API integration key for the service in this format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" usually the value of token parameter of copied URL.", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Secret", + "PhoneNumbers": "PhoneNumbers", + "TemplateCode": "TemplateCode", + "SignName": "SignName", + "Sms template must contain parameters: ": "Sms template must contain parameters: ", + "Bark API Version": "Bark API Version", + "Bark Endpoint": "Bark Endpoint", + "Bark Group": "Bark Group", + "Bark Sound": "Bark Sound", + "WebHookUrl": "WebHookUrl", + "SecretKey": "SecretKey", + "For safety, must use secret key": "For safety, must use secret key", + "Mentioning": "Mentioning", + "Don't mention people": "Don't mention people", + "Mention group": "Mention {group}", + "Device Token": "Device Token", + "Platform": "Platform", + "Huawei": "Huawei", + "High": "High", + "Retry": "Retry", + "Topic": "Topic", + "WeCom Bot Key": "WeCom Bot Key", + "Setup Proxy": "Set Up Proxy", + "Proxy Protocol": "Proxy Protocol", + "Proxy Server": "Proxy Server", + "Proxy server has authentication": "Proxy server has authentication", + "promosmsTypeEco": "SMS ECO - cheap but slow and often overloaded. Limited only to Polish recipients.", + "promosmsTypeFlash": "SMS FLASH - Message will automatically show on recipient device. Limited only to Polish recipients.", + "promosmsTypeFull": "SMS FULL - Premium tier of SMS, You can use your Sender Name (You need to register name first). Reliable for alerts.", + "promosmsTypeSpeed": "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).", + "promosmsPhoneNumber": "Phone number (for Polish recipient You can skip area codes)", + "promosmsSMSSender": "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "promosmsAllowLongSMS": "Allow long SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "Internal Room ID", + "matrixDesc1": "You can find the internal room ID by looking in the advanced section of the room settings in your Matrix client. It should look like !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "It is highly recommended you create a new user and do not use your own Matrix user's access token as it will allow full access to your account and all the rooms you joined. Instead, create a new user and only invite it to the room that you want to receive the notification in. You can get the access token by running {0}", + "Channel Name": "Channel Name", + "Notify Channel": "Notify Channel", + "aboutNotifyChannel": "Notify channel will trigger a desktop or mobile notification for all members of the channel, whether their availability is set to active or away.", + "Uptime Kuma URL": "Uptime Kuma URL", + "setup a new monitor group": "set up a new monitor group", + "openModalTo": "open modal to {0}", + "Add a domain": "Add a domain", + "Remove domain": "Remove domain '{0}'", + "Icon Emoji": "Icon Emoji", + "signalImportant": "IMPORTANT: You cannot mix groups and numbers in recipients!", + "aboutWebhooks": "More info about Webhooks on: {0}", + "aboutChannelName": "Enter the channel name on {0} Channel Name field if you want to bypass the Webhook channel. Ex: #other-channel", + "aboutKumaURL": "If you leave the Uptime Kuma URL field blank, it will default to the Project GitHub page.", + "smtpDkimSettings": "DKIM Settings", + "smtpDkimDesc": "Please refer to the Nodemailer DKIM {0} for usage.", + "documentation": "documentation", + "smtpDkimDomain": "Domain Name", + "smtpDkimKeySelector": "Key Selector", + "smtpDkimPrivateKey": "Private Key", + "smtpDkimHashAlgo": "Hash Algorithm (Optional)", + "smtpDkimheaderFieldNames": "Header Keys to sign (Optional)", + "smtpDkimskipFields": "Header Keys not to sign (Optional)", + "wayToGetPagerDutyKey": "You can get this by going to Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Here you can search for \"Events API V2\". More info {0}", + "Integration Key": "Integration Key", + "Integration URL": "Integration URL", + "Auto resolve or acknowledged": "Auto resolve or acknowledged", + "do nothing": "do nothing", + "auto acknowledged": "auto acknowledged", + "auto resolve": "auto resolve", + "alertaApiEndpoint": "API Endpoint", + "alertaEnvironment": "Environment", + "alertaApiKey": "API Key", + "alertaAlertState": "Alert State", + "alertaRecoverState": "Recover State", + "serwersmsAPIUser": "API Username (incl. webapi_ prefix)", + "serwersmsAPIPassword": "API Password", + "serwersmsPhoneNumber": "Phone number", + "serwersmsSenderName": "SMS Sender Name (registered via customer portal)", + "smseagleTo": "Phone number(s)", + "smseagleGroup": "Phonebook group name(s)", + "smseagleContact": "Phonebook contact name(s)", + "smseagleRecipientType": "Recipient type", + "smseagleRecipient": "Recipient(s) (multiple must be separated with comma)", + "smseagleToken": "API Access token", + "smseagleUrl": "Your SMSEagle device URL", + "smseagleEncoding": "Send as Unicode", + "smseaglePriority": "Message priority (0-9, default = 0)", + "smspartnerApiurl": "You can find your API key in your dashboard at {0}", + "smspartnerPhoneNumber": "Phone number(s)", + "smspartnerPhoneNumberHelptext": "The number must be in the international format {0}, {1}. Multiple numbers must be separated by {2}", + "smspartnerSenderName": "SMS Sender Name", + "smspartnerSenderNameInfo": "Must be between 3..=11 regular characters", + "Recipient Number": "Recipient Number", + "From Name/Number": "From Name/Number", + "Leave blank to use a shared sender number.": "Leave blank to use a shared sender number.", + "Octopush API Version": "Octopush API Version", + "Legacy Octopush-DM": "Legacy Octopush-DM", + "ntfy Topic": "ntfy Topic", + "Server URL should not contain the nfty topic": "Server URL should not contain the nfty topic", + "onebotHttpAddress": "OneBot HTTP Address", + "onebotMessageType": "OneBot Message Type", + "onebotGroupMessage": "Group", + "onebotPrivateMessage": "Private", + "onebotUserOrGroupId": "Group/User ID", + "onebotSafetyTips": "For safety, must set access token", + "PushDeer Server": "PushDeer Server", + "pushDeerServerDescription": "Leave blank to use the official server", + "PushDeer Key": "PushDeer Key", + "wayToGetClickSendSMSToken": "You can get API Username and API Key from {0} .", + "Custom Monitor Type": "Custom Monitor Type", + "Google Analytics ID": "Google Analytics ID", + "Edit Tag": "Edit Tag", + "Server Address": "Server Address", + "Learn More": "Learn More", + "Body Encoding": "Body Encoding", + "API Keys": "API Keys", + "Expiry": "Expiry", + "Expiry date": "Expiry date", + "Don't expire": "Don't expire", + "Continue": "Continue", + "Add Another": "Add Another", + "Key Added": "Key Added", + "apiKeyAddedMsg": "Your API key has been added. Please make a note of it as it will not be shown again.", + "Add API Key": "Add API Key", + "No API Keys": "No API Keys", + "apiKey-active": "Active", + "apiKey-expired": "Expired", + "apiKey-inactive": "Inactive", + "Expires": "Expires", + "disableAPIKeyMsg": "Are you sure you want to disable this API key?", + "deleteAPIKeyMsg": "Are you sure you want to delete this API key?", + "Generate": "Generate", + "pagertreeIntegrationUrl": "Integration URL", + "pagertreeUrgency": "Urgency", + "pagertreeSilent": "Silent", + "pagertreeLow": "Low", + "pagertreeMedium": "Medium", + "pagertreeHigh": "High", + "pagertreeCritical": "Critical", + "pagertreeResolve": "Auto Resolve", + "pagertreeDoNothing": "Do Nothing", + "wayToGetPagerTreeIntegrationURL": "After creating the Uptime Kuma integration in PagerTree, copy the Endpoint. See full details {0}", + "lunaseaTarget": "Target", + "lunaseaDeviceID": "Device ID", + "lunaseaUserID": "User ID", + "ntfyAuthenticationMethod": "Authentication Method", + "ntfyPriorityHelptextAllEvents": "All events are sent with the maximum priority", + "ntfyPriorityHelptextAllExceptDown": "All events are sent with this priority, except {0}-events, which have a priority of {1}", + "ntfyUsernameAndPassword": "Username and Password", + "twilioAccountSID": "Account SID", + "twilioApiKey": "Api Key (optional)", + "twilioAuthToken": "Auth Token / Api Key Secret", + "twilioFromNumber": "From Number", + "twilioToNumber": "To Number", + "Monitor Setting": "{0}'s Monitor Setting", + "Show Clickable Link": "Show Clickable Link", + "Show Clickable Link Description": "If checked everyone who have access to this status page can have access to monitor URL.", + "Open Badge Generator": "Open Badge Generator", + "Badge Generator": "{0}'s Badge Generator", + "Badge Type": "Badge Type", + "Badge Duration (in hours)": "Badge Duration (in hours)", + "Badge Label": "Badge Label", + "Badge Prefix": "Badge Value Prefix", + "Badge Suffix": "Badge Value Suffix", + "Badge Label Color": "Badge Label Color", + "Badge Color": "Badge Color", + "Badge Label Prefix": "Badge Label Prefix", + "Badge Preview": "Badge Preview", + "Badge Label Suffix": "Badge Label Suffix", + "Badge Up Color": "Badge Up Color", + "Badge Down Color": "Badge Down Color", + "Badge Pending Color": "Badge Pending Color", + "Badge Maintenance Color": "Badge Maintenance Color", + "Badge Warn Color": "Badge Warn Color", + "Badge Warn Days": "Badge Warn Days", + "Badge Down Days": "Badge Down Days", + "Badge Style": "Badge Style", + "Badge value (For Testing only.)": "Badge value (For Testing only.)", + "Badge URL": "Badge URL", + "Group": "Group", + "Monitor Group": "Monitor Group", + "monitorToastMessagesLabel": "Monitor Toast notifications", + "monitorToastMessagesDescription": "Toast notifications for monitors disappear after given time in seconds. Set to -1 disables timeout. Set to 0 disables toast notifications.", + "toastErrorTimeout": "Timeout for Error Notifications", + "toastSuccessTimeout": "Timeout for Success Notifications", + "Kafka Brokers": "Kafka Brokers", + "Enter the list of brokers": "Enter the list of brokers", + "Press Enter to add broker": "Press Enter to add broker", + "Kafka Topic Name": "Kafka Topic Name", + "Kafka Producer Message": "Kafka Producer Message", + "Enable Kafka SSL": "Enable Kafka SSL", + "Enable Kafka Producer Auto Topic Creation": "Enable Kafka Producer Auto Topic Creation", + "Kafka SASL Options": "Kafka SASL Options", + "Mechanism": "Mechanism", + "Pick a SASL Mechanism...": "Pick a SASL Mechanism…", + "Authorization Identity": "Authorization Identity", + "AccessKey Id": "AccessKey Id", + "Secret AccessKey": "Secret AccessKey", + "Session Token": "Session Token", + "noGroupMonitorMsg": "Not Available. Create a Group Monitor First.", + "Close": "Close", + "Request Body": "Request Body", + "wayToGetFlashDutyKey": "You can go to Channel -> (Select a Channel) -> Integrations -> Add a new integration' page, add a 'Uptime Kuma' to get a push address, copy the Integration Key in the address. For more information, please visit", + "FlashDuty Severity": "Severity", + "nostrRelays": "Nostr relays", + "nostrRelaysHelp": "One relay URL per line", + "nostrSender": "Sender Private Key (nsec)", + "nostrRecipients": "Recipients Public Keys (npub)", + "nostrRecipientsHelp": "npub format, one per line", + "showCertificateExpiry": "Show Certificate Expiry", + "noOrBadCertificate": "No/Bad Certificate", + "cacheBusterParam": "Add the {0} parameter", + "cacheBusterParamDescription": "Randomly generated parameter to skip caches.", + "gamedigGuessPort": "Gamedig: Guess Port", + "gamedigGuessPortDescription": "The port used by Valve Server Query Protocol may be different from the client port. Try this if the monitor cannot connect to your server.", + "Message format": "Message format", + "Send rich messages": "Send rich messages", + "Bitrix24 Webhook URL": "Bitrix24 Webhook URL", + "wayToGetBitrix24Webhook": "You can create a webhook by following the steps at {0}", + "bitrix24SupportUserID": "Enter your user ID in Bitrix24. You can find out the ID from the link by going to the user's profile.", + "Saved.": "Saved.", + "authUserInactiveOrDeleted": "The user is inactive or deleted.", + "authInvalidToken": "Invalid Token.", + "authIncorrectCreds": "Incorrect username or password.", + "2faAlreadyEnabled": "2FA is already enabled.", + "2faEnabled": "2FA Enabled.", + "2faDisabled": "2FA Disabled.", + "successAdded": "Added Successfully.", + "successResumed": "Resumed Successfully.", + "successPaused": "Paused Successfully.", + "successDeleted": "Deleted Successfully.", + "successEdited": "Edited Successfully.", + "successAuthChangePassword": "Password has been updated successfully.", + "successBackupRestored": "Backup successfully restored.", + "successDisabled": "Disabled Successfully.", + "successEnabled": "Enabled Successfully.", + "tagNotFound": "Tag not found.", + "foundChromiumVersion": "Found Chromium/Chrome. Version: {0}", + "Remote Browsers": "Remote Browsers", + "Remote Browser": "Remote Browser", + "Add a Remote Browser": "Add a Remote Browser", + "Remote Browser not found!": "Remote Browser not found!", + "remoteBrowsersDescription": "Remote Browsers are an alternative to running Chromium locally. Set up with a service like browserless.io or connect to your own", + "self-hosted container": "self-hosted container", + "remoteBrowserToggle": "By default Chromium runs inside the Uptime Kuma container. You can use a remote browser by toggling this switch.", + "useRemoteBrowser": "Use a Remote Browser", + "deleteRemoteBrowserMessage": "Are you sure want to delete this Remote Browser for all monitors?", + "GrafanaOncallUrl": "Grafana Oncall URL", + "Browser Screenshot": "Browser Screenshot", + "Command": "Command", + "mongodbCommandDescription": "Run a MongoDB command against the database. For information about the available commands check out the {documentation}", + "wayToGetSevenIOApiKey": "Visit the dashboard under app.seven.io > developer > api key > the green add button", + "senderSevenIO": "Sending number or name", + "receiverSevenIO": "Receiving number", + "receiverInfoSevenIO": "If the receiving number is not located in Germany, you have to add the country code in front of the number (e.g. for the country code 1 from the US use 117612121212 instead of 017612121212)", + "apiKeySevenIO": "SevenIO API Key", + "wayToWriteWhapiRecipient": "The phone number with the international prefix, but without the plus sign at the start ({0}), the Contact ID ({1}) or the Group ID ({2}).", + "wayToGetWhapiUrlAndToken": "You can get the API URL and the token by going into your desired channel from {0}", + "whapiRecipient": "Phone Number / Contact ID / Group ID", + "API URL": "API URL", + "What is a Remote Browser?": "What is a Remote Browser?", + "wayToGetHeiiOnCallDetails": "How to get the Trigger ID and API Keys is explained in the {documentation}", + "documentationOf": "{0} Documentation", + "callMeBotGet": "Here you can generate an endpoint for {0}, {1} and {2}. Keep in mind that you might get rate limited. The ratelimits appear to be: {3}", + "gtxMessagingApiKeyHint": "You can find your API key at: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)", + "From Phone Number / Transmission Path Originating Address (TPOA)": "From Phone Number / Transmission Path Originating Address (TPOA)", + "gtxMessagingFromHint": "On mobile phones, your recipients sees the TPOA displayed as the sender of the message. Allowed are up to 11 alphanumeric characters, a shortcode, the local longcode or international numbers ({e164}, {e212} or {e214})", + "To Phone Number": "To Phone Number", + "gtxMessagingToHint": "International format, with leading \"+\" ({e164}, {e212} or {e214})", + "Originator type": "Originator type", + "Alphanumeric (recommended)": "Alphanumeric (recommended)", + "Telephone number": "Telephone number", + "cellsyntOriginatortypeAlphanumeric": "Alphanumeric string (max 11 alphanumeric characters). Recipients can not reply to the message.", + "cellsyntOriginatortypeNumeric": "Numeric value (max 15 digits) with telephone number on international format without leading 00 (example UK number 07920 110 000 should be set as 447920110000). Recipients can reply to the message.", + "Originator": "Originator", + "cellsyntOriginator": "Visible on recipient's mobile phone as originator of the message. Allowed values and function depends on parameter originatortype.", + "Destination": "Destination", + "cellsyntDestination": "Recipient's telephone number using international format with leading 00 followed by country code, e.g. 00447920110000 for the UK number 07920 110 000 (max 17 digits in total). Max 25000 comma separated recipients per HTTP request.", + "Allow Long SMS": "Allow Long SMS", + "cellsyntSplitLongMessages": "Split long messages into up to 6 parts. 153 x 6 = 918 characters.", + "max 15 digits": "max 15 digits", + "max 11 alphanumeric characters": "max 11 alphanumeric characters", + "Community String": "Community String", + "snmpCommunityStringHelptext": "This string functions as a password to authenticate and control access to SNMP-enabled devices. Match it with your SNMP device's configuration.", + "OID (Object Identifier)": "OID (Object Identifier)", + "snmpOIDHelptext": "Enter the OID for the sensor or status you want to monitor. Use network management tools like MIB browsers or SNMP software if you're unsure about the OID.", + "Condition": "Condition", + "SNMP Version": "SNMP Version", + "Please enter a valid OID.": "Please enter a valid OID.", + "wayToGetThreemaGateway": "You can register for Threema Gateway {0}.", + "threemaRecipient": "Recipient", + "threemaRecipientType": "Recipient Type", + "threemaRecipientTypeIdentity": "Threema-ID", + "threemaRecipientTypeIdentityFormat": "8 characters", + "threemaRecipientTypePhone": "Phone Number", + "threemaRecipientTypePhoneFormat": "E.164, without leading +", + "threemaRecipientTypeEmail": "Email Address", + "threemaSenderIdentity": "Gateway-ID", + "threemaSenderIdentityFormat": "8 characters, usually starts with *", + "threemaApiAuthenticationSecret": "Gateway-ID Secret", + "threemaBasicModeInfo": "Note: This integration uses Threema Gateway in basic mode (server-based encryption). Further details can be found {0}.", + "apiKeysDisabledMsg": "API keys are disabled because authentication is disabled.", + "Host Onesender": "Host Onesender", + "Token Onesender": "Token Onesender", + "Recipient Type": "Recipient Type", + "Private Number": "Private Number", + "privateOnesenderDesc": "Make sure the number phone is valid. To send message into private number phone, ex: 628123456789", + "groupOnesenderDesc": "Make sure the GroupID is valid. To send message into Group, ex: 628123456789-342345", + "Group ID": "Group ID", + "wayToGetOnesenderUrlandToken": "You can get the URL and Token by going to the Onesender website. More info {0}", + "Add Remote Browser": "Add Remote Browser", + "New Group": "New Group", + "Group Name": "Group Name", + "OAuth2: Client Credentials": "OAuth2: Client Credentials", + "Authentication Method": "Authentication Method", + "Authorization Header": "Authorization Header", + "Form Data Body": "Form Data Body", + "OAuth Token URL": "OAuth Token URL", + "Client ID": "Client ID", + "Client Secret": "Client Secret", + "OAuth Scope": "OAuth Scope", + "Optional: Space separated list of scopes": "Optional: Space separated list of scopes", + "Go back to home page.": "Go back to home page.", + "No tags found.": "No tags found.", + "Lost connection to the socket server.": "Lost connection to the socket server.", + "Cannot connect to the socket server.": "Cannot connect to the socket server.", + "SIGNL4": "SIGNL4", + "SIGNL4 Webhook URL": "SIGNL4 Webhook URL", + "signl4Docs": "You can find more information about how to configure SIGNL4 and how to obtain the SIGNL4 webhook URL in the {0}.", + "Conditions": "Conditions", + "conditionAdd": "Add Condition", + "conditionDelete": "Delete Condition", + "conditionAddGroup": "Add Group", + "conditionDeleteGroup": "Delete Group", + "conditionValuePlaceholder": "Value", + "equals": "equals", + "not equals": "not equals", + "contains": "contains", + "not contains": "not contains", + "starts with": "starts with", + "not starts with": "not starts with", + "ends with": "ends with", + "not ends with": "not ends with", + "less than": "less than", + "greater than": "greater than", + "less than or equal to": "less than or equal to", + "greater than or equal to": "greater than or equal to", + "record": "record", + "Notification Channel": "Notification Channel", + "Sound": "Sound", + "Alphanumerical string and hyphens only": "Alphanumerical string and hyphens only", + "Arcade": "Arcade", + "Correct": "Correct", + "Fail":"Fail", + "Harp":"Harp", + "Reveal":"Reveal", + "Bubble":"Bubble", + "Doorbell":"Doorbell", + "Flute":"Flute", + "Money":"Money", + "Scifi":"Scifi", + "Clear":"Clear", + "Elevator":"Elevator", + "Guitar":"Guitar", + "Pop":"Pop", + "Custom sound to override default notification sound": "Custom sound to override default notification sound", + "Time Sensitive (iOS Only)": "Time Sensitive (iOS Only)", + "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.": "Time sensitive notifications will be delivered immediately, even if the device is in do not disturb mode.", + "From":"From", + "Can be found on:": "Can be found on: {0}", + "The phone number of the recipient in E.164 format.": "The phone number of the recipient in E.164 format.", + "Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.":"Either a text sender ID or a phone number in E.164 format if you want to be able to receive replies.", + "SendGrid API Key": "SendGrid API Key", + "Separate multiple email addresses with commas": "Separate multiple email addresses with commas" +} diff --git a/src/lang/et-EE.json b/src/lang/et-EE.json index c68314a9e..de3794cca 100644 --- a/src/lang/et-EE.json +++ b/src/lang/et-EE.json @@ -1,320 +1,320 @@ -{ - "languageName": "eesti", - "retryCheckEverySecond": "Kontrolli {0} sekundilise vahega", - "retriesDescription": "Mitu korda tuleb kontrollida, mille järel märkida 'maas' ja saata välja teavitus", - "ignoreTLSError": "Eira TLS/SSL viga HTTPS veebisaitidel", - "upsideDownModeDescription": "Käitle teenuse saadavust rikkena, teenuse kättesaamatust töötavaks.", - "maxRedirectDescription": "Suurim arv ümbersuunamisi, millele järgida. 0 ei luba ühtegi.", - "acceptedStatusCodesDescription": "Vali välja HTTP koodid, mida arvestada kõlblikuks.", - "passwordNotMatchMsg": "Salasõnad ei kattu.", - "notificationDescription": "Teavitusteenuse kasutamiseks seo see seirega.", - "keywordDescription": "Jälgi võtmesõna HTML või JSON vastustes. (tõstutundlik)", - "pauseDashboardHome": "Seisatud", - "deleteMonitorMsg": "Kas soovid eemaldada seire?", - "deleteNotificationMsg": "Kas soovid eemaldada selle teavitusteenuse kõikidelt seiretelt?", - "resolverserverDescription": "Cloudflare on vaikimisi pöördserver.", - "rrtypeDescription": "Vali kirje tüüp, mida soovid jälgida.", - "pauseMonitorMsg": "Kas soovid peatada seire?", - "Settings": "Seaded", - "Status Page": "Ülevaade", - "Status Pages": "Ülevaated", - "Dashboard": "Töölaud", - "New Update": "Uuem tarkvara versioon on saadaval", - "Language": "Keel", - "Appearance": "Välimus", - "Theme": "Teema", - "General": "Üldine", - "Version": "Versioon", - "Check Update On GitHub": "Otsi uuendusi GitHub'ist", - "List": "Nimekiri", - "Add": "Lisa", - "Add New Monitor": "Lisa seire", - "Add a monitor": "Lisa seire", - "Quick Stats": "Ülevaade", - "Up": "Töökorras", - "Down": "Rikkis", - "Pending": "Määramisel", - "Unknown": "Kahtlast", - "Pause": "Seiska", - "Name": "Nimi", - "Status": "Olek", - "DateTime": "Kuupäev", - "Message": "Tulemus", - "No important events": "Märkimisväärsed juhtumid puuduvad", - "Resume": "Taasta", - "Edit": "Muuda", - "Delete": "Eemalda", - "Current": "Hetkeseisund", - "Uptime": "Eluiga", - "Cert Exp.": "Sert. aegumine", - "day": "päev | päeva", - "-day": "-päev", - "hour": "tund", - "-hour": "-tund", - "Response": "Reaktsiooniaeg", - "Ping": "Ping", - "Monitor Type": "Seire tüüp", - "Keyword": "Võtmesõna", - "Friendly Name": "Sõbralik nimi", - "URL": "URL", - "Hostname": "Hostname", - "Port": "Port", - "Heartbeat Interval": "Tukse sagedus", - "Retries": "Korduskatsed", - "Advanced": "Rohkem", - "Upside Down Mode": "Tagurpidi seire", - "Max. Redirects": "Max. ümbersuunamine", - "Accepted Status Codes": "Kõlblikud HTTP koodid", - "Save": "Salvesta", - "Notifications": "Teavitused", - "Not available, please setup.": "Ühtegi teavitusteenust pole saadaval.", - "Setup Notification": "Lisa teavitusteenus", - "Light": "hele", - "Dark": "tume", - "Auto": "automaatne", - "Theme - Heartbeat Bar": "Teemasäte — tuksete riba", - "Normal": "tavaline", - "Bottom": "all", - "None": "puudub", - "Timezone": "Ajatsoon", - "Search Engine Visibility": "Otsimootorite ligipääs", - "Allow indexing": "Luba indekseerimine", - "Discourage search engines from indexing site": "Keela selle saidi indekseerimine otsimootorite poolt", - "Change Password": "Muuda parooli", - "Current Password": "Praegune parool", - "New Password": "Uus parool", - "Repeat New Password": "Korda uut parooli", - "Update Password": "Uuenda parooli", - "Disable Auth": "Lülita autentimine välja", - "Enable Auth": "Lülita autentimine sisse", - "disableauth.message1": "Kas soovid {disableAuth}?", - "disable authentication": "lülitada autentimise välja", - "disableauth.message2": "Kastuamiseks {intendThirdPartyAuth}, näiteks Cloudflare Access.", - "where you intend to implement third-party authentication": "välise autentimispakkujaga", - "Please use this option carefully!": "Palun kasuta seda valikut vastutustundlikult!", - "Logout": "Logi välja", - "Leave": "Lahku", - "I understand, please disable": "Olen tutvunud riskidega, lülita välja", - "Confirm": "Kinnita", - "Yes": "Jah", - "No": "Ei", - "Username": "Kasutajanimi", - "Password": "Parool", - "Remember me": "Mäleta mind", - "Login": "Logi sisse", - "No Monitors, please": "Seired puuduvad, palun", - "add one": "Lisa esimene", - "Notification Type": "Teavituse tüüp", - "Email": "e-posti aadress", - "Test": "Saada prooviteavitus", - "Certificate Info": "Sertifikaadi teave", - "Resolver Server": "Server, mis vastab DNS päringutele.", - "Resource Record Type": "DNS kirje tüüp", - "Last Result": "Viimane", - "Create your admin account": "Admininstraatori konto loomine", - "Repeat Password": "korda salasõna", - "respTime": "Reageerimisaeg (ms)", - "notAvailableShort": "N/A", - "enableDefaultNotificationDescription": "Kõik järgnevalt lisatud seired kasutavad seda teavitusteenuset. Seiretelt võib teavitusteenuse ühekaupa eemaldada.", - "clearEventsMsg": "Kas soovid seire kõik sündmused kustutada?", - "clearHeartbeatsMsg": "Kas soovid seire kõik tuksed kustutada?", - "confirmClearStatisticsMsg": "Kas soovid TERVE ajaloo kustutada?", - "Export": "Eksport", - "Import": "Import", - "Default enabled": "Kasuta vaikimisi", - "Apply on all existing monitors": "Kõik praegused seired hakkavad kasutama seda teavitusteenust", - "Create": "Loo konto", - "Clear Data": "Eemalda andmed", - "Events": "Sündmused", - "Heartbeats": "Tuksed", - "Auto Get": "Hangi automaatselt", - "backupDescription": "Varunda kõik seired ja teavitused JSON faili.", - "backupDescription2": "PS: Varukoopia EI sisalda seirete ajalugu ja sündmustikku.", - "backupDescription3": "Varukoopiad sisaldavad teavitusteenusete pääsuvõtmeid.", - "alertNoFile": "Palun lisa fail, mida importida.", - "alertWrongFileType": "Palun lisa JSON-formaadis fail.", - "twoFAVerifyLabel": "2FA kinnitamiseks sisesta pääsukood", - "tokenValidSettingsMsg": "Kood õige. Akna võib sulgeda.", - "confirmEnableTwoFAMsg": "Kas soovid 2FA sisse lülitada?", - "confirmDisableTwoFAMsg": "Kas soovid 2FA välja lülitada?", - "Verify Token": "Kontrolli", - "Setup 2FA": "Kaksikautentimise seadistamine", - "Enable 2FA": "Seadista 2FA", - "Disable 2FA": "Lülita 2FA välja", - "2FA Settings": "2FA seaded", - "Two Factor Authentication": "Kaksikautentimine", - "Active": "Aktiivne", - "Inactive": "Mitteaktiivne", - "Token": "Kaksikautentimise kood", - "Show URI": "Näita URId", - "Clear all statistics": "Tühjenda ajalugu", - "importHandleDescription": "'kombineeri' täiendab varukoopiast ja kirjutab üle samanimelised seireid ja teavitusteenused; 'lisa praegustele' jätab olemasolevad puutumata; 'asenda' kustutab ja asendab kõik seired ja teavitusteenused.", - "confirmImportMsg": "Käkerdistest hoidumiseks lae enne taastamist alla uus varukoopia. Kas soovid taastada üles laetud?", - "Heartbeat Retry Interval": "Korduskatsete intervall", - "Import Backup": "Varukoopia importimine", - "Export Backup": "Varukoopia eksportimine", - "Skip existing": "lisa praegustele", - "Overwrite": "Asenda", - "Options": "Mestimisviis", - "Keep both": "Kombineeri", - "Tags": "Sildid", - "Add New below or Select...": "Leia või lisa all uus…", - "Tag with this name already exist.": "Selle nimega silt on juba olemas.", - "Tag with this value already exist.": "Selle väärtusega silt on juba olemas.", - "color": "värvus", - "value (optional)": "väärtus (fakultatiivne)", - "Gray": "hall", - "Red": "punane", - "Orange": "oranž", - "Green": "roheline", - "Blue": "sinine", - "Indigo": "indigo", - "Purple": "lilla", - "Pink": "roosa", - "Search...": "Otsi…", - "Avg. Ping": "Keskmine ping", - "Avg. Response": "Keskmine reaktsiooniaeg", - "Entry Page": "Avaleht", - "statusPageNothing": "Kippu ega kõppu; siia saab lisada seireid või -gruppe.", - "No Services": "Teenused puuduvad", - "All Systems Operational": "Kõik töökorras", - "Partially Degraded Service": "Teenuse töö osaliselt häiritud", - "Degraded Service": "Teenuse töö häiritud", - "Add Group": "Lisa grupp", - "Edit Status Page": "Muuda lehte", - "Go to Dashboard": "Töölauale", - "checkEverySecond": "Kontrolli peale tõrget {0} sekundilise vahega", - "telegram": "Telegram", - "webhook": "Webhook", - "smtp": "elektronpost (SMTP)", - "discord": "Discord", - "teams": "Microsoft Teams", - "signal": "Signal", - "gotify": "Gotify", - "slack": "Slack", - "rocket.chat": "Rocket.chat", - "pushover": "Pushover", - "pushy": "Pushy", - "octopush": "Octopush", - "promosms": "PromoSMS", - "lunasea": "LunaSea", - "apprise": "Apprise (vahendab üle 65 teavitusteenust)", - "pushbullet": "Pushbullet", - "line": "LINE", - "mattermost": "Mattermost", - "alerta": "Alerta", - "alertaApiEndpoint": "API otsik", - "alertaEnvironment": "Keskkond", - "alertaApiKey": "API võti", - "alertaAlertState": "Häireseisund", - "alertaRecoverState": "Taasta algolek", - "Game": "Mäng", - "Primary Base URL": "Peamine baas URL", - "Passive Monitor Type": "Passiivne monitori tüüp", - "Specific Monitor Type": "Spetsiifiline monitori tüüp", - "resendDisabled": "Uuesti saatmine keelatud", - "Push URL": "Lükka URL", - "needPushEvery": "Sa peaksid kutsuma seda URL-i iga {0} sekundi tagant.", - "pushOptionalParams": "Valikulised parameetrid: {0}", - "Schedule maintenance": "Planeeri hooldus", - "All Status Pages": "Kõik staatuse lehed", - "Select status pages...": "Vali staatuse lehed…", - "Custom": "Kohandatud", - "here": "siin", - "Required": "Nõutud", - "Post URL": "Postita URL", - "Affected Monitors": "Mõjutatud monitorid", - "Pick Affected Monitors...": "Vali mõjutatud monitorid…", - "Start of maintenance": "Hoolduse algus", - "Content Type": "Sisu tüüp", - "webhookJsonDesc": "{0} on hea iga modernse HTTP serveri jaoks nagu Express.js", - "webhookAdditionalHeadersTitle": "Täiendavad päised", - "setAsDefault": "Lisa vaikimisi", - "deleteProxyMsg": "Kas Sa oled kindel, et soovid kustutada seda puhverserverit kõkidel monitoridel?", - "proxyDescription": "Puhverserverid tuleb lisada monitorile selle töötamiseks.", - "setAsDefaultProxyDescription": "See puhverserver aktiveeritakse vaikimisi uutel monitoridel. Sa saad keelata seda puhverserverit igal monitoril eraldi.", - "Certificate Chain": "Sertifikaadi kett", - "Valid": "Kehtiv", - "Invalid": "Kehtetu", - "User": "Kasutaja", - "Installed": "Paigaldatud", - "Not installed": "Ei ole installeeritud", - "Running": "Töötab", - "resendEveryXTimes": "Saada uuesti {0} korda", - "statusMaintenance": "Hooldus", - "Webhook URL": "", - "Server URL": "Serveri URL", - "Priority": "Tähtsus", - "emojiCheatSheet": "Emotikoni spikker: {0}", - "appriseInstalled": "Apprise on installitud.", - "appriseNotInstalled": "Apprise ei ole installitud. {0}", - "Method": "Meetod", - "Body": "Keha", - "Headers": "Päis", - "PushUrl": "Lükka URL", - "Monitor History": "Monitori ajalugu", - "PasswordsDoNotMatch": "Paroolid ei ühti.", - "records": "", - "Current User": "Praegune kasutaja", - "topic": "Teema", - "successMessage": "Edukas sõnum", - "recent": "Hiljutine", - "Info": "Info", - "Security": "Turvalisus", - "Steam API Key": "Steam API võti", - "Pick a RR-Type...": "Vali RR-tüüp…", - "Default": "Vaikimisi", - "HTTP Options": "HTTP valikud", - "Create Incident": "Loo intsident", - "Title": "Pealkiri", - "Content": "Sisu", - "Style": "Stiil", - "info": "info", - "warning": "hoiatus", - "danger": "oht", - "error": "viga", - "critical": "kriitiline", - "primary": "peamine", - "dark": "tume", - "light": "hele", - "Post": "Postita", - "Please input title and content": "Palun lisa pealkiri ja sisu", - "Created": "Loodud", - "Last Updated": "Viimati uuendatud", - "Unpin": "Vabastada", - "Switch to Dark Theme": "Vaheta tumedale teemale", - "Hide Tags": "Peida tagid", - "Show Tags": "Näita tagid", - "Description": "Kirjeldus", - "No monitors available.": "Ühtegi monitori ei ole saadaval.", - "Add one": "Lisa üks", - "No Monitors": "Ei ole monitore", - "Untitled Group": "Nimetamata grupp", - "Services": "Teenused", - "Cancel": "Tühista", - "Customize": "Kohanda", - "Custom Footer": "Kohandatud jalus", - "Custom CSS": "Kohandatud CSS", - "Proxies": "Puhverserverid", - "default": "Vaikimisi", - "enabled": "Lubatud", - "Not running": "Ei tööta", - "Start": "Alusta", - "Stop": "Peata", - "Add New Status Page": "Lisa uus staatuse leht", - "Shrink Database": "Vähenda andmebaasi", - "Help": "Abi", - "Maintenance": "Hooldus", - "General Monitor Type": "Üldine monitori tüüp", - "webhookAdditionalHeadersDesc": "Lisab täiendavad päised saadetud webhookiga.", - "Read more": "Loe rohkem", - "HeadersInvalidFormat": "", - "clearDataOlderThan": "Hoia monitori ajalugu alles {0} päeva.", - "steamApiKeyDescription": "Steam Game Serveri monitoorimiseks on vaja sul Steam Web-API võtit. Sa saad registreerida enda API võtme siin: ", - "Done": "Tehtud", - "Pick Accepted Status Codes...": "Vali vastu võetud staatuse koodid…", - "Switch to Light Theme": "Vaheta heledale teemale", - "Discard": "Loobu", - "deleteStatusPageMsg": "Kas Sa oled kindel, et soovid kustutada seda staatuse lehte?", - "Resend Notification if Down X times consecutively": "Saada teavitus uuesti kui monitor on rikkis X korda järjest" -} +{ + "languageName": "eesti", + "retryCheckEverySecond": "Kontrolli {0} sekundilise vahega", + "retriesDescription": "Mitu korda tuleb kontrollida, mille järel märkida 'maas' ja saata välja teavitus", + "ignoreTLSError": "Eira TLS/SSL viga HTTPS veebisaitidel", + "upsideDownModeDescription": "Käitle teenuse saadavust rikkena, teenuse kättesaamatust töötavaks.", + "maxRedirectDescription": "Suurim arv ümbersuunamisi, millele järgida. 0 ei luba ühtegi.", + "acceptedStatusCodesDescription": "Vali välja HTTP koodid, mida arvestada kõlblikuks.", + "passwordNotMatchMsg": "Salasõnad ei kattu.", + "notificationDescription": "Teavitusteenuse kasutamiseks seo see seirega.", + "keywordDescription": "Jälgi võtmesõna HTML või JSON vastustes. (tõstutundlik)", + "pauseDashboardHome": "Seisatud", + "deleteMonitorMsg": "Kas soovid eemaldada seire?", + "deleteNotificationMsg": "Kas soovid eemaldada selle teavitusteenuse kõikidelt seiretelt?", + "resolverserverDescription": "Cloudflare on vaikimisi pöördserver.", + "rrtypeDescription": "Vali kirje tüüp, mida soovid jälgida.", + "pauseMonitorMsg": "Kas soovid peatada seire?", + "Settings": "Seaded", + "Status Page": "Ülevaade", + "Status Pages": "Ülevaated", + "Dashboard": "Töölaud", + "New Update": "Uuem tarkvara versioon on saadaval", + "Language": "Keel", + "Appearance": "Välimus", + "Theme": "Teema", + "General": "Üldine", + "Version": "Versioon", + "Check Update On GitHub": "Otsi uuendusi GitHub'ist", + "List": "Nimekiri", + "Add": "Lisa", + "Add New Monitor": "Lisa seire", + "Add a monitor": "Lisa seire", + "Quick Stats": "Ülevaade", + "Up": "Töökorras", + "Down": "Rikkis", + "Pending": "Määramisel", + "Unknown": "Kahtlast", + "Pause": "Seiska", + "Name": "Nimi", + "Status": "Olek", + "DateTime": "Kuupäev", + "Message": "Tulemus", + "No important events": "Märkimisväärsed juhtumid puuduvad", + "Resume": "Taasta", + "Edit": "Muuda", + "Delete": "Eemalda", + "Current": "Hetkeseisund", + "Uptime": "Eluiga", + "Cert Exp.": "Sert. aegumine", + "day": "päev | päeva", + "-day": "-päev", + "hour": "tund", + "-hour": "-tund", + "Response": "Reaktsiooniaeg", + "Ping": "Ping", + "Monitor Type": "Seire tüüp", + "Keyword": "Võtmesõna", + "Friendly Name": "Sõbralik nimi", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Port", + "Heartbeat Interval": "Tukse sagedus", + "Retries": "Korduskatsed", + "Advanced": "Rohkem", + "Upside Down Mode": "Tagurpidi seire", + "Max. Redirects": "Max. ümbersuunamine", + "Accepted Status Codes": "Kõlblikud HTTP koodid", + "Save": "Salvesta", + "Notifications": "Teavitused", + "Not available, please setup.": "Ühtegi teavitusteenust pole saadaval.", + "Setup Notification": "Lisa teavitusteenus", + "Light": "hele", + "Dark": "tume", + "Auto": "automaatne", + "Theme - Heartbeat Bar": "Teemasäte — tuksete riba", + "Normal": "tavaline", + "Bottom": "all", + "None": "puudub", + "Timezone": "Ajatsoon", + "Search Engine Visibility": "Otsimootorite ligipääs", + "Allow indexing": "Luba indekseerimine", + "Discourage search engines from indexing site": "Keela selle saidi indekseerimine otsimootorite poolt", + "Change Password": "Muuda parooli", + "Current Password": "Praegune parool", + "New Password": "Uus parool", + "Repeat New Password": "Korda uut parooli", + "Update Password": "Uuenda parooli", + "Disable Auth": "Lülita autentimine välja", + "Enable Auth": "Lülita autentimine sisse", + "disableauth.message1": "Kas soovid {disableAuth}?", + "disable authentication": "lülitada autentimise välja", + "disableauth.message2": "Kastuamiseks {intendThirdPartyAuth}, näiteks Cloudflare Access.", + "where you intend to implement third-party authentication": "välise autentimispakkujaga", + "Please use this option carefully!": "Palun kasuta seda valikut vastutustundlikult!", + "Logout": "Logi välja", + "Leave": "Lahku", + "I understand, please disable": "Olen tutvunud riskidega, lülita välja", + "Confirm": "Kinnita", + "Yes": "Jah", + "No": "Ei", + "Username": "Kasutajanimi", + "Password": "Parool", + "Remember me": "Mäleta mind", + "Login": "Logi sisse", + "No Monitors, please": "Seired puuduvad, palun", + "add one": "Lisa esimene", + "Notification Type": "Teavituse tüüp", + "Email": "e-posti aadress", + "Test": "Saada prooviteavitus", + "Certificate Info": "Sertifikaadi teave", + "Resolver Server": "Server, mis vastab DNS päringutele.", + "Resource Record Type": "DNS kirje tüüp", + "Last Result": "Viimane", + "Create your admin account": "Admininstraatori konto loomine", + "Repeat Password": "korda salasõna", + "respTime": "Reageerimisaeg (ms)", + "notAvailableShort": "N/A", + "enableDefaultNotificationDescription": "Kõik järgnevalt lisatud seired kasutavad seda teavitusteenuset. Seiretelt võib teavitusteenuse ühekaupa eemaldada.", + "clearEventsMsg": "Kas soovid seire kõik sündmused kustutada?", + "clearHeartbeatsMsg": "Kas soovid seire kõik tuksed kustutada?", + "confirmClearStatisticsMsg": "Kas soovid TERVE ajaloo kustutada?", + "Export": "Eksport", + "Import": "Import", + "Default enabled": "Kasuta vaikimisi", + "Apply on all existing monitors": "Kõik praegused seired hakkavad kasutama seda teavitusteenust", + "Create": "Loo konto", + "Clear Data": "Eemalda andmed", + "Events": "Sündmused", + "Heartbeats": "Tuksed", + "Auto Get": "Hangi automaatselt", + "backupDescription": "Varunda kõik seired ja teavitused JSON faili.", + "backupDescription2": "PS: Varukoopia EI sisalda seirete ajalugu ja sündmustikku.", + "backupDescription3": "Varukoopiad sisaldavad teavitusteenusete pääsuvõtmeid.", + "alertNoFile": "Palun lisa fail, mida importida.", + "alertWrongFileType": "Palun lisa JSON-formaadis fail.", + "twoFAVerifyLabel": "2FA kinnitamiseks sisesta pääsukood", + "tokenValidSettingsMsg": "Kood õige. Akna võib sulgeda.", + "confirmEnableTwoFAMsg": "Kas soovid 2FA sisse lülitada?", + "confirmDisableTwoFAMsg": "Kas soovid 2FA välja lülitada?", + "Verify Token": "Kontrolli", + "Setup 2FA": "Kaksikautentimise seadistamine", + "Enable 2FA": "Seadista 2FA", + "Disable 2FA": "Lülita 2FA välja", + "2FA Settings": "2FA seaded", + "Two Factor Authentication": "Kaksikautentimine", + "Active": "Aktiivne", + "Inactive": "Mitteaktiivne", + "Token": "Kaksikautentimise kood", + "Show URI": "Näita URId", + "Clear all statistics": "Tühjenda ajalugu", + "importHandleDescription": "'kombineeri' täiendab varukoopiast ja kirjutab üle samanimelised seireid ja teavitusteenused; 'lisa praegustele' jätab olemasolevad puutumata; 'asenda' kustutab ja asendab kõik seired ja teavitusteenused.", + "confirmImportMsg": "Käkerdistest hoidumiseks lae enne taastamist alla uus varukoopia. Kas soovid taastada üles laetud?", + "Heartbeat Retry Interval": "Korduskatsete intervall", + "Import Backup": "Varukoopia importimine", + "Export Backup": "Varukoopia eksportimine", + "Skip existing": "lisa praegustele", + "Overwrite": "Asenda", + "Options": "Mestimisviis", + "Keep both": "Kombineeri", + "Tags": "Sildid", + "Add New below or Select...": "Leia või lisa all uus…", + "Tag with this name already exist.": "Selle nimega silt on juba olemas.", + "Tag with this value already exist.": "Selle väärtusega silt on juba olemas.", + "color": "värvus", + "value (optional)": "väärtus (fakultatiivne)", + "Gray": "hall", + "Red": "punane", + "Orange": "oranž", + "Green": "roheline", + "Blue": "sinine", + "Indigo": "indigo", + "Purple": "lilla", + "Pink": "roosa", + "Search...": "Otsi…", + "Avg. Ping": "Keskmine ping", + "Avg. Response": "Keskmine reaktsiooniaeg", + "Entry Page": "Avaleht", + "statusPageNothing": "Kippu ega kõppu; siia saab lisada seireid või -gruppe.", + "No Services": "Teenused puuduvad", + "All Systems Operational": "Kõik töökorras", + "Partially Degraded Service": "Teenuse töö osaliselt häiritud", + "Degraded Service": "Teenuse töö häiritud", + "Add Group": "Lisa grupp", + "Edit Status Page": "Muuda lehte", + "Go to Dashboard": "Töölauale", + "checkEverySecond": "Kontrolli peale tõrget {0} sekundilise vahega", + "telegram": "Telegram", + "webhook": "Webhook", + "smtp": "elektronpost (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (vahendab üle 65 teavitusteenust)", + "pushbullet": "Pushbullet", + "line": "LINE", + "mattermost": "Mattermost", + "alerta": "Alerta", + "alertaApiEndpoint": "API otsik", + "alertaEnvironment": "Keskkond", + "alertaApiKey": "API võti", + "alertaAlertState": "Häireseisund", + "alertaRecoverState": "Taasta algolek", + "Game": "Mäng", + "Primary Base URL": "Peamine baas URL", + "Passive Monitor Type": "Passiivne monitori tüüp", + "Specific Monitor Type": "Spetsiifiline monitori tüüp", + "resendDisabled": "Uuesti saatmine keelatud", + "Push URL": "Lükka URL", + "needPushEvery": "Sa peaksid kutsuma seda URL-i iga {0} sekundi tagant.", + "pushOptionalParams": "Valikulised parameetrid: {0}", + "Schedule maintenance": "Planeeri hooldus", + "All Status Pages": "Kõik staatuse lehed", + "Select status pages...": "Vali staatuse lehed…", + "Custom": "Kohandatud", + "here": "siin", + "Required": "Nõutud", + "Post URL": "Postita URL", + "Affected Monitors": "Mõjutatud monitorid", + "Pick Affected Monitors...": "Vali mõjutatud monitorid…", + "Start of maintenance": "Hoolduse algus", + "Content Type": "Sisu tüüp", + "webhookJsonDesc": "{0} on hea iga modernse HTTP serveri jaoks nagu Express.js", + "webhookAdditionalHeadersTitle": "Täiendavad päised", + "setAsDefault": "Lisa vaikimisi", + "deleteProxyMsg": "Kas Sa oled kindel, et soovid kustutada seda puhverserverit kõkidel monitoridel?", + "proxyDescription": "Puhverserverid tuleb lisada monitorile selle töötamiseks.", + "setAsDefaultProxyDescription": "See puhverserver aktiveeritakse vaikimisi uutel monitoridel. Sa saad keelata seda puhverserverit igal monitoril eraldi.", + "Certificate Chain": "Sertifikaadi kett", + "Valid": "Kehtiv", + "Invalid": "Kehtetu", + "User": "Kasutaja", + "Installed": "Paigaldatud", + "Not installed": "Ei ole installeeritud", + "Running": "Töötab", + "resendEveryXTimes": "Saada uuesti {0} korda", + "statusMaintenance": "Hooldus", + "Webhook URL": "", + "Server URL": "Serveri URL", + "Priority": "Tähtsus", + "emojiCheatSheet": "Emotikoni spikker: {0}", + "appriseInstalled": "Apprise on installitud.", + "appriseNotInstalled": "Apprise ei ole installitud. {0}", + "Method": "Meetod", + "Body": "Keha", + "Headers": "Päis", + "PushUrl": "Lükka URL", + "Monitor History": "Monitori ajalugu", + "PasswordsDoNotMatch": "Paroolid ei ühti.", + "records": "", + "Current User": "Praegune kasutaja", + "topic": "Teema", + "successMessage": "Edukas sõnum", + "recent": "Hiljutine", + "Info": "Info", + "Security": "Turvalisus", + "Steam API Key": "Steam API võti", + "Pick a RR-Type...": "Vali RR-tüüp…", + "Default": "Vaikimisi", + "HTTP Options": "HTTP valikud", + "Create Incident": "Loo intsident", + "Title": "Pealkiri", + "Content": "Sisu", + "Style": "Stiil", + "info": "info", + "warning": "hoiatus", + "danger": "oht", + "error": "viga", + "critical": "kriitiline", + "primary": "peamine", + "dark": "tume", + "light": "hele", + "Post": "Postita", + "Please input title and content": "Palun lisa pealkiri ja sisu", + "Created": "Loodud", + "Last Updated": "Viimati uuendatud", + "Unpin": "Vabastada", + "Switch to Dark Theme": "Vaheta tumedale teemale", + "Hide Tags": "Peida tagid", + "Show Tags": "Näita tagid", + "Description": "Kirjeldus", + "No monitors available.": "Ühtegi monitori ei ole saadaval.", + "Add one": "Lisa üks", + "No Monitors": "Ei ole monitore", + "Untitled Group": "Nimetamata grupp", + "Services": "Teenused", + "Cancel": "Tühista", + "Customize": "Kohanda", + "Custom Footer": "Kohandatud jalus", + "Custom CSS": "Kohandatud CSS", + "Proxies": "Puhverserverid", + "default": "Vaikimisi", + "enabled": "Lubatud", + "Not running": "Ei tööta", + "Start": "Alusta", + "Stop": "Peata", + "Add New Status Page": "Lisa uus staatuse leht", + "Shrink Database": "Vähenda andmebaasi", + "Help": "Abi", + "Maintenance": "Hooldus", + "General Monitor Type": "Üldine monitori tüüp", + "webhookAdditionalHeadersDesc": "Lisab täiendavad päised saadetud webhookiga.", + "Read more": "Loe rohkem", + "HeadersInvalidFormat": "", + "clearDataOlderThan": "Hoia monitori ajalugu alles {0} päeva.", + "steamApiKeyDescription": "Steam Game Serveri monitoorimiseks on vaja sul Steam Web-API võtit. Sa saad registreerida enda API võtme siin: ", + "Done": "Tehtud", + "Pick Accepted Status Codes...": "Vali vastu võetud staatuse koodid…", + "Switch to Light Theme": "Vaheta heledale teemale", + "Discard": "Loobu", + "deleteStatusPageMsg": "Kas Sa oled kindel, et soovid kustutada seda staatuse lehte?", + "Resend Notification if Down X times consecutively": "Saada teavitus uuesti kui monitor on rikkis X korda järjest" +} diff --git a/src/lang/fi.json b/src/lang/fi.json index 80c084b75..edea49099 100644 --- a/src/lang/fi.json +++ b/src/lang/fi.json @@ -1,1052 +1,1052 @@ -{ - "Dashboard": "Kojetaulu", - "Help": "Apua", - "New Update": "Uusi päivitys", - "Language": "Kieli", - "Appearance": "Ulkonäkö", - "Theme": "Teema", - "General": "Yleinen", - "Game": "Peli", - "Version": "Versio", - "List": "Lista", - "Add": "Lisää", - "Add New Monitor": "Lisää uusi seurain", - "Quick Stats": "Pikakatsaus", - "Up": "Ylös", - "Down": "Alas", - "Pending": "Odottaa", - "statusMaintenance": "Huolto", - "Maintenance": "Huolto", - "Unknown": "Tuntematon", - "General Monitor Type": "Yleinen seuraintyyppi", - "Passive Monitor Type": "Passiivinen seuraintyyppi", - "markdownSupported": "Markdown-syntaksi tuettu", - "pauseDashboardHome": "Tauko", - "Pause": "Tauko", - "Name": "Nimi", - "Status": "Tila", - "DateTime": "Päivämäärä", - "Message": "Viesti", - "No important events": "Ei tärkeitä tapahtumia", - "Resume": "Jatka", - "Edit": "Muokkaa", - "Delete": "Poista", - "Current": "Nykyinen", - "Uptime": "Päälläoloaika", - "Monitor": "Seurain | Seuraimet", - "day": "Päivä | Päivää", - "-day": "-päivä(ä)", - "hour": "tunti", - "-hour": "-tunti(a)", - "Response": "Vastaus", - "Ping": "Ping", - "Monitor Type": "Seuraintyyppi", - "Keyword": "Avainsana", - "URL": "URL", - "Hostname": "Isäntänimi", - "Heartbeat Interval": "Sydämensykkeiden aikaväli", - "Retries": "Uusintayrityksiä", - "Resend Notification if Down X times consequently": "Uudelleen lähetä ilmoitus jos ei vastausta X määrä peräkkäin", - "Advanced": "Edistynyt", - "checkEverySecond": "Tarkista joka {0} sekunti", - "retryCheckEverySecond": "Yritä uudelleen joka {0} sekunti", - "resendEveryXTimes": "Uudelleen lähetä joka {0} kerta", - "ignoreTLSError": "Älä huomioi TLS/SSL virheitä HTTPS nettisivuilla", - "upsideDownModeDescription": "Käännä tila vastakkaiseksi. Jos palvelu on saavutettavissa, merkitse se SAMMUNEEKSI.", - "maxRedirectDescription": "Enimmäismäärä seurattavia uudelleenohjauksia. Aseta arvoksi 0 estääksesi uudelleenohjaukset.", - "Upside Down Mode": "Käänteinen tila", - "Max. Redirects": "Uudelleenohjauksia enintään", - "Accepted Status Codes": "Sallitut tilakoodit", - "Push URL": "Push-ilmoitus URL", - "Save": "Tallenna", - "Notifications": "Ilmoitukset", - "Setup Notification": "Määritä ilmoitukset", - "Light": "Vaalea", - "Dark": "Tumma", - "Auto": "Automaattinen", - "Theme - Heartbeat Bar": "Teema - Sydämensykepalkki", - "Normal": "Normaali", - "Bottom": "Alhaalla", - "None": "Ei mitään", - "Timezone": "Aikavyöhyke", - "Search Engine Visibility": "Hakukonenäkyvyys", - "Allow indexing": "Salli indeksointi", - "Change Password": "Vaihda salasana", - "Current Password": "Nykyinen salasana", - "New Password": "Uusi salasana", - "Repeat New Password": "Toista uusi salasana", - "Update Password": "Päivitä salasana", - "Disable Auth": "Poista todennus käytöstä", - "Enable Auth": "Ota todennus käyttöön", - "Logout": "Kirjaudu ulos", - "Leave": "Poistu", - "I understand, please disable": "Ymmärrän, poista käytöstä", - "Confirm": "Hyväksy", - "Yes": "Kyllä", - "No": "Ei", - "Username": "Käyttäjänimi", - "Password": "Salasana", - "Login": "Kirjaudu", - "add one": "lisää", - "Notification Type": "Ilmoitustyyppi", - "Email": "Sähköposti", - "Test": "Testi", - "Certificate Info": "Varmenteen tiedot", - "Settings": "Asetukset", - "Check Update On GitHub": "Tarkista päivitys GitHub:ssa", - "Specific Monitor Type": "Tietty seuraintyyppi", - "Cert Exp.": "Varmenne vanh.", - "Friendly Name": "Ystävällinen nimi", - "Port": "Portti", - "Heartbeat Retry Interval": "Sydämensykkeen uudelleenyritysten aikaväli", - "resendDisabled": "Uudelleenlähetys poissa käytöstä", - "retriesDescription": "Enimmäismäärä uudelleenyrityksiä ennen kuin palvelu merkitään sammuneeksi ja ilmoitus lähetetään", - "Discourage search engines from indexing site": "Estä hakukoneita indeksoimasta sivua", - "Please use this option carefully!": "Käytä tätä vaihtoehtoa varoen!", - "Remember me": "Muista minut", - "languageName": "Suomi", - "Primary Base URL": "Ensisijainen perus-URL", - "pushOptionalParams": "Valinnaiset parametrit: {0}", - "Not available, please setup.": "Ei saatavilla, määritä ensin.", - "needPushEvery": "Sinun tulee kutsua tätä URLia joka {0} sekunti.", - "disableauth.message1": "Oletko varma että haluat {disableAuth}?", - "disable authentication": "poistaa todennuksen käytöstä", - "disableauth.message2": "Se on suunniteltu tilanteisiin {intendThirdPartyAuth} Uptime Kuma:n edessä, kuten Cloudflare Access, Authelia tai jotain muuta todennus mekanismia.", - "where you intend to implement third-party authentication": "jossa aiot käyttää kolmannen osapuolen todennnusta", - "No Monitors, please": "Ei seuraimia, ole hyvä", - "Resolver Server": "Nimipalvelin", - "Resource Record Type": "Tietueen tyyppi (RR)", - "Last Result": "Viimeisin tulos", - "Create your admin account": "Luo ylläpitäjän käyttäjätili", - "Repeat Password": "Toista salasana", - "Import Backup": "Tuo varmuuskopio", - "Export Backup": "Vie varmuuskopio", - "Export": "Vie", - "Import": "Tuo", - "respTime": "Vast. aika (ms)", - "notAvailableShort": "Ei käytössä", - "Default enabled": "Oletuksena käytössä", - "Apply on all existing monitors": "Aseta jokaiselle olemassa olevalle seuraimelle", - "Create": "Luo", - "Clear Data": "Tyhjennä tiedot", - "Events": "Tapahtumat", - "Heartbeats": "Sydämensyke", - "Auto Get": "Automaattinen haku", - "Schedule maintenance": "Aikatauluta huolto", - "Affected Monitors": "Vaikutetut seuraimet", - "Pick Affected Monitors...": "Poimi vaikutetut seuraimet…", - "Start of maintenance": "Huollon aloitus", - "All Status Pages": "Kaikki tilasivut", - "Select status pages...": "Valitse tilasivu…", - "alertNoFile": "Valitse tuotava tiedosto.", - "alertWrongFileType": "Valitse JSON-tiedosto.", - "Clear all statistics": "Tyhjennä kaikki tilastot", - "Skip existing": "Ohita olemassa oleva", - "Overwrite": "Päällekirjoita", - "Options": "Vaihtoehdot", - "Keep both": "Pidä molemmat", - "Verify Token": "Vahvista tunnus", - "Setup 2FA": "Määritä 2FA", - "Enable 2FA": "Ota 2FA käyttöön", - "Disable 2FA": "Poista 2FA käytöstä", - "2FA Settings": "2FA-asetukset", - "Two Factor Authentication": "Kaksivaiheinen tunnistautuminen (2FA)", - "Active": "Aktiivinen", - "Token": "Token", - "Show URI": "Näytä URI", - "Tags": "Tunnisteet", - "Tag with this name already exist.": "Tunniste tällä nimellä on jo olemassa.", - "Tag with this value already exist.": "Tunniste tällä arvolla on jo olemassa.", - "color": "Väri", - "value (optional)": "arvo (valinnainen)", - "Gray": "Harmaa", - "Red": "Punainen", - "Orange": "Oranssi", - "Green": "Vihreä", - "Indigo": "Indigo", - "Purple": "Purppura", - "Pink": "Vaaleanpunainen", - "Custom": "Mukautettu", - "Search...": "Etsi…", - "Avg. Ping": "Kesk.arv. viive", - "Entry Page": "Sisääntulosivu", - "statusPageNothing": "Täällä ei ole mitään. Lisää ryhmä tai seurain.", - "No Services": "Ei palveluita", - "Partially Degraded Service": "Osittain heikentynyt palvelu", - "Degraded Service": "Heikentynyt palvelu", - "Add Group": "Lisää ryhmä", - "Add a monitor": "Lisää seurain", - "Edit Status Page": "Muokkaa tilasivua", - "Go to Dashboard": "Mene kojelaudalle", - "Status Page": "Tilasivu", - "Status Pages": "Tilasivut", - "here": "täällä", - "Required": "Vaadittu", - "webhook": "Webhookki", - "Post URL": "Lähetys-URL", - "Content Type": "Sisältötyyppi", - "webhookJsonDesc": "{0} soveltuu mille tahansa modernille HTTP-palvelimille kuten Express.js", - "webhookAdditionalHeadersTitle": "Lisäotsakkeet", - "webhookAdditionalHeadersDesc": "Asettaa lisäotsakkeet, jotka lähetetään webhookille. Jokainen lisäotsake tulisi määritellä JSON-avaimena ja -arvona.", - "Webhook URL": "Webhookin URL", - "Application Token": "Sovellus-token", - "Server URL": "Palvelimen URL", - "Priority": "Prioriteetti", - "emojiCheatSheet": "Emoji lunttilappu: {0}", - "Read more": "Lue lisää", - "appriseInstalled": "Apprise on asennettu.", - "appriseNotInstalled": "Apprisea ei ole asennettu. {0}", - "Method": "Menetelmä", - "Body": "Runko", - "Headers": "Otsikot", - "PushUrl": "Push-ilmoitus URL", - "BodyInvalidFormat": "Pyynnön sisältörunko ei ole kelvollisessa JSON-muodossa: ", - "Monitor History": "Seurannan historia", - "PasswordsDoNotMatch": "Salasanat eivät täsmää.", - "records": "tallenteet", - "One record": "Yksi tallenne", - "Current User": "Nykyinen käyttäjä", - "topic": "Aihe", - "topicExplanation": "MQTT seurattava aihe", - "successMessage": "Onnistumis viesti", - "successMessageExplanation": "MQTT-viesti, jota pidetään onnistuneena", - "recent": "Viimeaikainen", - "Done": "Tehty", - "Info": "Tiedot", - "Security": "Turvallisuus", - "Steam API Key": "Steam API-avain", - "Shrink Database": "Pienennä tietokanta", - "Pick a RR-Type...": "Valitse tietuetyyppi (RR)…", - "Pick Accepted Status Codes...": "Valitse hyväksytyt tilakoodit…", - "Default": "Oletus", - "HTTP Options": "HTTP-valinnat", - "Create Incident": "Luo tapaus", - "Title": "Otsikko", - "Content": "Sisältö", - "Style": "Tyyli", - "info": "tiedote", - "warning": "varoitus", - "danger": "vaara", - "error": "virhe", - "critical": "kriittinen", - "primary": "ensisijainen", - "dark": "tumma", - "Post": "Lähetä", - "Please input title and content": "Syötä otsikko ja sisältö", - "Created": "Luotu", - "Last Updated": "Viimeksi päivitetty", - "Unpin": "Irroita", - "Switch to Dark Theme": "Vaihda tummaan teemaan", - "Show Tags": "Näytä tunnisteet", - "Hide Tags": "Piilota tunnisteet", - "Description": "Kuvaus", - "No monitors available.": "Ei seuraimia saatavilla.", - "Add one": "Lisää yksi", - "No Monitors": "Ei seuraimia", - "Untitled Group": "Nimetön ryhmä", - "Services": "Palvelut", - "Discard": "Peruuta", - "Cancel": "Peruuttaa", - "Customize": "Mukauta", - "Custom Footer": "Mukautettu alatunniste", - "Custom CSS": "Mukautettu CSS", - "deleteStatusPageMsg": "Haluatko varmasti poistaa tämän tilasivun?", - "Proxies": "Välityspalvelimet", - "default": "Oletus", - "enabled": "Käytössä", - "setAsDefault": "Aseta oletukseksi", - "deleteProxyMsg": "Haluatko varmasti poistaa tämän välityspalvelimen kaikista seuraimista?", - "proxyDescription": "Välityspalvelimet on määritettävä seuraimelle toimiakseen.", - "enableProxyDescription": "Tämä välityspalvelin ei vaikuta valvontapyyntöihin ennen kuin se on aktivoitu. Voit hallita välityspalvelimen väliaikaista poistamista käytöstä kaikista seuraimista aktivointitilan perusteella.", - "setAsDefaultProxyDescription": "Tämä välityspalvelin on oletuksena käytössä uusissa seuraimissa. Voit silti poistaa välityspalvelimen käytöstä erikseen jokaisesta seuraimesta.", - "Certificate Chain": "Varmenneketju", - "Valid": "Voimassa oleva", - "Invalid": "Pätemätön", - "User": "Käyttäjä", - "Installed": "Asennettu", - "Not installed": "Ei asennettu", - "Running": "Käynnissä", - "Not running": "Ei käynnissä", - "Remove Token": "Poista token", - "Start": "Käynnistä", - "Stop": "Pysäytä", - "Add New Status Page": "Lisää uusi tilasivu", - "Slug": "Slug", - "startOrEndWithOnly": "Aloita tai lopeta vain {0}", - "No consecutive dashes": "Ei peräkkäisiä viivoja", - "Next": "Seuraava", - "No Proxy": "Ei välityspalvelinta", - "Authentication": "Todennus", - "HTTP Basic Auth": "HTTP-perustodennus", - "Page Not Found": "Sivua ei löydetty", - "Reverse Proxy": "Käänteinen välityspalvelin", - "Backup": "Varmuuskopio", - "About": "Tietoja", - "cloudflareWebsite": "Cloudflare verkkosivusto", - "Message:": "Viesti:", - "Don't know how to get the token? Please read the guide:": "Etkö tiedä kuinka saada tunnus? Ole hyvä ja lue opas:", - "HTTP Headers": "HTTP-otsikot", - "Trust Proxy": "Luota välityspalvelimeen", - "Other Software": "Muut ohjelmistot", - "For example: nginx, Apache and Traefik.": "Esimerkiksi: nginx, Apache ja Traefik.", - "Please read": "Ole hyvä ja lue", - "Subject:": "Aihe:", - "Valid To:": "Voimassa:", - "Days Remaining:": "Päiviä jäljellä:", - "Issuer:": "Myöntäjä:", - "Fingerprint:": "Sormenjälki:", - "No status pages": "Ei tilasivuja", - "Domain Name Expiry Notification": "Verkkotunnuksen vanhenemisilmoitus", - "Proxy": "Välityspalvelin", - "Date Created": "Luomispäivämäärä", - "Footer Text": "Alatunnisteen teksti", - "Show Powered By": "Näytä \"Voimanlähteenä\"", - "Domain Names": "Verkkotunnukset", - "signedInDisp": "Kirjautunut sisään käyttäjänä {0}", - "signedInDispDisabled": "Todennus poistettu käytöstä.", - "RadiusSecretDescription": "Asiakkaan ja palvelimen välinen yhteinen salaisuus", - "RadiusCalledStationIdDescription": "Kutsutun laitteen tunniste", - "RadiusCallingStationId": "Kutsuaseman tunnus", - "Certificate Expiry Notification": "Varmenteen vanhenemisilmoitus", - "API Username": "API-käyttäjänimi", - "API Key": "API-avain", - "Show update if available": "Näytä päivitys, jos saatavilla", - "Also check beta release": "Tarkista myös beta-versio", - "Using a Reverse Proxy?": "Käytätkö käänteistä välityspalvelinta?", - "The slug is already taken. Please choose another slug.": "Slug on jo otettu. Ole hyvä ja valitse toinen slug.", - "RadiusSecret": "Radius-salaisuus", - "RadiusCalledStationId": "Kutsuttu aseman tunnus", - "Steam Game Server": "Steam-pelipalvelin", - "Most likely causes:": "Todennäköisimmät syyt:", - "The resource is no longer available.": "Resurssi ei ole enää saatavilla.", - "There might be a typing error in the address.": "Osoitteessa saattaa olla kirjoitusvirhe.", - "What you can try:": "Mitä voit kokeilla:", - "Retype the address.": "Kirjoita osoite uudelleen.", - "Go back to the previous page.": "Palaa edelliselle sivulle.", - "Coming Soon": "Tulossa pian", - "Connection String": "Yhteysmerkkijono", - "Query": "Tiedustelu (Query)", - "settingsCertificateExpiry": "TLS-varmenteen vanheneminen", - "certificationExpiryDescription": "HTTPS-seuraimet käynnistävät ilmoituksen, kun TLS-varmenne vanhenee:", - "Setup Docker Host": "Määritä Docker-isäntä", - "Connection Type": "Yhteystyyppi", - "tcp": "TCP / HTTP", - "Docker Container": "Docker-kontti", - "Container Name / ID": "Säilön nimi/tunnus", - "Docker Host": "Docker-isäntä", - "Docker Hosts": "Docker-isännät", - "Domain": "Verkkotunnus", - "Workstation": "Työasema", - "socket": "Socket", - "Packet Size": "Paketin koko", - "telegram": "Telegram", - "ZohoCliq": "ZohoCliq", - "Bot Token": "Botin token", - "wayToGetTelegramToken": "Voit saada tunnuksen osoitteesta {0}.", - "Chat ID": "Chat-tunnus", - "wayToGetTelegramChatID": "Saat chat-tunnuksesi lähettämällä viestin botille ja siirtymällä tähän URL-osoitteeseen nähdäksesi chat_id:", - "YOUR BOT TOKEN HERE": "BOTIN TOKEN TÄHÄN", - "chatIDNotFound": "Chat ID:tä ei löydy; lähetä ensin viesti tälle botille", - "disableCloudflaredNoAuthMsg": "Olet No Auth -tilassa, salasanaa ei tarvita.", - "trustProxyDescription": "Luota \"X-Forwarded-*\"-otsikoihin. Jos haluat saada oikean asiakas-IP:n ja Uptime Kumasi on välityspalvelimen, kuten Nginx tai Apache, takana, sinun tulee ottaa tämä käyttöön.", - "wayToGetLineNotifyToken": "Voit saada käyttötunnuksen osoitteesta {0}", - "Examples": "Esimerkkejä", - "Home Assistant URL": "Home Assistantin URL-osoite", - "Long-Lived Access Token": "Pitkäikäinen pääsytunnus", - "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Pitkäikäinen pääsytunnus voidaan luoda napsauttamalla profiilisi nimeä (vasemmalla alareunassa) ja vierittämällä alas ja napsauttamalla sitten Luo tunnus. ", - "Notification Service": "Ilmoituspalvelu", - "default: notify all devices": "oletus: ilmoita kaikille laitteille", - "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Luettelo ilmoituspalveluista löytyy Home Assistantin kohdasta \"Kehittäjätyökalut > Palvelut\". Hae hakusanalla \"ilmoitus\" löytääksesi laitteesi/puhelimesi nimen.", - "Automations can optionally be triggered in Home Assistant:": "Automaatiot voidaan vaihtoehtoisesti laukaista Home Assistantissa:", - "Trigger type:": "Triggerin tyyppi:", - "Event type:": "Tapahtumatyyppi:", - "Frontend Version": "Käyttöliittymän versio", - "Frontend Version do not match backend version!": "Käyttöliittymän versio ei vastaa taustaversiota!", - "backupRecommend": "Varmuuskopioi asema tai tietokansio (./data/) suoraan sen sijaan.", - "Optional": "Valinnainen", - "squadcast": "Squadcast", - "or": "tai", - "recurringInterval": "Aikaväli", - "Recurring": "Toistuva", - "strategyManual": "Aktiivinen/ei-aktiivinen manuaalisesti", - "warningTimezone": "Se käyttää palvelimen aikavyöhykettä", - "weekdayShortMon": "Ma", - "weekdayShortTue": "Ti", - "weekdayShortWed": "Ke", - "weekdayShortThu": "To", - "weekdayShortFri": "Pe", - "weekdayShortSat": "La", - "weekdayShortSun": "Su", - "dayOfWeek": "Viikonpäivä", - "dayOfMonth": "Kuukauden päivä", - "lastDay": "Viimeinen päivä", - "lastDay1": "Kuukauden viimeinen päivä", - "lastDay2": "Kuukauden toiseksi viimeinen päivä", - "lastDay3": "Kuukauden 3. viimeinen päivä", - "No Maintenance": "Ei huoltoa", - "pauseMaintenanceMsg": "Haluatko varmasti keskeyttää?", - "maintenanceStatus-under-maintenance": "Huollossa", - "maintenanceStatus-inactive": "Ei-aktiivinen", - "maintenanceStatus-scheduled": "Aikataulutettu", - "maintenanceStatus-ended": "Päättyi", - "maintenanceStatus-unknown": "Tuntematon", - "Display Timezone": "Käyttöliittymän aikavyöhyke", - "Server Timezone": "Palvelimen aikavyöhyke", - "statusPageMaintenanceEndDate": "Loppu", - "Enable": "Ota käyttöön", - "Disable": "Poista käytöstä", - "Single Maintenance Window": "Yksi huoltoikkuna", - "Maintenance Time Window of a Day": "Päivän huoltoaikaikkuna", - "Effective Date Range": "Voimassa oleva ajanjakso (valinnainen)", - "Schedule Maintenance": "Ajoita huolto", - "Date and Time": "Päivämäärä ja aika", - "DateTime Range": "Päivämäärä- ja aika-alue", - "loadingError": "Tietoja ei voi noutaa, yritä myöhemmin uudelleen.", - "plugin": "Lisäosa | Lisäosat", - "install": "Asenna", - "installing": "Asennetaan", - "uninstall": "Poista asennus", - "uninstalling": "Poistetaan asennusta", - "smtp": "Sähköposti (SMTP)", - "secureOptionNone": "Ei mitään / STARTTLS (25 587)", - "secureOptionTLS": "TLS (465)", - "Ignore TLS Error": "Ohita TLS-virhe", - "From Email": "Sähköpostista", - "emailCustomSubject": "Mukautettu aihe", - "To Email": "Sähköpostiin", - "smtpCC": "CC", - "smtpBCC": "BCC", - "Discord Webhook URL": "Discord Webhookin URL-osoite", - "Bot Display Name": "Botin näyttönimi", - "Prefix Custom Message": "Mukautetun viestin etuliite", - "Hello @everyone is...": "Hei {'@'}kaikki ovat…", - "wayToGetTeamsURL": "Voit oppia luomaan webhookin URL-osoitteen {0}.", - "wayToGetZohoCliqURL": "Voit oppia luomaan webhookin URL-osoitteen {0}.", - "wayToCheckSignalURL": "Voit tarkistaa tämän URL-osoitteen nähdäksesi, kuinka se määritetään:", - "Number": "Numero", - "Recipients": "Vastaanottajat", - "Access Token": "Käyttöoikeustunnus", - "Channel access token": "Kanavan käyttöoikeustunnus", - "Basic Settings": "Perusasetukset", - "User ID": "Käyttäjätunnus", - "Messaging API": "Viestintä-API", - "Line Developers Console": "Line Kehittäjän Konsoli", - "lineDevConsoleTo": "Line Kehittäjän Konsoli - {0}", - "dataRetentionTimeError": "Säilytysajan on oltava 0 tai suurempi", - "infiniteRetention": "Aseta arvoksi 0, jos haluat ikuisen säilytyksen.", - "confirmDeleteTagMsg": "Haluatko varmasti poistaa tämän tunnisteen? Tähän tunnisteeseen liittyviä näyttöjä ei poisteta.", - "enableGRPCTls": "Salli lähettää gRPC-pyyntö TLS-yhteydellä", - "grpcMethodDescription": "Menetelmän nimi muunnetaan camelCase-muotoon, kuten sayHello, check jne.", - "acceptedStatusCodesDescription": "Valitse tilakoodit, jotka katsotaan onnistuneeksi vastaukseksi.", - "deleteMonitorMsg": "Haluatko varmasti poistaa tämän seuraimen?", - "deleteMaintenanceMsg": "Haluatko varmasti poistaa tämän huollon?", - "deleteNotificationMsg": "Haluatko varmasti poistaa tämän ilmoituksen kaikista seuraimista?", - "dnsPortDescription": "DNS-palvelimen portti. Oletusarvo on 53. Voit vaihtaa porttia milloin tahansa.", - "rrtypeDescription": "Valitse valvottava RR-tyyppi", - "pauseMonitorMsg": "Haluatko varmasti keskeyttää?", - "clearHeartbeatsMsg": "Haluatko varmasti poistaa kaikki tämän seuraimen sydämensykkeet?", - "confirmImportMsg": "Haluatko varmasti tuoda varmuuskopion? Varmista, että olet valinnut oikean tuontivaihtoehdon.", - "twoFAVerifyLabel": "Anna tunnuksesi vahvistaaksesi 2FA:", - "tokenValidSettingsMsg": "Tunnus on voimassa! Voit nyt tallentaa 2FA-asetukset.", - "confirmEnableTwoFAMsg": "Haluatko varmasti ottaa 2FA:n käyttöön?", - "confirmDisableTwoFAMsg": "Haluatko varmasti poistaa 2FA:n käytöstä?", - "recurringIntervalMessage": "Juokse kerran päivässä | Suorita kerran {0} päivässä", - "affectedMonitorsDescription": "Valitse seuraimet, joihin nykyinen huolto vaikuttaa", - "affectedStatusPages": "Näytä tämä huoltoviesti valituilla tilasivuilla", - "atLeastOneMonitor": "Valitse vähintään yksi seurain, johon vaikuttaa", - "notificationDescription": "Ilmoitukset on määritettävä seuraimelle toimiakseen.", - "keywordDescription": "Hae avainsanaa tavallisessa HTML- tai JSON-vastauksessa. Haussa kirjainkoolla on merkitystä.", - "backupDescription": "Voit varmuuskopioida kaikki näytöt ja ilmoitukset JSON-tiedostoon.", - "backupDescription2": "Huomaa: historia- ja tapahtumatiedot eivät sisälly.", - "octopushLogin": "\"Kirjaudu\" ohjauspaneelin HTTP API -tunnistetiedoista", - "promosmsLogin": "API-kirjautumisnimi", - "promosmsPassword": "API-salasana", - "pushoversounds pushover": "Pushover (oletus)", - "pushoversounds bike": "Pyörä", - "pushoversounds bugle": "Merkkitorvi", - "pushoversounds cashregister": "Kassakone", - "pushoversounds classical": "Klassinen", - "pushoversounds cosmic": "Kosminen", - "pushoversounds falling": "Putoaminen", - "pushoversounds gamelan": "Gamelan-soitin", - "pushoversounds incoming": "Saapuva", - "pushoversounds intermission": "Väliaika", - "pushoversounds magic": "Taika", - "pushoversounds mechanical": "Mekaaninen", - "pushoversounds pianobar": "Pianobaari", - "pushoversounds spacealarm": "Avaruushälytys", - "pushoversounds tugboat": "Hinaaja", - "pushoversounds alien": "Avaruusoliohälytys (pitkä)", - "pushoversounds climb": "Kiipeily (pitkä)", - "pushoversounds persistent": "Pysyvä (pitkä)", - "pushoversounds updown": "Ylös Alas (pitkä)", - "pushoversounds vibrate": "Vain värinä", - "pushoversounds none": "Ei mitään (hiljainen)", - "pushyAPIKey": "Salainen API-avain", - "pushyToken": "Laitteen tunnus", - "discord": "Discord", - "teams": "Microsoft Teams", - "signal": "Signal", - "gotify": "Gotify", - "slack": "Slack", - "rocket.chat": "Rocket.Chat", - "pushy": "Päällekäyvä", - "PushByTechulus": "Techuluksen työntö", - "octopush": "Mustekala", - "promosms": "PromoSMS", - "clicksendsms": "ClickSend SMS", - "lunasea": "LunaSea", - "GoogleChat": "Google Chat (vain Google Workspace)", - "Kook": "Kook", - "wayToGetKookGuildID": "Ota 'Kehittäjätila' käyttöön Kook-asetuksissa ja napsauta kiltaa hiiren kakkospainikkeella saadaksesi sen tunnuksen", - "Guild ID": "Killan tunnus", - "line": "Line Messenger", - "mattermost": "Mattermost", - "User Key": "Käyttäjäavain", - "Device": "Laite", - "Message Title": "Viestin otsikko", - "More info on:": "Lisätietoja: {0}", - "pushoverDesc2": "Jos haluat lähettää ilmoituksia eri laitteille, täytä Laite-kenttä.", - "SMS Type": "SMS-tyyppi", - "octopushTypePremium": "Premium (nopea - suositellaan hälytykseen)", - "octopushTypeLowCost": "Alhaiset kustannukset (hidas - joskus operaattori estää)", - "checkPrice": "Tarkista kohteen {0} hinnat:", - "apiCredentials": "API-tunnistetiedot", - "Check octopush prices": "Tarkista Octopush-hinnat {0}.", - "octopushPhoneNumber": "Puhelinnumero (Kansainvälinen muoto, esim.: +33612345678) ", - "octopushSMSSender": "Tekstiviestin lähettäjän nimi: 3-11 aakkosnumeerista merkkiä ja välilyönti (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea laitetunnus", - "Apprise URL": "Apprise URL-osoite", - "Example:": "Esimerkki: {0}", - "Read more:": "Lue lisää: {0}", - "Status:": "Tila: {0}", - "Strategy": "strategia", - "Free Mobile User Identifier": "Ilmainen mobiilikäyttäjätunnus", - "Enable TLS": "Ota TLS käyttöön", - "Proto Service Name": "Proto-palvelun nimi", - "Proto Method": "Proto-menetelmä", - "Proto Content": "Proto-sisältö", - "Economy": "Talous", - "Lowcost": "Halpa", - "high": "korkea", - "SendKey": "Lähetysavain (SendKey)", - "SMSManager API Docs": "SMSManager API Dokumentointi ", - "Gateway Type": "Yhdyskäytävän tyyppi", - "SMSManager": "SMSManager", - "Base URL": "Perus-URL", - "goAlertIntegrationKeyInfo": "Hanki yleinen API-integrointiavain palvelulle tässä muodossa \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" yleensä kopioidun URL-osoitteen tunnusparametrin arvona.", - "goAlert": "GoAlert", - "AccessKeyId": "Pääsyavaimen tunnus (AccessKey ID)", - "SecretAccessKey": "Pääsyavaimen salaisuus (AccessKey Secret)", - "PhoneNumbers": "Puhelinnumerot (PhoneNumbers)", - "TemplateCode": "Mallikoodi (TemplateCode)", - "SignName": "Allekirjoitusnimi (SignName)", - "Sms template must contain parameters: ": "Tekstiviestimallin tulee sisältää parametrit: ", - "Bark Group": "Bark ryhmä", - "Bark Sound": "Bark ääni", - "WebHookUrl": "Webhookin URL-osoite (WebHookUrl)", - "SecretKey": "Salainen avain (SecretKey)", - "For safety, must use secret key": "Turvallisuuden vuoksi on käytettävä salaista avainta", - "Device Token": "Laitteen tunnus", - "Platform": "Alusta", - "Bark Endpoint": "Bark päätepiste", - "Huawei": "Huawei-merkki", - "High": "Korkea", - "Topic": "Aihe", - "WeCom Bot Key": "WeCom-bottiavain", - "Setup Proxy": "Määritä välityspalvelin", - "Proxy Protocol": "Välityspalvelinprotokolla", - "Proxy Server": "Välityspalvelin", - "matrix": "Matriisi", - "promosmsTypeFlash": "SMS FLASH - Viesti näkyy automaattisesti vastaanottajan laitteessa. Rajoitettu vain puolalaisille vastaanottajille.", - "promosmsTypeSpeed": "SMS SPEED - Järjestelmän korkein prioriteetti. Erittäin nopea ja luotettava, mutta kallis (noin kaksi kertaa SMS TÄYSI hinta).", - "promosmsPhoneNumber": "Puhelinnumero (puolalaiselle vastaanottajalle voit ohittaa suuntanumerot)", - "promosmsSMSSender": "Tekstiviestin lähettäjän nimi: Esirekisteröity nimi tai jokin oletusasetuksista: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "promosmsAllowLongSMS": "Salli pitkät tekstiviestit", - "Feishu WebHookUrl": "Feishu WebHookURL-osoite", - "Internal Room Id": "Huoneen sisäinen tunnus", - "Channel Name": "Kanavan nimi", - "Uptime Kuma URL": "Uptime Kuma URL-osoite", - "Icon Emoji": "Ikoni Emoji", - "signalImportant": "TÄRKEÄÄ: Et voi sekoittaa ryhmiä ja numeroita vastaanottajissa!", - "aboutWebhooks": "Lisätietoja Webhookeista osoitteessa: {0}", - "aboutChannelName": "Kirjoita kanavan nimi {0} Kanavan nimi -kenttään, jos haluat ohittaa Webhook-kanavan. Esimerkki: #muu-kanava", - "aboutKumaURL": "Jos jätät Uptime Kuma URL -kentän tyhjäksi, se on oletuksena Project GitHub -sivu.", - "smtpDkimSettings": "DKIM-asetukset", - "smtpDkimDesc": "Katso Nodemailer DKIM {0} -sovelluksen käytöstä.", - "documentation": "dokumentointi", - "smtpDkimDomain": "Verkkotunnus", - "smtpDkimKeySelector": "Näppäinvalitsin", - "smtpDkimPrivateKey": "Yksityinen avain", - "smtpDkimHashAlgo": "Hash-algoritmi (valinnainen)", - "smtpDkimheaderFieldNames": "Allekirjoitettavat otsikkoavaimet (valinnainen)", - "smtpDkimskipFields": "Otsikkonäppäimet, joita ei allekirjoiteta (valinnainen)", - "Integration Key": "Integrointiavain", - "Integration URL": "Integroinnin URL-osoite", - "Auto resolve or acknowledged": "Automaattinen ratkaisu tai kuittaus", - "do nothing": "Älä tee mitään", - "auto acknowledged": "automaattisesti kuitattu", - "auto resolve": "automaattinen ratkaisu", - "gorush": "Gorush", - "alerta": "Alerta", - "alertaApiEndpoint": "API-päätepiste", - "alertaEnvironment": "Ympäristö", - "alertaApiKey": "API-avain", - "alertaRecoverState": "Palautustila", - "serwersms": "SerwerSMS.pl", - "serwersmsAPIUser": "API-käyttäjänimi (sis. webapi_-etuliite)", - "serwersmsAPIPassword": "API-salasana", - "serwersmsPhoneNumber": "Puhelinnumero", - "smseagle": "SMSEagle", - "smseagleTo": "Puhelinnumero(t)", - "smseagleGroup": "Puhelinmuistioryhmän nimi/nimet", - "smseagleContact": "Puhelinmuistion yhteyshenkilön nimet", - "smseagleRecipientType": "Vastaanottajan tyyppi", - "smseagleRecipient": "Vastaanottaja(t) (jos useita, ne on erotettava pilkulla)", - "smseagleToken": "API-käyttöoikeustunnus", - "smseagleUrl": "SMSEagle-laitteesi URL-osoite", - "smseagleEncoding": "Lähetä Unicodena", - "smseaglePriority": "Viestin prioriteetti (0-9, oletus = 0)", - "stackfield": "Stackfield", - "Recipient Number": "Vastaanottajan numero", - "From Name/Number": "Nimestä/numerosta", - "Leave blank to use a shared sender number.": "Jätä tyhjäksi, jos haluat käyttää jaettua lähettäjän numeroa.", - "Octopush API Version": "Octopush API -versio", - "Legacy Octopush-DM": "Vanha Octopush-DM", - "ntfy Topic": "ntfy-aihe", - "HomeAssistant": "Home Assistant", - "onebotHttpAddress": "OneBot HTTP-osoite", - "onebotGroupMessage": "Ryhmä", - "onebotPrivateMessage": "Yksityinen", - "onebotUserOrGroupId": "Ryhmä/käyttäjätunnus", - "onebotSafetyTips": "Käyttöoikeustunnus on asetettava turvallisuuden vuoksi", - "PushDeer Key": "PushDeer-avain", - "wayToGetClickSendSMSToken": "Voit saada API-käyttäjänimen ja API-avaimen osoitteesta {0}.", - "Custom Monitor Type": "Mukautettu seuraintyyppi", - "Google Analytics ID": "Google Analytics -tunnus", - "Edit Tag": "Muokkaa tunnistetta", - "Server Address": "Palvelimen osoite", - "Learn More": "Lisätietoja", - "Inactive": "Ei-aktiivinen", - "Add New below or Select...": "Lisää uusi alapuolelle tai valitse…", - "Blue": "Sininen", - "Avg. Response": "Kesk.arv. vastaus", - "All Systems Operational": "Kaikki järjestelmät toiminnassa", - "defaultNotificationName": "Minun {notification} Hälytys ({number})", - "webhookFormDataDesc": "{multipart} soveltuu PHP:lle. JSON pitää tulkita {decodeFunction} avulla", - "HeadersInvalidFormat": "Pyynnön otsikot eivät ole kelvollisessa JSON-muodossa: ", - "clearDataOlderThan": "Säilytä seuraimen historiatiedot {0} päivän ajan.", - "steamApiKeyDescription": "Steam-pelipalvelimen valvontaa varten tarvitset Steam Web API-avaimen. Voit rekisteröidä API-avaimesi täällä: ", - "light": "vaalea", - "Switch to Light Theme": "Vaihda vaaleaan teemaan", - "Powered by": "Voimanlähteenä", - "Accept characters:": "Hyväksy merkit:", - "New Status Page": "Uusi tilasivu", - "wayToGetCloudflaredURL": "(Lataa cloudflared osoitteesta {0})", - "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Nykyinen yhteys saattaa katketa, jos muodostat parhaillaan yhteyttä Cloudflare-tunnelin kautta. Haluatko varmasti lopettaa sen? Vahvista se kirjoittamalla nykyinen salasanasi.", - "RadiusCallingStationIdDescription": "Kutsu laitteen tunniste", - "Check how to config it for WebSocket": "Tarkista, kuinka se määritetään WebSocketille", - "Docker Daemon": "Docker-daemon", - "deleteDockerHostMsg": "Haluatko varmasti poistaa tämän docker-isännän kaikista seuraimista?", - "supportTelegramChatID": "Tukee suoraa chattia / ryhmää / kanavan chat-tunnusta", - "Event data:": "Tapahtuman tiedot:", - "Then choose an action, for example switch the scene to where an RGB light is red.": "Valitse sitten toiminto, esimerkiksi vaihda kohtaus sellaiseen, jossa RGB-valo on punainen.", - "backupOutdatedWarning": "Vanhentunut: Koska monia ominaisuuksia lisättiin ja tätä varmuuskopiointitoimintoa ei ole ylläpidetty, se ei voi luoda tai palauttaa täydellistä varmuuskopiota.", - "lastDay4": "Kuukauden 4. viimeinen päivä", - "IconUrl": "Kuvakkeen URL-osoite", - "Enable DNS Cache": "(Vanhentunut) Ota DNS-välimuisti käyttöön HTTP(s)-seuraimille", - "dnsCacheDescription": "Se ei ehkä toimi joissakin IPv6-ympäristöissä, poista se käytöstä, jos kohtaat ongelmia.", - "confirmUninstallPlugin": "Haluatko varmasti poistaa tämän laajennuksen?", - "wayToGetDiscordURL": "Saat tämän siirtymällä kohtaan Palvelinasetukset -> Integraatiot -> Näytä Webhookit -> Uusi Webhook", - "needSignalAPI": "Sinulla on oltava signaaliasiakas, jossa on REST API.", - "wayToGetLineChannelToken": "Avaa ensin {0}, luo palveluntarjoaja ja kanava (Messaging API), sitten saat kanavan käyttö tokenin ja käyttäjätunnuksen yllä mainituista valikon kohdista.", - "Icon URL": "Kuvakkeen URL-osoite", - "aboutIconURL": "Voit ohittaa oletusprofiilikuvan antamalla linkin kuvaan kohdassa \"kuvakeen URL\". Ei käytetä, jos kuvake emoji on asetettu.", - "aboutMattermostChannelName": "Voit ohittaa oletuskanavan, jolle Webhook lähettää viestejä, kirjoittamalla kanavan nimen Kanavan nimi -kenttään. Tämä on otettava käyttöön Mattermost Webhook -asetuksissa. Esimerkki: #muu-kanava", - "resolverserverDescription": "Cloudflare on oletuspalvelin. Voit vaihtaa ratkaisijapalvelinta milloin tahansa.", - "enableDefaultNotificationDescription": "Tämä ilmoitus on oletuksena käytössä uusissa seuraimissa. Voit silti poistaa ilmoituksen käytöstä erikseen jokaiselta seuraimelta.", - "clearEventsMsg": "Haluatko varmasti poistaa kaikki tämän seuraimen tapahtumat?", - "confirmClearStatisticsMsg": "Haluatko varmasti poistaa KAIKKI tilastot?", - "importHandleDescription": "Valitse \"Ohita olemassa oleva\", jos haluat ohittaa jokaisen samannimisen seuraimen tai ilmoituksen. \"Korvaa\" poistaa kaikki olemassa olevat seuraimet ja ilmoitukset.", - "passwordNotMatchMsg": "Toistettu salasana ei täsmää.", - "backupDescription3": "Arkaluonteiset tiedot, kuten ilmoitustunnukset, sisältyvät vientitiedostoon. Säilytä vienti turvallisesti.", - "endpoint": "päätepiste", - "octopushAPIKey": "\"API-avain\" ohjauspaneelin HTTP API -tunnistetiedoista", - "pushoversounds siren": "Sireeni", - "pushoversounds echo": "Pushover-kaiku (pitkä)", - "pushover": "Ylityöntö", - "apprise": "Apprise (tukee yli 50 ilmoituspalvelua)", - "pushbullet": "Pushbullet", - "wayToGetKookBotToken": "Luo sovellus ja hanki bot-tunnus osoitteessa {0}", - "Notification Sound": "Ilmoitusääni", - "pushoverDesc1": "Hätäprioriteetilla (2) on oletusarvoisesti 30 sekunnin aikakatkaisu uudelleenyritysten välillä, ja se vanhenee 1 tunnin kuluttua.", - "octopushLegacyHint": "Käytätkö Octopushin (2011-2020) vanhaa versiota vai uutta versiota?", - "Free Mobile API Key": "Ilmainen mobiilisovellusliittymäavain", - "You can divide numbers with": "Voit jakaa numerot", - "goAlertInfo": "GoAlert on avoimen lähdekoodin sovellus päivystykseen, automatisoituihin eskalaatioihin ja ilmoituksiin (kuten tekstiviestit tai äänipuhelut). Ota automaattisesti mukaan oikea henkilö, oikealla tavalla ja oikeaan aikaan! {0}", - "Retry": "Yritä uudelleen", - "Proxy server has authentication": "Välityspalvelimella on todennus", - "promosmsTypeEco": "SMS ECO - halpa mutta hidas ja usein ylikuormitettu. Rajoitettu vain puolalaisille vastaanottajille.", - "promosmsTypeFull": "SMS FULL - Premium-tason tekstiviestit, voit käyttää lähettäjän nimeäsi (sinun on rekisteröitävä nimi ensin). Luotettava hälytyksiä varten.", - "matrixHomeserverURL": "Kotipalvelimen URL-osoite (http(s):// ja valinnaisesti portti)", - "matrixDesc1": "Löydät sisäisen huonetunnuksen katsomalla Matrix-asiakasohjelman huoneasetusten lisäosaa. Sen pitäisi näyttää tältä: !QMdRCpUIfLwsfjxye6:home.server.", - "matrixDesc2": "On erittäin suositeltavaa, että luot uuden käyttäjän etkä käytä omaa Matrix-käyttäjätunnustasi, koska se antaa täyden pääsyn tilillesi ja kaikkiin huoneisiin, joihin liityit. Luo sen sijaan uusi käyttäjä ja kutsu se vain siihen huoneeseen, josta haluat saada ilmoituksen. Saat käyttöoikeustunnuksen suorittamalla {0}", - "wayToGetPagerDutyKey": "Saat tämän siirtymällä kohtaan Palvelu -> Palveluhakemisto -> (Valitse palvelu) -> Integraatiot -> Lisää integraatio. Täältä voit etsiä \"Events API V2\". Lisätietoja {0}", - "alertaAlertState": "Varoitustila", - "serwersmsSenderName": "Tekstiviestin lähettäjän nimi (rekisteröity asiakasportaalin kautta)", - "onebotMessageType": "OneBot-viestityyppi", - "pushViewCode": "Kuinka käyttää Push-seurainta? (Näytä Koodi)", - "settingUpDatabaseMSG": "Tietokannan asennus käynnissä. Tämä voi kestää hetken, ole kärsivällinen.", - "setupDatabaseChooseDatabase": "Mitä tietokantaa haluat käyttää?", - "setupDatabaseEmbeddedMariaDB": "Sinun ei tarvitse asettaa mitään. Tämä Docker-kuva on sisäänrakentanut ja konfiguroinut MariaDB:n sinulle automaattisesti. Uptime Kuma yhdistää tähän tietokantaan Unix-socketin kautta.", - "setupDatabaseMariaDB": "Yhdistä ulkoiseen MariaDB-tietokantaan. Sinun on asetettava tietokantayhteyden tiedot.", - "setupDatabaseSQLite": "Yksinkertainen tietokantatiedosto, suositeltu pienimuotoisiin käyttöönottoihin. Ennen versiota 2.0.0 Uptime Kuma käytti SQLitea oletustietokantana.", - "dbName": "Tietokannan nimi", - "pushOthers": "Muut", - "programmingLanguages": "Ohjelmointikielet", - "Home": "Koti", - "Cannot connect to the socket server": "Ei voi yhdistää socket-palvelimeen", - "Reconnecting...": "Yhdistetään uudelleen...", - "Invert Keyword": "Käänteinen Avainsana", - "Request Timeout": "Pyynnön aikakatkaisu", - "timeoutAfter": "Aikakatkaisu {0} sekunnin jälkeen", - "Resend Notification if Down X times consecutively": "Lähetä ilmoitus uudelleen, jos alhaalla X kertaa peräkkäin", - "Expected Value": "Odotettu arvo", - "Json Query": "JSON-kysely", - "wayToGetHeiiOnCallDetails": "Trigger ID:n ja API-avainten hankinta selitetään ohjeistuksessa {documentation}", - "documentationOf": "{0} Dokumentaatio", - "Enter the list of brokers": "Syötä lista välittäjistä", - "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Joko palvelimen osoite johon haluat yhdistää tai {localhost} jos aiot käyttää {local_mta}", - "successKeyword": "Onnistumisen avainsana", - "tailscalePingWarning": "Käyttääksesi Tailscale Ping-seurainta, sinun täytyy asentaa Uptime Kuma ilman Dockeria ja asentaa Tailscale-asiakasohjelma palvelimellesi.", - "cronExpression": "Cron-määrittely", - "Remove domain": "Poista verkkotunnus '{0}'", - "ntfyPriorityHelptextAllEvents": "Kaikki tapahtumat lähetetään korkeimmalla prioriteetilla", - "Press Enter to add broker": "Paina Enter lisätäksesi välittäjän", - "wayToGetFlashDutyKey": "Mene 'Channel -> (Select a Channel) -> Integrations -> Add a new integration' -sivulle, lisää 'Uptime Kuma' saadaksesi push-osoitteen ja kopioi 'Integration Key' osoitteesta. Lisätietoja saat vierailemalla", - "Saved.": "Tallennettu.", - "receiverInfoSevenIO": "Jos vastaanottajan numero ei ole Saksassa, sinun täytyy lisätä maakoodi numeron eteen (esim. Yhdysvaltojen maakoodille 1 käytä muotoa 117612121212 - ei muotoa 017612121212)", - "gtxMessagingFromHint": "Matkapuhelimissa vastaanottajat näkevät TPOA:n viestin lähettäjänä. Sallittu on korkeintaan 11 aakkosnumeerista merkkiä, lyhytkoodi, paikallinen pitkä koodi tai kansainväliset numerot ({e164}, {e212} or {e214})", - "monitorToastMessagesLabel": "Seuraimen ponnahdusilmoitukset", - "Browser Screenshot": "Selaimen ruutukaappaus", - "Mentioning": "Mainitaan", - "Don't mention people": "Älä mainitse ihmisiä", - "Mention group": "Mainitse {group}", - "API Keys": "API-avaimet", - "Expiry": "Vanhenee", - "Expiry date": "Vanhenemispäivä", - "Don't expire": "Ei vanhene", - "Continue": "Jatka", - "Add Another": "Lisää toinen", - "apiKey-expired": "Vanhentunut", - "apiKey-inactive": "Ei-aktiivinen", - "Expires": "Vanhenee", - "Badge Down Color": "Badgen alhaalla-väri", - "Badge Pending Color": "Badgen odottaa-väri", - "Originator type": "Lähettäjän tyyppi", - "cellsyntDestination": "Vastaanottajan puhelinnumero kansainvälisessä muodossa: etuliitteenä 00 + maakoodi, esim. 00447920110000 numerolle 07920 110 000 (enint. 17 numeroa). Enintään 25000 pilkulla erotettua vastaanottajaa yhtä HTTP-kyselyä kohti.", - "cellsyntOriginatortypeAlphanumeric": "Aakkosnumeerinen merkkijono (enint. 11 merkkiä). Vastaanottajat eivät voi vastata viestiin.", - "cellsyntOriginatortypeNumeric": "Lukuarvo (enint. 15 numeroa). Puhelinnumero kansainvälisessä formaatissa ilman 00-etuliitettä (esim. UK puhelinnumero 07920 110 000 tulisi syöttää 447920110000). Vastaanottajat eivät voi vastata viestiin.", - "callMeBotGet": "Täällä voit luoda päätepisteen {0}, {1} ja {2}. Muistathan, että palvelu saattaa rajoittavan pääsyäsi. Rajoite näyttäisi olevan: {3}", - "cellsyntOriginator": "Näkyy vastaanottajan matkapuhelimessa viestin lähettäjänä. Sallitut arvot ja toiminta riippuvat lähettäjän tyypistä.", - "Allow Long SMS": "Salli pitkä SMS", - "max 15 digits": "Enint. 15 numeroa", - "Host URL": "Isäntä-URL", - "liquidIntroduction": "Sisältömallit toteutetaan Liquid-kielellä. Katso osoitteesta {0} lisäohjeita. Käytettävissä olevat muuttujat:", - "templateMsg": "ilmoituksen viesti", - "templateHeartbeatJSON": "sydämensyke-objekti", - "templateMonitorJSON": "seurain-objekti", - "templateLimitedToUpDownNotifications": "saatavilla vain YLÖS/ALAS -ilmoituksille", - "templateLimitedToUpDownCertNotifications": "saatavilla vain YLÖS/ALAS/Varmenteen vanheneminen -ilmoituksille", - "successKeywordExplanation": "MQTT-avainsana joka tulkitaan onnistumiseksi", - "Check/Uncheck": "Valitse/Poista valinta", - "statusPageSpecialSlugDesc": "Erityinen slug {0}: tätä sivua ei näytetä kun slugia ei ole määritelty", - "Add a new expiry notification day": "Lisää uusi vanhenemismuistutuspäivä", - "Remove the expiry notification": "Poista vanhenemismuistutuspäivä", - "telegramMessageThreadID": "(Valinnainen) Viestilangan ID", - "telegramSendSilently": "Lähetä hiljaisesti", - "telegramSendSilentlyDescription": "Lähettää viestin hiljaisesti. Käyttäjät saavat ilmoituksen ilman äänimerkkiä.", - "telegramProtectContentDescription": "Jos käytössä, botin viestit Telegramissa suojataan uudelleenlähetykseltä ja tallennukselta.", - "telegramProtectContent": "Suojaa uudelleenlähetykseltä ja tallennukselta", - "telegramMessageThreadIDDescription": "Valinnainen yksilöllinen tunnus keskustelualueen viestilangalle (ketju); vain keskustelualueen superryhmille", - "sameAsServerTimezone": "Sama kuin palvelimen aikavyöhyke", - "startDateTime": "Aloitusajankohta", - "endDateTime": "Päättymisajankohta", - "enableNSCD": "Ota käyttöön NSCD (Name Service Cache Daemon) kaikkien DNS-kyselyiden välimuistitusta varten", - "chromeExecutable": "Chrome/Chromium -sovellus", - "chromeExecutableAutoDetect": "Tunnista automaattisesti", - "chromeExecutableDescription": "Docker käyttäjillä, jos Chromium ei ole vielä asennettu, saattaa kulua muutamia minuutteja asennukseen ennen testituloksen näyttämistä. Levytilaa vaaditaan 1 Gt.", - "Edit Maintenance": "Muokkaa Huoltoa", - "smtpLiquidIntroduction": "Kaksi seuraavaa kenttää ovat muokattavissa Liquid template-kielellä. Katso osoitteesta {0} lisäohjeita. Käytettävissä olevat muuttujat:", - "Clone Monitor": "Monista seurain", - "leave blank for default subject": "jätä tyhjäksi käyttääksesi oletusaihetta", - "emailCustomBody": "Mukautettu sisältörunko", - "leave blank for default body": "jätä tyhjäksi käyttääksesi oletussisältörunkoa", - "emailTemplateServiceName": "Palvelun nimi", - "emailTemplateHostnameOrURL": "Isäntänimi tai URL", - "emailTemplateStatus": "Tila", - "emailTemplateMonitorJSON": "seurain-objekti", - "emailTemplateHeartbeatJSON": "sydämensyke-objekti", - "emailTemplateMsg": "ilmoitusviesti", - "emailTemplateLimitedToUpDownNotification": "saatavilla vain YLÖS/ALAS sydämensykkeille, muulloin null", - "Your User ID": "Käyttäjätunnuksesi", - "invertKeywordDescription": "Etsi puuttuvaa avainsanaa.", - "Bark API Version": "Bark API-versio", - "Notify Channel": "Ilmoitus kanavalle", - "aboutNotifyChannel": "Ilmoitus kanavalle antaa työpöytä- tai mobiili-ilmoituksen kaikille kanavan jäsenille; riippumatta ovatko he paikalla vai poissa.", - "setup a new monitor group": "luo uusi seurainryhmä", - "openModalTo": "avaa ikkuna kohteeseen {0}", - "Server URL should not contain the nfty topic": "Palvelimen URL ei saa sisältää nfty-aihetta", - "PushDeer Server": "PushDeer -palvelin", - "pushDeerServerDescription": "Jätä tyhjäksi käyttääksesi virallista palvelinta", - "Add API Key": "Lisää API-avain", - "No API Keys": "Ei API-avaimia", - "apiKeyAddedMsg": "API-avaimesi on lisätty. Laitathan sen muistiin, sillä sitä ei näytetä uudelleen.", - "Body Encoding": "Sisällön muoto (encoding)", - "Key Added": "Avain lisätty", - "apiKey-active": "Aktiivinen", - "disableAPIKeyMsg": "Haluatko varmasti kytkeä tämän API-avaimen pois käytöstä?", - "deleteAPIKeyMsg": "Haluatko varmasti poistaa tämän API-avaimen?", - "Generate": "Luo", - "pagertreeIntegrationUrl": "Integrointi-URL", - "pagertreeUrgency": "Kiireellisyysaste", - "pagertreeSilent": "Hiljainen", - "pagertreeLow": "Alhainen", - "pagertreeMedium": "Keskitaso", - "pagertreeHigh": "Korkea", - "pagertreeCritical": "Kriittinen", - "pagertreeDoNothing": "Älä tee mitään", - "pagertreeResolve": "Ratkaise automaattisesti", - "wayToGetPagerTreeIntegrationURL": "Kun olet luonut PagerTree Uptime Kuma -integraation, kopioi endpoint-URL. Katso lisätietoja: {0}", - "lunaseaTarget": "Kohde", - "lunaseaDeviceID": "Laitetunnus", - "lunaseaUserID": "Käyttäjätunnus", - "ntfyAuthenticationMethod": "Tunnistautumismenetelmä", - "ntfyPriorityHelptextAllExceptDown": "Kaikki tapahtumat lähetetään tällä prioriteetilla, paitsi {0}-tapahtumat, joilla on prioriteetti {1}", - "twilioApiKey": "API-avain (valinnainen)", - "twilioAuthToken": "Tunnistautumis-token / API-avaimen salaisuus", - "twilioFromNumber": "Numerosta", - "Badge Prefix": "Badgen arvon etuliite", - "Badge Suffix": "Badgen arvon pääte", - "Badge Label Color": "Badgen tekstin väri", - "Badge Color": "Badgen väri", - "Badge Label Prefix": "Badgen tekstin etuliite", - "Badge Warn Color": "Badgen varoitusväri", - "Badge Maintenance Color": "Badgen huoltoväri", - "Authorization Identity": "Todennuksen Identititeetti", - "Badge Down Days": "Badgen alhaalla-päivät", - "Badge Style": "Badgen tyyli", - "Badge URL": "Badgen URL", - "monitorToastMessagesDescription": "Ponnahdusilmoitukset seuraimille katoavat annetun sekuntimäärän kuluttua. Arvo -1 kytkee ajastuksen pois. Aseta arvoksi 0 estääksesi ponnahdusilmoitukset.", - "toastErrorTimeout": "Virheilmoitusten kesto", - "Enable Kafka Producer Auto Topic Creation": "Käytä Kafka Producerin automaattista aiheen luontia", - "Kafka SASL Options": "Kafka SASL-valinnat", - "Mechanism": "Mekanismi", - "AccessKey Id": "AccessKey-tunnus", - "Secret AccessKey": "Salainen AccessKey", - "Session Token": "Istunnon token", - "noGroupMonitorMsg": "Ei saatavilla. Luo seurainryhmä ensin.", - "Close": "Sulje", - "Request Body": "Pyynnön sisältörunko", - "FlashDuty Severity": "Vakavuus", - "nostrRelays": "Nostr-releet", - "nostrSender": "Lähettäjän yksityisavain (nsec)", - "nostrRecipients": "Vastaanottajan julkiset avaimet (npub)", - "nostrRecipientsHelp": "npub-formaatissa, yksi per rivi", - "showCertificateExpiry": "Näytä varmenteen vanheneminen", - "noOrBadCertificate": "Puuttuva tai virheellinen varmenne", - "gamedigGuessPort": "Gamedig: Arvaa portti", - "gamedigGuessPortDescription": "Valve Server Query Protocol -portti voi olla eri kuin asiakasportti. Kokeile tätä jos seurain ei voi yhdistää palvelimeesi.", - "authUserInactiveOrDeleted": "Käyttäjä on ei ole aktiivinen tai on poistettu.", - "authInvalidToken": "Virheellinen token.", - "successAdded": "Lisätty onnistuneesti.", - "authIncorrectCreds": "Virheellinen käyttäjänimi tai salasana.", - "2faDisabled": "2FA poistettu käytöstä.", - "2faEnabled": "2FA käytössä.", - "2faAlreadyEnabled": "2FA on jo käytössä.", - "successDeleted": "Poistettu onnistuneesti.", - "successEdited": "Muokattu onnistuneesti.", - "successAuthChangePassword": "Salasana on päivitetty onnistuneesti.", - "successBackupRestored": "Varmuuskopio on palautettu onnistuneesti.", - "successDisabled": "Kytketty pois päältä onnistuneesti.", - "successEnabled": "Kytketty päälle onnistuneesti.", - "useRemoteBrowser": "Käytä etäselainta", - "deleteRemoteBrowserMessage": "Oletko varma että haluat poistaa tämän etäselaimen kaikilta seuraimilta?", - "wayToWriteWhapiRecipient": "Puhelinnumero kansainvälisellä etuliitteellä, mutta ilman plus-merkkiä alussa ({0}), kontaktin tunnusta ({1}) tai ryhmän tunnusta ({2}).", - "Alphanumeric (recommended)": "Aakkosnumeerinen (suositeltu)", - "wayToGetWhapiUrlAndToken": "Voit saada API URLin ja token-avaimen käymällä haluamallasi kanavalla osoitteessa {0}", - "whapiRecipient": "Puhelinnumero / Kontaktin tunnus / Ryhmän tunnus", - "API URL": "API-URL", - "gtxMessagingApiKeyHint": "Löydät API-avaimesi täältä: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)", - "From Phone Number / Transmission Path Originating Address (TPOA)": "Lähettäjän puhelinnumero / Transmission Path Originating Address (TPOA)", - "To Phone Number": "Vastaanottajan puhelinnumero", - "cellsyntSplitLongMessages": "Jaa pitkät viestit korkeintaan kuuteen osaan. 153 x 6 = 918 merkkiä.", - "max 11 alphanumeric characters": "Enint. 11 aakkosnumeerista merkkiä", - "GrafanaOncallUrl": "Grafana Oncall-URL", - "emailCustomisableContent": "Mukautettava sisältö", - "Pick a SASL Mechanism...": "Valitse SASL-mekanismi…", - "Group": "Ryhmä", - "Monitor Group": "Seurainryhmä", - "What is a Remote Browser?": "Mikä on etäselain?", - "Badge Warn Days": "Badgen varoitus-päivät", - "Remote Browsers": "Etäselaimet", - "self-hosted container": "Itse ylläpidetty kontti", - "remoteBrowserToggle": "Oletuksena Chromium ajetaan Uptime Kuma -kontin sisällä. Voit käyttää etäselainta kytkemällä tämän valinnan.", - "Remote Browser": "Etäselain", - "Add a Remote Browser": "Lisää etäselain", - "Remote Browser not found!": "Etäselainta ei löytynyt!", - "remoteBrowsersDescription": "Etäselaimet ovat vaihtoehto paikalliselle Chromiumille. Käytä palvelua kuten browserless.io tai yhdistä oma etäselaimesi", - "Reset Token": "Nollaa token", - "notificationRegional": "Alueellinen", - "twilioToNumber": "Numeroon", - "Monitor Setting": "{0}'s seurainasetukset", - "Badge Duration (in hours)": "Badgen kesto (tunneissa)", - "Badge Label": "Badgen teksti", - "Show Clickable Link Description": "Jos valittu, jokainen jolla on pääsy tälle tilasivulle saavat pääsyn seuraimen URL-osoitteeseen.", - "Show Clickable Link": "Näytä klikattava linkki", - "Open Badge Generator": "Avaa Badge-generaattori", - "Badge Generator": "{0} Badge-generaattori", - "Badge Type": "Badgen tyyppi", - "Badge Preview": "Badgen esikatselu", - "Badge Label Suffix": "Badgen tekstin pääte", - "Badge Up Color": "Badgen ylhäällä-väri", - "tagNotFound": "Tunnistetta ei löydy.", - "foundChromiumVersion": "Löydettiin Chromium/Chrome. Versio: {0}", - "noDockerHostMsg": "Ei saatavilla. Asenna Docker-isäntä ensin.", - "Badge value (For Testing only.)": "Badgen arvo (Vain testausta varten.)", - "toastSuccessTimeout": "Onnistumisilmoitusten kesto", - "wayToGetSevenIOApiKey": "Vieraile hallintasivustolla app.seven.io > developer > api key ja paina vihreää 'add' -painiketta", - "senderSevenIO": "Lähettävä numero tai nimi", - "receiverSevenIO": "Vastaanottajan numero", - "apiKeySevenIO": "SevenIO API-avain", - "Telephone number": "Puhelinnumero", - "gtxMessagingToHint": "Kansainvälisessä muodossa, etuliitteenä \"+\" ({e164}, {e212} or {e214})", - "Originator": "Lähettäjä", - "Destination": "Vastaanottaja", - "locally configured mail transfer agent": "Paikallisesti asetettu postiagentti (MTA)", - "Search monitored sites": "Etsi valvotuista sivustoista", - "DockerHostRequired": "Aseta Docker-isäntä tälle seuraimelle.", - "Clone": "Monista", - "cloneOf": "Monistettu {0}", - "pushoverMessageTtl": "Viestin TTL (Sekuntia)", - "Add a domain": "Lisää verkkotunnus", - "ntfyUsernameAndPassword": "Käyttäjänimi ja salasana", - "twilioAccountSID": "Tilin SID", - "successPaused": "Laitettu tauolle onnistuneesti.", - "successResumed": "Jatkettu onnistuneesti.", - "Channel access token (Long-lived)": "Kanavan pääsyavain (pitkäaikainen)", - "Kafka Brokers": "Kafla-välittäjät", - "Kafka Producer Message": "Kafka Producer -viesti", - "Enable Kafka SSL": "Käytä Kafka SSL:ää", - "cronSchedule": "Aikataulu: ", - "Kafka Topic Name": "Kafka aihenimi", - "nostrRelaysHelp": "Yksi rele-URL riviä kohden", - "styleElapsedTime": "Kulunut aika sydämensykepalkin alla", - "styleElapsedTimeShowNoLine": "Näytä (Ei viivaa)", - "styleElapsedTimeShowWithLine": "Näytä (Viivan kanssa)", - "filterActive": "Aktiivinen", - "filterActivePaused": "Tauolla", - "statusPageRefreshIn": "Päivitetään: {0}", - "webhookBodyPresetOption": "Esivalinta - {0}", - "Select": "Valitse", - "selectedMonitorCount": "Valittu: {0}", - "Add New Tag": "Lisää uusi tunniste", - "webhookBodyCustomOption": "Mukautettu sisältörunko", - "invalidCronExpression": "Virheellinen Cron-määrittely: {0}", - "wayToGetDiscordThreadId": "Langan / keskustelualueketjun ID haetaan samalla tavalla kuin kanavan ID. Lue lisää ID:n hakemisesta {0}", - "mongodbCommandDescription": "Aja MongoDB-komento tietokannassa. Lisätietoja saatavilla olevista komennoista saat osoitteesta {documentation}", - "Bitrix24 Webhook URL": "Bitrix24 Webhookin URL", - "wayToGetBitrix24Webhook": "Voit luoda webhookin seuraamalla ohjeita osoitteessa {0}", - "bitrix24SupportUserID": "Syötä Bitrix24 käyttäjä-ID:si. Löydät käyttäjä-ID:n linkistä vierailemalla käyttäjän profiilissa.", - "Refresh Interval": "Päivityksen aikaväli", - "Refresh Interval Description": "Tilasivu latautuu uudelleen joka {0} sekunti", - "forumPostName": "Keskustelualueketjun nimi", - "ignoreTLSErrorGeneral": "Ohita yhteyden TLS/SSL-virheet", - "Select message type": "Valitse viestityyppi", - "Send to channel": "Lähetä kanavalle", - "postToExistingThread": "Lähetä jo olemassaolevaan lankaan / keskustelualueen ketjuun", - "Create new forum post": "Luo uusi ketju keskustelualueelle", - "threadForumPostID": "Langan / Keskustelualueketjun ID", - "e.g. {discordThreadID}": "esim. {discordThreadID}", - "whatHappensAtForumPost": "Luo uusi keskustelualueketju. Tämä EI jatka edellistä ketjua. Lähettääksesi olemassaolevaan ketjuun käytä toimintoa \"{option}\"", - "Command": "Komento", - "smspartnerApiurl": "Löydät API-avaimesi kojelaudalta osoitteesta {0}", - "smspartnerPhoneNumber": "Puhelinnumero(t)", - "smspartnerPhoneNumberHelptext": "Numeron täytyy olla kansainvälisessä muodossa {0},{1}. Jos numeroita on useita, ne täytyy erottaa merkillä {2}", - "smspartnerSenderName": "SMS-lähettäjän nimi", - "smspartnerSenderNameInfo": "Täytyy sisältää 3..=11 tavallista merkkiä", - "threemaRecipient": "Vastaanottaja", - "threemaRecipientType": "Vastaanottajan tyyppi", - "threemaRecipientTypeIdentityFormat": "8 merkkiä", - "threemaRecipientTypePhone": "Puhelinnumero", - "threemaRecipientTypePhoneFormat": "E.164, ilman etuliitettä +", - "threemaRecipientTypeEmail": "Sähköpostiosoite", - "threemaSenderIdentity": "Yhdyskäytävän tunnus (Gateway-ID)", - "threemaApiAuthenticationSecret": "Gateway-ID salaisuus", - "wayToGetThreemaGateway": "Voit rekisteröityä Threema Gateway:n käyttäjäksi {0}.", - "threemaRecipientTypeIdentity": "Threema-tunnus (Threema-ID)", - "threemaSenderIdentityFormat": "8 merkkiä, alkaa useimmiten merkillä *", - "threemaBasicModeInfo": "Huomio: Tämä integraatio käyttää Threema Gateway:tä perustilassa (palvelinpohjainen salaus). Lisätietoja löytyy {0}.", - "apiKeysDisabledMsg": "API-avaimet eivät ole käytössä koska tunnistautuminen ei ole käytössä.", - "snmpCommunityStringHelptext": "Tämä merkkijono toimii salasanana ja pääsyoikeutena SNMP-laitteisiin. Aseta se samaksi kuin SNMP-laitteen asetuksissa.", - "privateOnesenderDesc": "Varmista, että puhelinnumero on kelvollinen. Lähettääksesi viestin yksityiseen numeroon esim. 628123456789", - "Authorization Header": "Tunnistautumisen otsikko (Authorization Header)", - "Optional: Space separated list of scopes": "Valinnainen: Luettelo näkyvyysalueista (scope) välilyönnillä erotettuna", - "jsonQueryDescription": "Valitse sisältö palvelimen JSON-vastauksesta käyttämällä JSON-kyselyä tai käytä alkuperäistä sisältöä merkillä \"$\", jos palvelimen vastaus ei ole JSON-muodossa. Tämän jälkeen sisältöä verrataan odotettuun arvoon (merkkijonona). Katso kyselykielen ohjeita osoitteesta {0}. Leikkikenttä löytyy osoitteesta {1}.", - "now": "nyt", - "time ago": "{0} sitten", - "-year": "-vuosi", - "Json Query Expression": "Json-kyselylauseke", - "and": "ja", - "cacheBusterParam": "Lisää parametri {0}", - "cacheBusterParamDescription": "Satunnaisesti luotu parametri välimuistien ohittamiseksi.", - "Community String": "Yhteisömerkkijono", - "OID (Object Identifier)": "OID (Objektin tunniste)", - "snmpOIDHelptext": "Syötä OID anturille tai tilalle jota haluat valvoa. Käytä verkonvalvontatyökaluja kuten MIB-selaimia tai SNMP-ohjelmistoja jos olet epävarma OID:n valinnasta.", - "Condition": "Ehto", - "SNMP Version": "SNMP-versio", - "Please enter a valid OID.": "Ole hyvä ja syötä kelvollinen OID.", - "Host Onesender": "OneSender-isäntä", - "Token Onesender": "OneSender-tokeni", - "Recipient Type": "Vastaanottajan tyyppi", - "Private Number": "Yksityinen numero", - "Group ID": "Ryhmän tunnus (Group ID)", - "groupOnesenderDesc": "Varmista, että ryhmän tunnus (Group ID) on kelvollinen. Lähettääksesi viestin ryhmälle, esim. 628123456789-342345", - "wayToGetOnesenderUrlandToken": "Saat URL-osoitteen ja tokenin vierailemalla OneSenderin verkkosivulla. Lisätietoja osoitteesta {0}", - "Add Remote Browser": "Lisää etäselain", - "New Group": "Uusi ryhmä", - "Group Name": "Ryhmän nimi", - "OAuth2: Client Credentials": "OAuth2: Asiakkaan tunnukset", - "Authentication Method": "Tunnistustapa", - "Form Data Body": "Lomakkeen tietosisältö (Form data body)", - "OAuth Token URL": "OAuth tokenin URL", - "Client ID": "Asiakkaan ID", - "Client Secret": "Asiakkaan salaisuus", - "OAuth Scope": "OAuth-näkyvyysalue (scope)", - "Go back to home page.": "Palaa etusivulle.", - "No tags found.": "Tunnisteita ei löytynyt.", - "Lost connection to the socket server.": "Menetettiin yhteys Socket-palvelimeen.", - "Cannot connect to the socket server.": "Socket-palvelimeen ei voi yhdistää.", - "SIGNL4": "SIGNL4", - "SIGNL4 Webhook URL": "SIGNL4 Webhookin URL", - "signl4Docs": "Löydät lisätietoja SIGNL4-asetuksista ja webhook URLin hankinnasta osoitteesta {0}.", - "Conditions": "Ehdot", - "conditionAdd": "Lisää ehto", - "conditionDelete": "Poista ehto", - "conditionAddGroup": "Lisää ryhmä", - "conditionDeleteGroup": "Poista ryhmä", - "conditionValuePlaceholder": "Arvo", - "contains": "sisältää", - "not contains": "ei sisällä", - "not equals": "ei yhtä suuri kuin", - "equals": "yhtä suuri kuin", - "starts with": "alkaa", - "not starts with": "ei ala", - "ends with": "päättyy", - "not ends with": "ei pääty", - "less than": "vähemmän kuin", - "greater than": "enemmän kuin", - "less than or equal to": "vähemmän tai yhtä paljon kuin", - "greater than or equal to": "enemmän tai yhtä paljon kuin", - "record": "tietue" -} +{ + "Dashboard": "Kojetaulu", + "Help": "Apua", + "New Update": "Uusi päivitys", + "Language": "Kieli", + "Appearance": "Ulkonäkö", + "Theme": "Teema", + "General": "Yleinen", + "Game": "Peli", + "Version": "Versio", + "List": "Lista", + "Add": "Lisää", + "Add New Monitor": "Lisää uusi seurain", + "Quick Stats": "Pikakatsaus", + "Up": "Ylös", + "Down": "Alas", + "Pending": "Odottaa", + "statusMaintenance": "Huolto", + "Maintenance": "Huolto", + "Unknown": "Tuntematon", + "General Monitor Type": "Yleinen seuraintyyppi", + "Passive Monitor Type": "Passiivinen seuraintyyppi", + "markdownSupported": "Markdown-syntaksi tuettu", + "pauseDashboardHome": "Tauko", + "Pause": "Tauko", + "Name": "Nimi", + "Status": "Tila", + "DateTime": "Päivämäärä", + "Message": "Viesti", + "No important events": "Ei tärkeitä tapahtumia", + "Resume": "Jatka", + "Edit": "Muokkaa", + "Delete": "Poista", + "Current": "Nykyinen", + "Uptime": "Päälläoloaika", + "Monitor": "Seurain | Seuraimet", + "day": "Päivä | Päivää", + "-day": "-päivä(ä)", + "hour": "tunti", + "-hour": "-tunti(a)", + "Response": "Vastaus", + "Ping": "Ping", + "Monitor Type": "Seuraintyyppi", + "Keyword": "Avainsana", + "URL": "URL", + "Hostname": "Isäntänimi", + "Heartbeat Interval": "Sydämensykkeiden aikaväli", + "Retries": "Uusintayrityksiä", + "Resend Notification if Down X times consequently": "Uudelleen lähetä ilmoitus jos ei vastausta X määrä peräkkäin", + "Advanced": "Edistynyt", + "checkEverySecond": "Tarkista joka {0} sekunti", + "retryCheckEverySecond": "Yritä uudelleen joka {0} sekunti", + "resendEveryXTimes": "Uudelleen lähetä joka {0} kerta", + "ignoreTLSError": "Älä huomioi TLS/SSL virheitä HTTPS nettisivuilla", + "upsideDownModeDescription": "Käännä tila vastakkaiseksi. Jos palvelu on saavutettavissa, merkitse se SAMMUNEEKSI.", + "maxRedirectDescription": "Enimmäismäärä seurattavia uudelleenohjauksia. Aseta arvoksi 0 estääksesi uudelleenohjaukset.", + "Upside Down Mode": "Käänteinen tila", + "Max. Redirects": "Uudelleenohjauksia enintään", + "Accepted Status Codes": "Sallitut tilakoodit", + "Push URL": "Push-ilmoitus URL", + "Save": "Tallenna", + "Notifications": "Ilmoitukset", + "Setup Notification": "Määritä ilmoitukset", + "Light": "Vaalea", + "Dark": "Tumma", + "Auto": "Automaattinen", + "Theme - Heartbeat Bar": "Teema - Sydämensykepalkki", + "Normal": "Normaali", + "Bottom": "Alhaalla", + "None": "Ei mitään", + "Timezone": "Aikavyöhyke", + "Search Engine Visibility": "Hakukonenäkyvyys", + "Allow indexing": "Salli indeksointi", + "Change Password": "Vaihda salasana", + "Current Password": "Nykyinen salasana", + "New Password": "Uusi salasana", + "Repeat New Password": "Toista uusi salasana", + "Update Password": "Päivitä salasana", + "Disable Auth": "Poista todennus käytöstä", + "Enable Auth": "Ota todennus käyttöön", + "Logout": "Kirjaudu ulos", + "Leave": "Poistu", + "I understand, please disable": "Ymmärrän, poista käytöstä", + "Confirm": "Hyväksy", + "Yes": "Kyllä", + "No": "Ei", + "Username": "Käyttäjänimi", + "Password": "Salasana", + "Login": "Kirjaudu", + "add one": "lisää", + "Notification Type": "Ilmoitustyyppi", + "Email": "Sähköposti", + "Test": "Testi", + "Certificate Info": "Varmenteen tiedot", + "Settings": "Asetukset", + "Check Update On GitHub": "Tarkista päivitys GitHub:ssa", + "Specific Monitor Type": "Tietty seuraintyyppi", + "Cert Exp.": "Varmenne vanh.", + "Friendly Name": "Ystävällinen nimi", + "Port": "Portti", + "Heartbeat Retry Interval": "Sydämensykkeen uudelleenyritysten aikaväli", + "resendDisabled": "Uudelleenlähetys poissa käytöstä", + "retriesDescription": "Enimmäismäärä uudelleenyrityksiä ennen kuin palvelu merkitään sammuneeksi ja ilmoitus lähetetään", + "Discourage search engines from indexing site": "Estä hakukoneita indeksoimasta sivua", + "Please use this option carefully!": "Käytä tätä vaihtoehtoa varoen!", + "Remember me": "Muista minut", + "languageName": "Suomi", + "Primary Base URL": "Ensisijainen perus-URL", + "pushOptionalParams": "Valinnaiset parametrit: {0}", + "Not available, please setup.": "Ei saatavilla, määritä ensin.", + "needPushEvery": "Sinun tulee kutsua tätä URLia joka {0} sekunti.", + "disableauth.message1": "Oletko varma että haluat {disableAuth}?", + "disable authentication": "poistaa todennuksen käytöstä", + "disableauth.message2": "Se on suunniteltu tilanteisiin {intendThirdPartyAuth} Uptime Kuma:n edessä, kuten Cloudflare Access, Authelia tai jotain muuta todennus mekanismia.", + "where you intend to implement third-party authentication": "jossa aiot käyttää kolmannen osapuolen todennnusta", + "No Monitors, please": "Ei seuraimia, ole hyvä", + "Resolver Server": "Nimipalvelin", + "Resource Record Type": "Tietueen tyyppi (RR)", + "Last Result": "Viimeisin tulos", + "Create your admin account": "Luo ylläpitäjän käyttäjätili", + "Repeat Password": "Toista salasana", + "Import Backup": "Tuo varmuuskopio", + "Export Backup": "Vie varmuuskopio", + "Export": "Vie", + "Import": "Tuo", + "respTime": "Vast. aika (ms)", + "notAvailableShort": "Ei käytössä", + "Default enabled": "Oletuksena käytössä", + "Apply on all existing monitors": "Aseta jokaiselle olemassa olevalle seuraimelle", + "Create": "Luo", + "Clear Data": "Tyhjennä tiedot", + "Events": "Tapahtumat", + "Heartbeats": "Sydämensyke", + "Auto Get": "Automaattinen haku", + "Schedule maintenance": "Aikatauluta huolto", + "Affected Monitors": "Vaikutetut seuraimet", + "Pick Affected Monitors...": "Poimi vaikutetut seuraimet…", + "Start of maintenance": "Huollon aloitus", + "All Status Pages": "Kaikki tilasivut", + "Select status pages...": "Valitse tilasivu…", + "alertNoFile": "Valitse tuotava tiedosto.", + "alertWrongFileType": "Valitse JSON-tiedosto.", + "Clear all statistics": "Tyhjennä kaikki tilastot", + "Skip existing": "Ohita olemassa oleva", + "Overwrite": "Päällekirjoita", + "Options": "Vaihtoehdot", + "Keep both": "Pidä molemmat", + "Verify Token": "Vahvista tunnus", + "Setup 2FA": "Määritä 2FA", + "Enable 2FA": "Ota 2FA käyttöön", + "Disable 2FA": "Poista 2FA käytöstä", + "2FA Settings": "2FA-asetukset", + "Two Factor Authentication": "Kaksivaiheinen tunnistautuminen (2FA)", + "Active": "Aktiivinen", + "Token": "Token", + "Show URI": "Näytä URI", + "Tags": "Tunnisteet", + "Tag with this name already exist.": "Tunniste tällä nimellä on jo olemassa.", + "Tag with this value already exist.": "Tunniste tällä arvolla on jo olemassa.", + "color": "Väri", + "value (optional)": "arvo (valinnainen)", + "Gray": "Harmaa", + "Red": "Punainen", + "Orange": "Oranssi", + "Green": "Vihreä", + "Indigo": "Indigo", + "Purple": "Purppura", + "Pink": "Vaaleanpunainen", + "Custom": "Mukautettu", + "Search...": "Etsi…", + "Avg. Ping": "Kesk.arv. viive", + "Entry Page": "Sisääntulosivu", + "statusPageNothing": "Täällä ei ole mitään. Lisää ryhmä tai seurain.", + "No Services": "Ei palveluita", + "Partially Degraded Service": "Osittain heikentynyt palvelu", + "Degraded Service": "Heikentynyt palvelu", + "Add Group": "Lisää ryhmä", + "Add a monitor": "Lisää seurain", + "Edit Status Page": "Muokkaa tilasivua", + "Go to Dashboard": "Mene kojelaudalle", + "Status Page": "Tilasivu", + "Status Pages": "Tilasivut", + "here": "täällä", + "Required": "Vaadittu", + "webhook": "Webhookki", + "Post URL": "Lähetys-URL", + "Content Type": "Sisältötyyppi", + "webhookJsonDesc": "{0} soveltuu mille tahansa modernille HTTP-palvelimille kuten Express.js", + "webhookAdditionalHeadersTitle": "Lisäotsakkeet", + "webhookAdditionalHeadersDesc": "Asettaa lisäotsakkeet, jotka lähetetään webhookille. Jokainen lisäotsake tulisi määritellä JSON-avaimena ja -arvona.", + "Webhook URL": "Webhookin URL", + "Application Token": "Sovellus-token", + "Server URL": "Palvelimen URL", + "Priority": "Prioriteetti", + "emojiCheatSheet": "Emoji lunttilappu: {0}", + "Read more": "Lue lisää", + "appriseInstalled": "Apprise on asennettu.", + "appriseNotInstalled": "Apprisea ei ole asennettu. {0}", + "Method": "Menetelmä", + "Body": "Runko", + "Headers": "Otsikot", + "PushUrl": "Push-ilmoitus URL", + "BodyInvalidFormat": "Pyynnön sisältörunko ei ole kelvollisessa JSON-muodossa: ", + "Monitor History": "Seurannan historia", + "PasswordsDoNotMatch": "Salasanat eivät täsmää.", + "records": "tallenteet", + "One record": "Yksi tallenne", + "Current User": "Nykyinen käyttäjä", + "topic": "Aihe", + "topicExplanation": "MQTT seurattava aihe", + "successMessage": "Onnistumis viesti", + "successMessageExplanation": "MQTT-viesti, jota pidetään onnistuneena", + "recent": "Viimeaikainen", + "Done": "Tehty", + "Info": "Tiedot", + "Security": "Turvallisuus", + "Steam API Key": "Steam API-avain", + "Shrink Database": "Pienennä tietokanta", + "Pick a RR-Type...": "Valitse tietuetyyppi (RR)…", + "Pick Accepted Status Codes...": "Valitse hyväksytyt tilakoodit…", + "Default": "Oletus", + "HTTP Options": "HTTP-valinnat", + "Create Incident": "Luo tapaus", + "Title": "Otsikko", + "Content": "Sisältö", + "Style": "Tyyli", + "info": "tiedote", + "warning": "varoitus", + "danger": "vaara", + "error": "virhe", + "critical": "kriittinen", + "primary": "ensisijainen", + "dark": "tumma", + "Post": "Lähetä", + "Please input title and content": "Syötä otsikko ja sisältö", + "Created": "Luotu", + "Last Updated": "Viimeksi päivitetty", + "Unpin": "Irroita", + "Switch to Dark Theme": "Vaihda tummaan teemaan", + "Show Tags": "Näytä tunnisteet", + "Hide Tags": "Piilota tunnisteet", + "Description": "Kuvaus", + "No monitors available.": "Ei seuraimia saatavilla.", + "Add one": "Lisää yksi", + "No Monitors": "Ei seuraimia", + "Untitled Group": "Nimetön ryhmä", + "Services": "Palvelut", + "Discard": "Peruuta", + "Cancel": "Peruuttaa", + "Customize": "Mukauta", + "Custom Footer": "Mukautettu alatunniste", + "Custom CSS": "Mukautettu CSS", + "deleteStatusPageMsg": "Haluatko varmasti poistaa tämän tilasivun?", + "Proxies": "Välityspalvelimet", + "default": "Oletus", + "enabled": "Käytössä", + "setAsDefault": "Aseta oletukseksi", + "deleteProxyMsg": "Haluatko varmasti poistaa tämän välityspalvelimen kaikista seuraimista?", + "proxyDescription": "Välityspalvelimet on määritettävä seuraimelle toimiakseen.", + "enableProxyDescription": "Tämä välityspalvelin ei vaikuta valvontapyyntöihin ennen kuin se on aktivoitu. Voit hallita välityspalvelimen väliaikaista poistamista käytöstä kaikista seuraimista aktivointitilan perusteella.", + "setAsDefaultProxyDescription": "Tämä välityspalvelin on oletuksena käytössä uusissa seuraimissa. Voit silti poistaa välityspalvelimen käytöstä erikseen jokaisesta seuraimesta.", + "Certificate Chain": "Varmenneketju", + "Valid": "Voimassa oleva", + "Invalid": "Pätemätön", + "User": "Käyttäjä", + "Installed": "Asennettu", + "Not installed": "Ei asennettu", + "Running": "Käynnissä", + "Not running": "Ei käynnissä", + "Remove Token": "Poista token", + "Start": "Käynnistä", + "Stop": "Pysäytä", + "Add New Status Page": "Lisää uusi tilasivu", + "Slug": "Slug", + "startOrEndWithOnly": "Aloita tai lopeta vain {0}", + "No consecutive dashes": "Ei peräkkäisiä viivoja", + "Next": "Seuraava", + "No Proxy": "Ei välityspalvelinta", + "Authentication": "Todennus", + "HTTP Basic Auth": "HTTP-perustodennus", + "Page Not Found": "Sivua ei löydetty", + "Reverse Proxy": "Käänteinen välityspalvelin", + "Backup": "Varmuuskopio", + "About": "Tietoja", + "cloudflareWebsite": "Cloudflare verkkosivusto", + "Message:": "Viesti:", + "Don't know how to get the token? Please read the guide:": "Etkö tiedä kuinka saada tunnus? Ole hyvä ja lue opas:", + "HTTP Headers": "HTTP-otsikot", + "Trust Proxy": "Luota välityspalvelimeen", + "Other Software": "Muut ohjelmistot", + "For example: nginx, Apache and Traefik.": "Esimerkiksi: nginx, Apache ja Traefik.", + "Please read": "Ole hyvä ja lue", + "Subject:": "Aihe:", + "Valid To:": "Voimassa:", + "Days Remaining:": "Päiviä jäljellä:", + "Issuer:": "Myöntäjä:", + "Fingerprint:": "Sormenjälki:", + "No status pages": "Ei tilasivuja", + "Domain Name Expiry Notification": "Verkkotunnuksen vanhenemisilmoitus", + "Proxy": "Välityspalvelin", + "Date Created": "Luomispäivämäärä", + "Footer Text": "Alatunnisteen teksti", + "Show Powered By": "Näytä \"Voimanlähteenä\"", + "Domain Names": "Verkkotunnukset", + "signedInDisp": "Kirjautunut sisään käyttäjänä {0}", + "signedInDispDisabled": "Todennus poistettu käytöstä.", + "RadiusSecretDescription": "Asiakkaan ja palvelimen välinen yhteinen salaisuus", + "RadiusCalledStationIdDescription": "Kutsutun laitteen tunniste", + "RadiusCallingStationId": "Kutsuaseman tunnus", + "Certificate Expiry Notification": "Varmenteen vanhenemisilmoitus", + "API Username": "API-käyttäjänimi", + "API Key": "API-avain", + "Show update if available": "Näytä päivitys, jos saatavilla", + "Also check beta release": "Tarkista myös beta-versio", + "Using a Reverse Proxy?": "Käytätkö käänteistä välityspalvelinta?", + "The slug is already taken. Please choose another slug.": "Slug on jo otettu. Ole hyvä ja valitse toinen slug.", + "RadiusSecret": "Radius-salaisuus", + "RadiusCalledStationId": "Kutsuttu aseman tunnus", + "Steam Game Server": "Steam-pelipalvelin", + "Most likely causes:": "Todennäköisimmät syyt:", + "The resource is no longer available.": "Resurssi ei ole enää saatavilla.", + "There might be a typing error in the address.": "Osoitteessa saattaa olla kirjoitusvirhe.", + "What you can try:": "Mitä voit kokeilla:", + "Retype the address.": "Kirjoita osoite uudelleen.", + "Go back to the previous page.": "Palaa edelliselle sivulle.", + "Coming Soon": "Tulossa pian", + "Connection String": "Yhteysmerkkijono", + "Query": "Tiedustelu (Query)", + "settingsCertificateExpiry": "TLS-varmenteen vanheneminen", + "certificationExpiryDescription": "HTTPS-seuraimet käynnistävät ilmoituksen, kun TLS-varmenne vanhenee:", + "Setup Docker Host": "Määritä Docker-isäntä", + "Connection Type": "Yhteystyyppi", + "tcp": "TCP / HTTP", + "Docker Container": "Docker-kontti", + "Container Name / ID": "Säilön nimi/tunnus", + "Docker Host": "Docker-isäntä", + "Docker Hosts": "Docker-isännät", + "Domain": "Verkkotunnus", + "Workstation": "Työasema", + "socket": "Socket", + "Packet Size": "Paketin koko", + "telegram": "Telegram", + "ZohoCliq": "ZohoCliq", + "Bot Token": "Botin token", + "wayToGetTelegramToken": "Voit saada tunnuksen osoitteesta {0}.", + "Chat ID": "Chat-tunnus", + "wayToGetTelegramChatID": "Saat chat-tunnuksesi lähettämällä viestin botille ja siirtymällä tähän URL-osoitteeseen nähdäksesi chat_id:", + "YOUR BOT TOKEN HERE": "BOTIN TOKEN TÄHÄN", + "chatIDNotFound": "Chat ID:tä ei löydy; lähetä ensin viesti tälle botille", + "disableCloudflaredNoAuthMsg": "Olet No Auth -tilassa, salasanaa ei tarvita.", + "trustProxyDescription": "Luota \"X-Forwarded-*\"-otsikoihin. Jos haluat saada oikean asiakas-IP:n ja Uptime Kumasi on välityspalvelimen, kuten Nginx tai Apache, takana, sinun tulee ottaa tämä käyttöön.", + "wayToGetLineNotifyToken": "Voit saada käyttötunnuksen osoitteesta {0}", + "Examples": "Esimerkkejä", + "Home Assistant URL": "Home Assistantin URL-osoite", + "Long-Lived Access Token": "Pitkäikäinen pääsytunnus", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Pitkäikäinen pääsytunnus voidaan luoda napsauttamalla profiilisi nimeä (vasemmalla alareunassa) ja vierittämällä alas ja napsauttamalla sitten Luo tunnus. ", + "Notification Service": "Ilmoituspalvelu", + "default: notify all devices": "oletus: ilmoita kaikille laitteille", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Luettelo ilmoituspalveluista löytyy Home Assistantin kohdasta \"Kehittäjätyökalut > Palvelut\". Hae hakusanalla \"ilmoitus\" löytääksesi laitteesi/puhelimesi nimen.", + "Automations can optionally be triggered in Home Assistant:": "Automaatiot voidaan vaihtoehtoisesti laukaista Home Assistantissa:", + "Trigger type:": "Triggerin tyyppi:", + "Event type:": "Tapahtumatyyppi:", + "Frontend Version": "Käyttöliittymän versio", + "Frontend Version do not match backend version!": "Käyttöliittymän versio ei vastaa taustaversiota!", + "backupRecommend": "Varmuuskopioi asema tai tietokansio (./data/) suoraan sen sijaan.", + "Optional": "Valinnainen", + "squadcast": "Squadcast", + "or": "tai", + "recurringInterval": "Aikaväli", + "Recurring": "Toistuva", + "strategyManual": "Aktiivinen/ei-aktiivinen manuaalisesti", + "warningTimezone": "Se käyttää palvelimen aikavyöhykettä", + "weekdayShortMon": "Ma", + "weekdayShortTue": "Ti", + "weekdayShortWed": "Ke", + "weekdayShortThu": "To", + "weekdayShortFri": "Pe", + "weekdayShortSat": "La", + "weekdayShortSun": "Su", + "dayOfWeek": "Viikonpäivä", + "dayOfMonth": "Kuukauden päivä", + "lastDay": "Viimeinen päivä", + "lastDay1": "Kuukauden viimeinen päivä", + "lastDay2": "Kuukauden toiseksi viimeinen päivä", + "lastDay3": "Kuukauden 3. viimeinen päivä", + "No Maintenance": "Ei huoltoa", + "pauseMaintenanceMsg": "Haluatko varmasti keskeyttää?", + "maintenanceStatus-under-maintenance": "Huollossa", + "maintenanceStatus-inactive": "Ei-aktiivinen", + "maintenanceStatus-scheduled": "Aikataulutettu", + "maintenanceStatus-ended": "Päättyi", + "maintenanceStatus-unknown": "Tuntematon", + "Display Timezone": "Käyttöliittymän aikavyöhyke", + "Server Timezone": "Palvelimen aikavyöhyke", + "statusPageMaintenanceEndDate": "Loppu", + "Enable": "Ota käyttöön", + "Disable": "Poista käytöstä", + "Single Maintenance Window": "Yksi huoltoikkuna", + "Maintenance Time Window of a Day": "Päivän huoltoaikaikkuna", + "Effective Date Range": "Voimassa oleva ajanjakso (valinnainen)", + "Schedule Maintenance": "Ajoita huolto", + "Date and Time": "Päivämäärä ja aika", + "DateTime Range": "Päivämäärä- ja aika-alue", + "loadingError": "Tietoja ei voi noutaa, yritä myöhemmin uudelleen.", + "plugin": "Lisäosa | Lisäosat", + "install": "Asenna", + "installing": "Asennetaan", + "uninstall": "Poista asennus", + "uninstalling": "Poistetaan asennusta", + "smtp": "Sähköposti (SMTP)", + "secureOptionNone": "Ei mitään / STARTTLS (25 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Ohita TLS-virhe", + "From Email": "Sähköpostista", + "emailCustomSubject": "Mukautettu aihe", + "To Email": "Sähköpostiin", + "smtpCC": "CC", + "smtpBCC": "BCC", + "Discord Webhook URL": "Discord Webhookin URL-osoite", + "Bot Display Name": "Botin näyttönimi", + "Prefix Custom Message": "Mukautetun viestin etuliite", + "Hello @everyone is...": "Hei {'@'}kaikki ovat…", + "wayToGetTeamsURL": "Voit oppia luomaan webhookin URL-osoitteen {0}.", + "wayToGetZohoCliqURL": "Voit oppia luomaan webhookin URL-osoitteen {0}.", + "wayToCheckSignalURL": "Voit tarkistaa tämän URL-osoitteen nähdäksesi, kuinka se määritetään:", + "Number": "Numero", + "Recipients": "Vastaanottajat", + "Access Token": "Käyttöoikeustunnus", + "Channel access token": "Kanavan käyttöoikeustunnus", + "Basic Settings": "Perusasetukset", + "User ID": "Käyttäjätunnus", + "Messaging API": "Viestintä-API", + "Line Developers Console": "Line Kehittäjän Konsoli", + "lineDevConsoleTo": "Line Kehittäjän Konsoli - {0}", + "dataRetentionTimeError": "Säilytysajan on oltava 0 tai suurempi", + "infiniteRetention": "Aseta arvoksi 0, jos haluat ikuisen säilytyksen.", + "confirmDeleteTagMsg": "Haluatko varmasti poistaa tämän tunnisteen? Tähän tunnisteeseen liittyviä näyttöjä ei poisteta.", + "enableGRPCTls": "Salli lähettää gRPC-pyyntö TLS-yhteydellä", + "grpcMethodDescription": "Menetelmän nimi muunnetaan camelCase-muotoon, kuten sayHello, check jne.", + "acceptedStatusCodesDescription": "Valitse tilakoodit, jotka katsotaan onnistuneeksi vastaukseksi.", + "deleteMonitorMsg": "Haluatko varmasti poistaa tämän seuraimen?", + "deleteMaintenanceMsg": "Haluatko varmasti poistaa tämän huollon?", + "deleteNotificationMsg": "Haluatko varmasti poistaa tämän ilmoituksen kaikista seuraimista?", + "dnsPortDescription": "DNS-palvelimen portti. Oletusarvo on 53. Voit vaihtaa porttia milloin tahansa.", + "rrtypeDescription": "Valitse valvottava RR-tyyppi", + "pauseMonitorMsg": "Haluatko varmasti keskeyttää?", + "clearHeartbeatsMsg": "Haluatko varmasti poistaa kaikki tämän seuraimen sydämensykkeet?", + "confirmImportMsg": "Haluatko varmasti tuoda varmuuskopion? Varmista, että olet valinnut oikean tuontivaihtoehdon.", + "twoFAVerifyLabel": "Anna tunnuksesi vahvistaaksesi 2FA:", + "tokenValidSettingsMsg": "Tunnus on voimassa! Voit nyt tallentaa 2FA-asetukset.", + "confirmEnableTwoFAMsg": "Haluatko varmasti ottaa 2FA:n käyttöön?", + "confirmDisableTwoFAMsg": "Haluatko varmasti poistaa 2FA:n käytöstä?", + "recurringIntervalMessage": "Juokse kerran päivässä | Suorita kerran {0} päivässä", + "affectedMonitorsDescription": "Valitse seuraimet, joihin nykyinen huolto vaikuttaa", + "affectedStatusPages": "Näytä tämä huoltoviesti valituilla tilasivuilla", + "atLeastOneMonitor": "Valitse vähintään yksi seurain, johon vaikuttaa", + "notificationDescription": "Ilmoitukset on määritettävä seuraimelle toimiakseen.", + "keywordDescription": "Hae avainsanaa tavallisessa HTML- tai JSON-vastauksessa. Haussa kirjainkoolla on merkitystä.", + "backupDescription": "Voit varmuuskopioida kaikki näytöt ja ilmoitukset JSON-tiedostoon.", + "backupDescription2": "Huomaa: historia- ja tapahtumatiedot eivät sisälly.", + "octopushLogin": "\"Kirjaudu\" ohjauspaneelin HTTP API -tunnistetiedoista", + "promosmsLogin": "API-kirjautumisnimi", + "promosmsPassword": "API-salasana", + "pushoversounds pushover": "Pushover (oletus)", + "pushoversounds bike": "Pyörä", + "pushoversounds bugle": "Merkkitorvi", + "pushoversounds cashregister": "Kassakone", + "pushoversounds classical": "Klassinen", + "pushoversounds cosmic": "Kosminen", + "pushoversounds falling": "Putoaminen", + "pushoversounds gamelan": "Gamelan-soitin", + "pushoversounds incoming": "Saapuva", + "pushoversounds intermission": "Väliaika", + "pushoversounds magic": "Taika", + "pushoversounds mechanical": "Mekaaninen", + "pushoversounds pianobar": "Pianobaari", + "pushoversounds spacealarm": "Avaruushälytys", + "pushoversounds tugboat": "Hinaaja", + "pushoversounds alien": "Avaruusoliohälytys (pitkä)", + "pushoversounds climb": "Kiipeily (pitkä)", + "pushoversounds persistent": "Pysyvä (pitkä)", + "pushoversounds updown": "Ylös Alas (pitkä)", + "pushoversounds vibrate": "Vain värinä", + "pushoversounds none": "Ei mitään (hiljainen)", + "pushyAPIKey": "Salainen API-avain", + "pushyToken": "Laitteen tunnus", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.Chat", + "pushy": "Päällekäyvä", + "PushByTechulus": "Techuluksen työntö", + "octopush": "Mustekala", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "GoogleChat": "Google Chat (vain Google Workspace)", + "Kook": "Kook", + "wayToGetKookGuildID": "Ota 'Kehittäjätila' käyttöön Kook-asetuksissa ja napsauta kiltaa hiiren kakkospainikkeella saadaksesi sen tunnuksen", + "Guild ID": "Killan tunnus", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "Käyttäjäavain", + "Device": "Laite", + "Message Title": "Viestin otsikko", + "More info on:": "Lisätietoja: {0}", + "pushoverDesc2": "Jos haluat lähettää ilmoituksia eri laitteille, täytä Laite-kenttä.", + "SMS Type": "SMS-tyyppi", + "octopushTypePremium": "Premium (nopea - suositellaan hälytykseen)", + "octopushTypeLowCost": "Alhaiset kustannukset (hidas - joskus operaattori estää)", + "checkPrice": "Tarkista kohteen {0} hinnat:", + "apiCredentials": "API-tunnistetiedot", + "Check octopush prices": "Tarkista Octopush-hinnat {0}.", + "octopushPhoneNumber": "Puhelinnumero (Kansainvälinen muoto, esim.: +33612345678) ", + "octopushSMSSender": "Tekstiviestin lähettäjän nimi: 3-11 aakkosnumeerista merkkiä ja välilyönti (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea laitetunnus", + "Apprise URL": "Apprise URL-osoite", + "Example:": "Esimerkki: {0}", + "Read more:": "Lue lisää: {0}", + "Status:": "Tila: {0}", + "Strategy": "strategia", + "Free Mobile User Identifier": "Ilmainen mobiilikäyttäjätunnus", + "Enable TLS": "Ota TLS käyttöön", + "Proto Service Name": "Proto-palvelun nimi", + "Proto Method": "Proto-menetelmä", + "Proto Content": "Proto-sisältö", + "Economy": "Talous", + "Lowcost": "Halpa", + "high": "korkea", + "SendKey": "Lähetysavain (SendKey)", + "SMSManager API Docs": "SMSManager API Dokumentointi ", + "Gateway Type": "Yhdyskäytävän tyyppi", + "SMSManager": "SMSManager", + "Base URL": "Perus-URL", + "goAlertIntegrationKeyInfo": "Hanki yleinen API-integrointiavain palvelulle tässä muodossa \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" yleensä kopioidun URL-osoitteen tunnusparametrin arvona.", + "goAlert": "GoAlert", + "AccessKeyId": "Pääsyavaimen tunnus (AccessKey ID)", + "SecretAccessKey": "Pääsyavaimen salaisuus (AccessKey Secret)", + "PhoneNumbers": "Puhelinnumerot (PhoneNumbers)", + "TemplateCode": "Mallikoodi (TemplateCode)", + "SignName": "Allekirjoitusnimi (SignName)", + "Sms template must contain parameters: ": "Tekstiviestimallin tulee sisältää parametrit: ", + "Bark Group": "Bark ryhmä", + "Bark Sound": "Bark ääni", + "WebHookUrl": "Webhookin URL-osoite (WebHookUrl)", + "SecretKey": "Salainen avain (SecretKey)", + "For safety, must use secret key": "Turvallisuuden vuoksi on käytettävä salaista avainta", + "Device Token": "Laitteen tunnus", + "Platform": "Alusta", + "Bark Endpoint": "Bark päätepiste", + "Huawei": "Huawei-merkki", + "High": "Korkea", + "Topic": "Aihe", + "WeCom Bot Key": "WeCom-bottiavain", + "Setup Proxy": "Määritä välityspalvelin", + "Proxy Protocol": "Välityspalvelinprotokolla", + "Proxy Server": "Välityspalvelin", + "matrix": "Matriisi", + "promosmsTypeFlash": "SMS FLASH - Viesti näkyy automaattisesti vastaanottajan laitteessa. Rajoitettu vain puolalaisille vastaanottajille.", + "promosmsTypeSpeed": "SMS SPEED - Järjestelmän korkein prioriteetti. Erittäin nopea ja luotettava, mutta kallis (noin kaksi kertaa SMS TÄYSI hinta).", + "promosmsPhoneNumber": "Puhelinnumero (puolalaiselle vastaanottajalle voit ohittaa suuntanumerot)", + "promosmsSMSSender": "Tekstiviestin lähettäjän nimi: Esirekisteröity nimi tai jokin oletusasetuksista: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "promosmsAllowLongSMS": "Salli pitkät tekstiviestit", + "Feishu WebHookUrl": "Feishu WebHookURL-osoite", + "Internal Room Id": "Huoneen sisäinen tunnus", + "Channel Name": "Kanavan nimi", + "Uptime Kuma URL": "Uptime Kuma URL-osoite", + "Icon Emoji": "Ikoni Emoji", + "signalImportant": "TÄRKEÄÄ: Et voi sekoittaa ryhmiä ja numeroita vastaanottajissa!", + "aboutWebhooks": "Lisätietoja Webhookeista osoitteessa: {0}", + "aboutChannelName": "Kirjoita kanavan nimi {0} Kanavan nimi -kenttään, jos haluat ohittaa Webhook-kanavan. Esimerkki: #muu-kanava", + "aboutKumaURL": "Jos jätät Uptime Kuma URL -kentän tyhjäksi, se on oletuksena Project GitHub -sivu.", + "smtpDkimSettings": "DKIM-asetukset", + "smtpDkimDesc": "Katso Nodemailer DKIM {0} -sovelluksen käytöstä.", + "documentation": "dokumentointi", + "smtpDkimDomain": "Verkkotunnus", + "smtpDkimKeySelector": "Näppäinvalitsin", + "smtpDkimPrivateKey": "Yksityinen avain", + "smtpDkimHashAlgo": "Hash-algoritmi (valinnainen)", + "smtpDkimheaderFieldNames": "Allekirjoitettavat otsikkoavaimet (valinnainen)", + "smtpDkimskipFields": "Otsikkonäppäimet, joita ei allekirjoiteta (valinnainen)", + "Integration Key": "Integrointiavain", + "Integration URL": "Integroinnin URL-osoite", + "Auto resolve or acknowledged": "Automaattinen ratkaisu tai kuittaus", + "do nothing": "Älä tee mitään", + "auto acknowledged": "automaattisesti kuitattu", + "auto resolve": "automaattinen ratkaisu", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API-päätepiste", + "alertaEnvironment": "Ympäristö", + "alertaApiKey": "API-avain", + "alertaRecoverState": "Palautustila", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API-käyttäjänimi (sis. webapi_-etuliite)", + "serwersmsAPIPassword": "API-salasana", + "serwersmsPhoneNumber": "Puhelinnumero", + "smseagle": "SMSEagle", + "smseagleTo": "Puhelinnumero(t)", + "smseagleGroup": "Puhelinmuistioryhmän nimi/nimet", + "smseagleContact": "Puhelinmuistion yhteyshenkilön nimet", + "smseagleRecipientType": "Vastaanottajan tyyppi", + "smseagleRecipient": "Vastaanottaja(t) (jos useita, ne on erotettava pilkulla)", + "smseagleToken": "API-käyttöoikeustunnus", + "smseagleUrl": "SMSEagle-laitteesi URL-osoite", + "smseagleEncoding": "Lähetä Unicodena", + "smseaglePriority": "Viestin prioriteetti (0-9, oletus = 0)", + "stackfield": "Stackfield", + "Recipient Number": "Vastaanottajan numero", + "From Name/Number": "Nimestä/numerosta", + "Leave blank to use a shared sender number.": "Jätä tyhjäksi, jos haluat käyttää jaettua lähettäjän numeroa.", + "Octopush API Version": "Octopush API -versio", + "Legacy Octopush-DM": "Vanha Octopush-DM", + "ntfy Topic": "ntfy-aihe", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "OneBot HTTP-osoite", + "onebotGroupMessage": "Ryhmä", + "onebotPrivateMessage": "Yksityinen", + "onebotUserOrGroupId": "Ryhmä/käyttäjätunnus", + "onebotSafetyTips": "Käyttöoikeustunnus on asetettava turvallisuuden vuoksi", + "PushDeer Key": "PushDeer-avain", + "wayToGetClickSendSMSToken": "Voit saada API-käyttäjänimen ja API-avaimen osoitteesta {0}.", + "Custom Monitor Type": "Mukautettu seuraintyyppi", + "Google Analytics ID": "Google Analytics -tunnus", + "Edit Tag": "Muokkaa tunnistetta", + "Server Address": "Palvelimen osoite", + "Learn More": "Lisätietoja", + "Inactive": "Ei-aktiivinen", + "Add New below or Select...": "Lisää uusi alapuolelle tai valitse…", + "Blue": "Sininen", + "Avg. Response": "Kesk.arv. vastaus", + "All Systems Operational": "Kaikki järjestelmät toiminnassa", + "defaultNotificationName": "Minun {notification} Hälytys ({number})", + "webhookFormDataDesc": "{multipart} soveltuu PHP:lle. JSON pitää tulkita {decodeFunction} avulla", + "HeadersInvalidFormat": "Pyynnön otsikot eivät ole kelvollisessa JSON-muodossa: ", + "clearDataOlderThan": "Säilytä seuraimen historiatiedot {0} päivän ajan.", + "steamApiKeyDescription": "Steam-pelipalvelimen valvontaa varten tarvitset Steam Web API-avaimen. Voit rekisteröidä API-avaimesi täällä: ", + "light": "vaalea", + "Switch to Light Theme": "Vaihda vaaleaan teemaan", + "Powered by": "Voimanlähteenä", + "Accept characters:": "Hyväksy merkit:", + "New Status Page": "Uusi tilasivu", + "wayToGetCloudflaredURL": "(Lataa cloudflared osoitteesta {0})", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Nykyinen yhteys saattaa katketa, jos muodostat parhaillaan yhteyttä Cloudflare-tunnelin kautta. Haluatko varmasti lopettaa sen? Vahvista se kirjoittamalla nykyinen salasanasi.", + "RadiusCallingStationIdDescription": "Kutsu laitteen tunniste", + "Check how to config it for WebSocket": "Tarkista, kuinka se määritetään WebSocketille", + "Docker Daemon": "Docker-daemon", + "deleteDockerHostMsg": "Haluatko varmasti poistaa tämän docker-isännän kaikista seuraimista?", + "supportTelegramChatID": "Tukee suoraa chattia / ryhmää / kanavan chat-tunnusta", + "Event data:": "Tapahtuman tiedot:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Valitse sitten toiminto, esimerkiksi vaihda kohtaus sellaiseen, jossa RGB-valo on punainen.", + "backupOutdatedWarning": "Vanhentunut: Koska monia ominaisuuksia lisättiin ja tätä varmuuskopiointitoimintoa ei ole ylläpidetty, se ei voi luoda tai palauttaa täydellistä varmuuskopiota.", + "lastDay4": "Kuukauden 4. viimeinen päivä", + "IconUrl": "Kuvakkeen URL-osoite", + "Enable DNS Cache": "(Vanhentunut) Ota DNS-välimuisti käyttöön HTTP(s)-seuraimille", + "dnsCacheDescription": "Se ei ehkä toimi joissakin IPv6-ympäristöissä, poista se käytöstä, jos kohtaat ongelmia.", + "confirmUninstallPlugin": "Haluatko varmasti poistaa tämän laajennuksen?", + "wayToGetDiscordURL": "Saat tämän siirtymällä kohtaan Palvelinasetukset -> Integraatiot -> Näytä Webhookit -> Uusi Webhook", + "needSignalAPI": "Sinulla on oltava signaaliasiakas, jossa on REST API.", + "wayToGetLineChannelToken": "Avaa ensin {0}, luo palveluntarjoaja ja kanava (Messaging API), sitten saat kanavan käyttö tokenin ja käyttäjätunnuksen yllä mainituista valikon kohdista.", + "Icon URL": "Kuvakkeen URL-osoite", + "aboutIconURL": "Voit ohittaa oletusprofiilikuvan antamalla linkin kuvaan kohdassa \"kuvakeen URL\". Ei käytetä, jos kuvake emoji on asetettu.", + "aboutMattermostChannelName": "Voit ohittaa oletuskanavan, jolle Webhook lähettää viestejä, kirjoittamalla kanavan nimen Kanavan nimi -kenttään. Tämä on otettava käyttöön Mattermost Webhook -asetuksissa. Esimerkki: #muu-kanava", + "resolverserverDescription": "Cloudflare on oletuspalvelin. Voit vaihtaa ratkaisijapalvelinta milloin tahansa.", + "enableDefaultNotificationDescription": "Tämä ilmoitus on oletuksena käytössä uusissa seuraimissa. Voit silti poistaa ilmoituksen käytöstä erikseen jokaiselta seuraimelta.", + "clearEventsMsg": "Haluatko varmasti poistaa kaikki tämän seuraimen tapahtumat?", + "confirmClearStatisticsMsg": "Haluatko varmasti poistaa KAIKKI tilastot?", + "importHandleDescription": "Valitse \"Ohita olemassa oleva\", jos haluat ohittaa jokaisen samannimisen seuraimen tai ilmoituksen. \"Korvaa\" poistaa kaikki olemassa olevat seuraimet ja ilmoitukset.", + "passwordNotMatchMsg": "Toistettu salasana ei täsmää.", + "backupDescription3": "Arkaluonteiset tiedot, kuten ilmoitustunnukset, sisältyvät vientitiedostoon. Säilytä vienti turvallisesti.", + "endpoint": "päätepiste", + "octopushAPIKey": "\"API-avain\" ohjauspaneelin HTTP API -tunnistetiedoista", + "pushoversounds siren": "Sireeni", + "pushoversounds echo": "Pushover-kaiku (pitkä)", + "pushover": "Ylityöntö", + "apprise": "Apprise (tukee yli 50 ilmoituspalvelua)", + "pushbullet": "Pushbullet", + "wayToGetKookBotToken": "Luo sovellus ja hanki bot-tunnus osoitteessa {0}", + "Notification Sound": "Ilmoitusääni", + "pushoverDesc1": "Hätäprioriteetilla (2) on oletusarvoisesti 30 sekunnin aikakatkaisu uudelleenyritysten välillä, ja se vanhenee 1 tunnin kuluttua.", + "octopushLegacyHint": "Käytätkö Octopushin (2011-2020) vanhaa versiota vai uutta versiota?", + "Free Mobile API Key": "Ilmainen mobiilisovellusliittymäavain", + "You can divide numbers with": "Voit jakaa numerot", + "goAlertInfo": "GoAlert on avoimen lähdekoodin sovellus päivystykseen, automatisoituihin eskalaatioihin ja ilmoituksiin (kuten tekstiviestit tai äänipuhelut). Ota automaattisesti mukaan oikea henkilö, oikealla tavalla ja oikeaan aikaan! {0}", + "Retry": "Yritä uudelleen", + "Proxy server has authentication": "Välityspalvelimella on todennus", + "promosmsTypeEco": "SMS ECO - halpa mutta hidas ja usein ylikuormitettu. Rajoitettu vain puolalaisille vastaanottajille.", + "promosmsTypeFull": "SMS FULL - Premium-tason tekstiviestit, voit käyttää lähettäjän nimeäsi (sinun on rekisteröitävä nimi ensin). Luotettava hälytyksiä varten.", + "matrixHomeserverURL": "Kotipalvelimen URL-osoite (http(s):// ja valinnaisesti portti)", + "matrixDesc1": "Löydät sisäisen huonetunnuksen katsomalla Matrix-asiakasohjelman huoneasetusten lisäosaa. Sen pitäisi näyttää tältä: !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "On erittäin suositeltavaa, että luot uuden käyttäjän etkä käytä omaa Matrix-käyttäjätunnustasi, koska se antaa täyden pääsyn tilillesi ja kaikkiin huoneisiin, joihin liityit. Luo sen sijaan uusi käyttäjä ja kutsu se vain siihen huoneeseen, josta haluat saada ilmoituksen. Saat käyttöoikeustunnuksen suorittamalla {0}", + "wayToGetPagerDutyKey": "Saat tämän siirtymällä kohtaan Palvelu -> Palveluhakemisto -> (Valitse palvelu) -> Integraatiot -> Lisää integraatio. Täältä voit etsiä \"Events API V2\". Lisätietoja {0}", + "alertaAlertState": "Varoitustila", + "serwersmsSenderName": "Tekstiviestin lähettäjän nimi (rekisteröity asiakasportaalin kautta)", + "onebotMessageType": "OneBot-viestityyppi", + "pushViewCode": "Kuinka käyttää Push-seurainta? (Näytä Koodi)", + "settingUpDatabaseMSG": "Tietokannan asennus käynnissä. Tämä voi kestää hetken, ole kärsivällinen.", + "setupDatabaseChooseDatabase": "Mitä tietokantaa haluat käyttää?", + "setupDatabaseEmbeddedMariaDB": "Sinun ei tarvitse asettaa mitään. Tämä Docker-kuva on sisäänrakentanut ja konfiguroinut MariaDB:n sinulle automaattisesti. Uptime Kuma yhdistää tähän tietokantaan Unix-socketin kautta.", + "setupDatabaseMariaDB": "Yhdistä ulkoiseen MariaDB-tietokantaan. Sinun on asetettava tietokantayhteyden tiedot.", + "setupDatabaseSQLite": "Yksinkertainen tietokantatiedosto, suositeltu pienimuotoisiin käyttöönottoihin. Ennen versiota 2.0.0 Uptime Kuma käytti SQLitea oletustietokantana.", + "dbName": "Tietokannan nimi", + "pushOthers": "Muut", + "programmingLanguages": "Ohjelmointikielet", + "Home": "Koti", + "Cannot connect to the socket server": "Ei voi yhdistää socket-palvelimeen", + "Reconnecting...": "Yhdistetään uudelleen...", + "Invert Keyword": "Käänteinen Avainsana", + "Request Timeout": "Pyynnön aikakatkaisu", + "timeoutAfter": "Aikakatkaisu {0} sekunnin jälkeen", + "Resend Notification if Down X times consecutively": "Lähetä ilmoitus uudelleen, jos alhaalla X kertaa peräkkäin", + "Expected Value": "Odotettu arvo", + "Json Query": "JSON-kysely", + "wayToGetHeiiOnCallDetails": "Trigger ID:n ja API-avainten hankinta selitetään ohjeistuksessa {documentation}", + "documentationOf": "{0} Dokumentaatio", + "Enter the list of brokers": "Syötä lista välittäjistä", + "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Joko palvelimen osoite johon haluat yhdistää tai {localhost} jos aiot käyttää {local_mta}", + "successKeyword": "Onnistumisen avainsana", + "tailscalePingWarning": "Käyttääksesi Tailscale Ping-seurainta, sinun täytyy asentaa Uptime Kuma ilman Dockeria ja asentaa Tailscale-asiakasohjelma palvelimellesi.", + "cronExpression": "Cron-määrittely", + "Remove domain": "Poista verkkotunnus '{0}'", + "ntfyPriorityHelptextAllEvents": "Kaikki tapahtumat lähetetään korkeimmalla prioriteetilla", + "Press Enter to add broker": "Paina Enter lisätäksesi välittäjän", + "wayToGetFlashDutyKey": "Mene 'Channel -> (Select a Channel) -> Integrations -> Add a new integration' -sivulle, lisää 'Uptime Kuma' saadaksesi push-osoitteen ja kopioi 'Integration Key' osoitteesta. Lisätietoja saat vierailemalla", + "Saved.": "Tallennettu.", + "receiverInfoSevenIO": "Jos vastaanottajan numero ei ole Saksassa, sinun täytyy lisätä maakoodi numeron eteen (esim. Yhdysvaltojen maakoodille 1 käytä muotoa 117612121212 - ei muotoa 017612121212)", + "gtxMessagingFromHint": "Matkapuhelimissa vastaanottajat näkevät TPOA:n viestin lähettäjänä. Sallittu on korkeintaan 11 aakkosnumeerista merkkiä, lyhytkoodi, paikallinen pitkä koodi tai kansainväliset numerot ({e164}, {e212} or {e214})", + "monitorToastMessagesLabel": "Seuraimen ponnahdusilmoitukset", + "Browser Screenshot": "Selaimen ruutukaappaus", + "Mentioning": "Mainitaan", + "Don't mention people": "Älä mainitse ihmisiä", + "Mention group": "Mainitse {group}", + "API Keys": "API-avaimet", + "Expiry": "Vanhenee", + "Expiry date": "Vanhenemispäivä", + "Don't expire": "Ei vanhene", + "Continue": "Jatka", + "Add Another": "Lisää toinen", + "apiKey-expired": "Vanhentunut", + "apiKey-inactive": "Ei-aktiivinen", + "Expires": "Vanhenee", + "Badge Down Color": "Badgen alhaalla-väri", + "Badge Pending Color": "Badgen odottaa-väri", + "Originator type": "Lähettäjän tyyppi", + "cellsyntDestination": "Vastaanottajan puhelinnumero kansainvälisessä muodossa: etuliitteenä 00 + maakoodi, esim. 00447920110000 numerolle 07920 110 000 (enint. 17 numeroa). Enintään 25000 pilkulla erotettua vastaanottajaa yhtä HTTP-kyselyä kohti.", + "cellsyntOriginatortypeAlphanumeric": "Aakkosnumeerinen merkkijono (enint. 11 merkkiä). Vastaanottajat eivät voi vastata viestiin.", + "cellsyntOriginatortypeNumeric": "Lukuarvo (enint. 15 numeroa). Puhelinnumero kansainvälisessä formaatissa ilman 00-etuliitettä (esim. UK puhelinnumero 07920 110 000 tulisi syöttää 447920110000). Vastaanottajat eivät voi vastata viestiin.", + "callMeBotGet": "Täällä voit luoda päätepisteen {0}, {1} ja {2}. Muistathan, että palvelu saattaa rajoittavan pääsyäsi. Rajoite näyttäisi olevan: {3}", + "cellsyntOriginator": "Näkyy vastaanottajan matkapuhelimessa viestin lähettäjänä. Sallitut arvot ja toiminta riippuvat lähettäjän tyypistä.", + "Allow Long SMS": "Salli pitkä SMS", + "max 15 digits": "Enint. 15 numeroa", + "Host URL": "Isäntä-URL", + "liquidIntroduction": "Sisältömallit toteutetaan Liquid-kielellä. Katso osoitteesta {0} lisäohjeita. Käytettävissä olevat muuttujat:", + "templateMsg": "ilmoituksen viesti", + "templateHeartbeatJSON": "sydämensyke-objekti", + "templateMonitorJSON": "seurain-objekti", + "templateLimitedToUpDownNotifications": "saatavilla vain YLÖS/ALAS -ilmoituksille", + "templateLimitedToUpDownCertNotifications": "saatavilla vain YLÖS/ALAS/Varmenteen vanheneminen -ilmoituksille", + "successKeywordExplanation": "MQTT-avainsana joka tulkitaan onnistumiseksi", + "Check/Uncheck": "Valitse/Poista valinta", + "statusPageSpecialSlugDesc": "Erityinen slug {0}: tätä sivua ei näytetä kun slugia ei ole määritelty", + "Add a new expiry notification day": "Lisää uusi vanhenemismuistutuspäivä", + "Remove the expiry notification": "Poista vanhenemismuistutuspäivä", + "telegramMessageThreadID": "(Valinnainen) Viestilangan ID", + "telegramSendSilently": "Lähetä hiljaisesti", + "telegramSendSilentlyDescription": "Lähettää viestin hiljaisesti. Käyttäjät saavat ilmoituksen ilman äänimerkkiä.", + "telegramProtectContentDescription": "Jos käytössä, botin viestit Telegramissa suojataan uudelleenlähetykseltä ja tallennukselta.", + "telegramProtectContent": "Suojaa uudelleenlähetykseltä ja tallennukselta", + "telegramMessageThreadIDDescription": "Valinnainen yksilöllinen tunnus keskustelualueen viestilangalle (ketju); vain keskustelualueen superryhmille", + "sameAsServerTimezone": "Sama kuin palvelimen aikavyöhyke", + "startDateTime": "Aloitusajankohta", + "endDateTime": "Päättymisajankohta", + "enableNSCD": "Ota käyttöön NSCD (Name Service Cache Daemon) kaikkien DNS-kyselyiden välimuistitusta varten", + "chromeExecutable": "Chrome/Chromium -sovellus", + "chromeExecutableAutoDetect": "Tunnista automaattisesti", + "chromeExecutableDescription": "Docker käyttäjillä, jos Chromium ei ole vielä asennettu, saattaa kulua muutamia minuutteja asennukseen ennen testituloksen näyttämistä. Levytilaa vaaditaan 1 Gt.", + "Edit Maintenance": "Muokkaa Huoltoa", + "smtpLiquidIntroduction": "Kaksi seuraavaa kenttää ovat muokattavissa Liquid template-kielellä. Katso osoitteesta {0} lisäohjeita. Käytettävissä olevat muuttujat:", + "Clone Monitor": "Monista seurain", + "leave blank for default subject": "jätä tyhjäksi käyttääksesi oletusaihetta", + "emailCustomBody": "Mukautettu sisältörunko", + "leave blank for default body": "jätä tyhjäksi käyttääksesi oletussisältörunkoa", + "emailTemplateServiceName": "Palvelun nimi", + "emailTemplateHostnameOrURL": "Isäntänimi tai URL", + "emailTemplateStatus": "Tila", + "emailTemplateMonitorJSON": "seurain-objekti", + "emailTemplateHeartbeatJSON": "sydämensyke-objekti", + "emailTemplateMsg": "ilmoitusviesti", + "emailTemplateLimitedToUpDownNotification": "saatavilla vain YLÖS/ALAS sydämensykkeille, muulloin null", + "Your User ID": "Käyttäjätunnuksesi", + "invertKeywordDescription": "Etsi puuttuvaa avainsanaa.", + "Bark API Version": "Bark API-versio", + "Notify Channel": "Ilmoitus kanavalle", + "aboutNotifyChannel": "Ilmoitus kanavalle antaa työpöytä- tai mobiili-ilmoituksen kaikille kanavan jäsenille; riippumatta ovatko he paikalla vai poissa.", + "setup a new monitor group": "luo uusi seurainryhmä", + "openModalTo": "avaa ikkuna kohteeseen {0}", + "Server URL should not contain the nfty topic": "Palvelimen URL ei saa sisältää nfty-aihetta", + "PushDeer Server": "PushDeer -palvelin", + "pushDeerServerDescription": "Jätä tyhjäksi käyttääksesi virallista palvelinta", + "Add API Key": "Lisää API-avain", + "No API Keys": "Ei API-avaimia", + "apiKeyAddedMsg": "API-avaimesi on lisätty. Laitathan sen muistiin, sillä sitä ei näytetä uudelleen.", + "Body Encoding": "Sisällön muoto (encoding)", + "Key Added": "Avain lisätty", + "apiKey-active": "Aktiivinen", + "disableAPIKeyMsg": "Haluatko varmasti kytkeä tämän API-avaimen pois käytöstä?", + "deleteAPIKeyMsg": "Haluatko varmasti poistaa tämän API-avaimen?", + "Generate": "Luo", + "pagertreeIntegrationUrl": "Integrointi-URL", + "pagertreeUrgency": "Kiireellisyysaste", + "pagertreeSilent": "Hiljainen", + "pagertreeLow": "Alhainen", + "pagertreeMedium": "Keskitaso", + "pagertreeHigh": "Korkea", + "pagertreeCritical": "Kriittinen", + "pagertreeDoNothing": "Älä tee mitään", + "pagertreeResolve": "Ratkaise automaattisesti", + "wayToGetPagerTreeIntegrationURL": "Kun olet luonut PagerTree Uptime Kuma -integraation, kopioi endpoint-URL. Katso lisätietoja: {0}", + "lunaseaTarget": "Kohde", + "lunaseaDeviceID": "Laitetunnus", + "lunaseaUserID": "Käyttäjätunnus", + "ntfyAuthenticationMethod": "Tunnistautumismenetelmä", + "ntfyPriorityHelptextAllExceptDown": "Kaikki tapahtumat lähetetään tällä prioriteetilla, paitsi {0}-tapahtumat, joilla on prioriteetti {1}", + "twilioApiKey": "API-avain (valinnainen)", + "twilioAuthToken": "Tunnistautumis-token / API-avaimen salaisuus", + "twilioFromNumber": "Numerosta", + "Badge Prefix": "Badgen arvon etuliite", + "Badge Suffix": "Badgen arvon pääte", + "Badge Label Color": "Badgen tekstin väri", + "Badge Color": "Badgen väri", + "Badge Label Prefix": "Badgen tekstin etuliite", + "Badge Warn Color": "Badgen varoitusväri", + "Badge Maintenance Color": "Badgen huoltoväri", + "Authorization Identity": "Todennuksen Identititeetti", + "Badge Down Days": "Badgen alhaalla-päivät", + "Badge Style": "Badgen tyyli", + "Badge URL": "Badgen URL", + "monitorToastMessagesDescription": "Ponnahdusilmoitukset seuraimille katoavat annetun sekuntimäärän kuluttua. Arvo -1 kytkee ajastuksen pois. Aseta arvoksi 0 estääksesi ponnahdusilmoitukset.", + "toastErrorTimeout": "Virheilmoitusten kesto", + "Enable Kafka Producer Auto Topic Creation": "Käytä Kafka Producerin automaattista aiheen luontia", + "Kafka SASL Options": "Kafka SASL-valinnat", + "Mechanism": "Mekanismi", + "AccessKey Id": "AccessKey-tunnus", + "Secret AccessKey": "Salainen AccessKey", + "Session Token": "Istunnon token", + "noGroupMonitorMsg": "Ei saatavilla. Luo seurainryhmä ensin.", + "Close": "Sulje", + "Request Body": "Pyynnön sisältörunko", + "FlashDuty Severity": "Vakavuus", + "nostrRelays": "Nostr-releet", + "nostrSender": "Lähettäjän yksityisavain (nsec)", + "nostrRecipients": "Vastaanottajan julkiset avaimet (npub)", + "nostrRecipientsHelp": "npub-formaatissa, yksi per rivi", + "showCertificateExpiry": "Näytä varmenteen vanheneminen", + "noOrBadCertificate": "Puuttuva tai virheellinen varmenne", + "gamedigGuessPort": "Gamedig: Arvaa portti", + "gamedigGuessPortDescription": "Valve Server Query Protocol -portti voi olla eri kuin asiakasportti. Kokeile tätä jos seurain ei voi yhdistää palvelimeesi.", + "authUserInactiveOrDeleted": "Käyttäjä on ei ole aktiivinen tai on poistettu.", + "authInvalidToken": "Virheellinen token.", + "successAdded": "Lisätty onnistuneesti.", + "authIncorrectCreds": "Virheellinen käyttäjänimi tai salasana.", + "2faDisabled": "2FA poistettu käytöstä.", + "2faEnabled": "2FA käytössä.", + "2faAlreadyEnabled": "2FA on jo käytössä.", + "successDeleted": "Poistettu onnistuneesti.", + "successEdited": "Muokattu onnistuneesti.", + "successAuthChangePassword": "Salasana on päivitetty onnistuneesti.", + "successBackupRestored": "Varmuuskopio on palautettu onnistuneesti.", + "successDisabled": "Kytketty pois päältä onnistuneesti.", + "successEnabled": "Kytketty päälle onnistuneesti.", + "useRemoteBrowser": "Käytä etäselainta", + "deleteRemoteBrowserMessage": "Oletko varma että haluat poistaa tämän etäselaimen kaikilta seuraimilta?", + "wayToWriteWhapiRecipient": "Puhelinnumero kansainvälisellä etuliitteellä, mutta ilman plus-merkkiä alussa ({0}), kontaktin tunnusta ({1}) tai ryhmän tunnusta ({2}).", + "Alphanumeric (recommended)": "Aakkosnumeerinen (suositeltu)", + "wayToGetWhapiUrlAndToken": "Voit saada API URLin ja token-avaimen käymällä haluamallasi kanavalla osoitteessa {0}", + "whapiRecipient": "Puhelinnumero / Kontaktin tunnus / Ryhmän tunnus", + "API URL": "API-URL", + "gtxMessagingApiKeyHint": "Löydät API-avaimesi täältä: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)", + "From Phone Number / Transmission Path Originating Address (TPOA)": "Lähettäjän puhelinnumero / Transmission Path Originating Address (TPOA)", + "To Phone Number": "Vastaanottajan puhelinnumero", + "cellsyntSplitLongMessages": "Jaa pitkät viestit korkeintaan kuuteen osaan. 153 x 6 = 918 merkkiä.", + "max 11 alphanumeric characters": "Enint. 11 aakkosnumeerista merkkiä", + "GrafanaOncallUrl": "Grafana Oncall-URL", + "emailCustomisableContent": "Mukautettava sisältö", + "Pick a SASL Mechanism...": "Valitse SASL-mekanismi…", + "Group": "Ryhmä", + "Monitor Group": "Seurainryhmä", + "What is a Remote Browser?": "Mikä on etäselain?", + "Badge Warn Days": "Badgen varoitus-päivät", + "Remote Browsers": "Etäselaimet", + "self-hosted container": "Itse ylläpidetty kontti", + "remoteBrowserToggle": "Oletuksena Chromium ajetaan Uptime Kuma -kontin sisällä. Voit käyttää etäselainta kytkemällä tämän valinnan.", + "Remote Browser": "Etäselain", + "Add a Remote Browser": "Lisää etäselain", + "Remote Browser not found!": "Etäselainta ei löytynyt!", + "remoteBrowsersDescription": "Etäselaimet ovat vaihtoehto paikalliselle Chromiumille. Käytä palvelua kuten browserless.io tai yhdistä oma etäselaimesi", + "Reset Token": "Nollaa token", + "notificationRegional": "Alueellinen", + "twilioToNumber": "Numeroon", + "Monitor Setting": "{0}'s seurainasetukset", + "Badge Duration (in hours)": "Badgen kesto (tunneissa)", + "Badge Label": "Badgen teksti", + "Show Clickable Link Description": "Jos valittu, jokainen jolla on pääsy tälle tilasivulle saavat pääsyn seuraimen URL-osoitteeseen.", + "Show Clickable Link": "Näytä klikattava linkki", + "Open Badge Generator": "Avaa Badge-generaattori", + "Badge Generator": "{0} Badge-generaattori", + "Badge Type": "Badgen tyyppi", + "Badge Preview": "Badgen esikatselu", + "Badge Label Suffix": "Badgen tekstin pääte", + "Badge Up Color": "Badgen ylhäällä-väri", + "tagNotFound": "Tunnistetta ei löydy.", + "foundChromiumVersion": "Löydettiin Chromium/Chrome. Versio: {0}", + "noDockerHostMsg": "Ei saatavilla. Asenna Docker-isäntä ensin.", + "Badge value (For Testing only.)": "Badgen arvo (Vain testausta varten.)", + "toastSuccessTimeout": "Onnistumisilmoitusten kesto", + "wayToGetSevenIOApiKey": "Vieraile hallintasivustolla app.seven.io > developer > api key ja paina vihreää 'add' -painiketta", + "senderSevenIO": "Lähettävä numero tai nimi", + "receiverSevenIO": "Vastaanottajan numero", + "apiKeySevenIO": "SevenIO API-avain", + "Telephone number": "Puhelinnumero", + "gtxMessagingToHint": "Kansainvälisessä muodossa, etuliitteenä \"+\" ({e164}, {e212} or {e214})", + "Originator": "Lähettäjä", + "Destination": "Vastaanottaja", + "locally configured mail transfer agent": "Paikallisesti asetettu postiagentti (MTA)", + "Search monitored sites": "Etsi valvotuista sivustoista", + "DockerHostRequired": "Aseta Docker-isäntä tälle seuraimelle.", + "Clone": "Monista", + "cloneOf": "Monistettu {0}", + "pushoverMessageTtl": "Viestin TTL (Sekuntia)", + "Add a domain": "Lisää verkkotunnus", + "ntfyUsernameAndPassword": "Käyttäjänimi ja salasana", + "twilioAccountSID": "Tilin SID", + "successPaused": "Laitettu tauolle onnistuneesti.", + "successResumed": "Jatkettu onnistuneesti.", + "Channel access token (Long-lived)": "Kanavan pääsyavain (pitkäaikainen)", + "Kafka Brokers": "Kafla-välittäjät", + "Kafka Producer Message": "Kafka Producer -viesti", + "Enable Kafka SSL": "Käytä Kafka SSL:ää", + "cronSchedule": "Aikataulu: ", + "Kafka Topic Name": "Kafka aihenimi", + "nostrRelaysHelp": "Yksi rele-URL riviä kohden", + "styleElapsedTime": "Kulunut aika sydämensykepalkin alla", + "styleElapsedTimeShowNoLine": "Näytä (Ei viivaa)", + "styleElapsedTimeShowWithLine": "Näytä (Viivan kanssa)", + "filterActive": "Aktiivinen", + "filterActivePaused": "Tauolla", + "statusPageRefreshIn": "Päivitetään: {0}", + "webhookBodyPresetOption": "Esivalinta - {0}", + "Select": "Valitse", + "selectedMonitorCount": "Valittu: {0}", + "Add New Tag": "Lisää uusi tunniste", + "webhookBodyCustomOption": "Mukautettu sisältörunko", + "invalidCronExpression": "Virheellinen Cron-määrittely: {0}", + "wayToGetDiscordThreadId": "Langan / keskustelualueketjun ID haetaan samalla tavalla kuin kanavan ID. Lue lisää ID:n hakemisesta {0}", + "mongodbCommandDescription": "Aja MongoDB-komento tietokannassa. Lisätietoja saatavilla olevista komennoista saat osoitteesta {documentation}", + "Bitrix24 Webhook URL": "Bitrix24 Webhookin URL", + "wayToGetBitrix24Webhook": "Voit luoda webhookin seuraamalla ohjeita osoitteessa {0}", + "bitrix24SupportUserID": "Syötä Bitrix24 käyttäjä-ID:si. Löydät käyttäjä-ID:n linkistä vierailemalla käyttäjän profiilissa.", + "Refresh Interval": "Päivityksen aikaväli", + "Refresh Interval Description": "Tilasivu latautuu uudelleen joka {0} sekunti", + "forumPostName": "Keskustelualueketjun nimi", + "ignoreTLSErrorGeneral": "Ohita yhteyden TLS/SSL-virheet", + "Select message type": "Valitse viestityyppi", + "Send to channel": "Lähetä kanavalle", + "postToExistingThread": "Lähetä jo olemassaolevaan lankaan / keskustelualueen ketjuun", + "Create new forum post": "Luo uusi ketju keskustelualueelle", + "threadForumPostID": "Langan / Keskustelualueketjun ID", + "e.g. {discordThreadID}": "esim. {discordThreadID}", + "whatHappensAtForumPost": "Luo uusi keskustelualueketju. Tämä EI jatka edellistä ketjua. Lähettääksesi olemassaolevaan ketjuun käytä toimintoa \"{option}\"", + "Command": "Komento", + "smspartnerApiurl": "Löydät API-avaimesi kojelaudalta osoitteesta {0}", + "smspartnerPhoneNumber": "Puhelinnumero(t)", + "smspartnerPhoneNumberHelptext": "Numeron täytyy olla kansainvälisessä muodossa {0},{1}. Jos numeroita on useita, ne täytyy erottaa merkillä {2}", + "smspartnerSenderName": "SMS-lähettäjän nimi", + "smspartnerSenderNameInfo": "Täytyy sisältää 3..=11 tavallista merkkiä", + "threemaRecipient": "Vastaanottaja", + "threemaRecipientType": "Vastaanottajan tyyppi", + "threemaRecipientTypeIdentityFormat": "8 merkkiä", + "threemaRecipientTypePhone": "Puhelinnumero", + "threemaRecipientTypePhoneFormat": "E.164, ilman etuliitettä +", + "threemaRecipientTypeEmail": "Sähköpostiosoite", + "threemaSenderIdentity": "Yhdyskäytävän tunnus (Gateway-ID)", + "threemaApiAuthenticationSecret": "Gateway-ID salaisuus", + "wayToGetThreemaGateway": "Voit rekisteröityä Threema Gateway:n käyttäjäksi {0}.", + "threemaRecipientTypeIdentity": "Threema-tunnus (Threema-ID)", + "threemaSenderIdentityFormat": "8 merkkiä, alkaa useimmiten merkillä *", + "threemaBasicModeInfo": "Huomio: Tämä integraatio käyttää Threema Gateway:tä perustilassa (palvelinpohjainen salaus). Lisätietoja löytyy {0}.", + "apiKeysDisabledMsg": "API-avaimet eivät ole käytössä koska tunnistautuminen ei ole käytössä.", + "snmpCommunityStringHelptext": "Tämä merkkijono toimii salasanana ja pääsyoikeutena SNMP-laitteisiin. Aseta se samaksi kuin SNMP-laitteen asetuksissa.", + "privateOnesenderDesc": "Varmista, että puhelinnumero on kelvollinen. Lähettääksesi viestin yksityiseen numeroon esim. 628123456789", + "Authorization Header": "Tunnistautumisen otsikko (Authorization Header)", + "Optional: Space separated list of scopes": "Valinnainen: Luettelo näkyvyysalueista (scope) välilyönnillä erotettuna", + "jsonQueryDescription": "Valitse sisältö palvelimen JSON-vastauksesta käyttämällä JSON-kyselyä tai käytä alkuperäistä sisältöä merkillä \"$\", jos palvelimen vastaus ei ole JSON-muodossa. Tämän jälkeen sisältöä verrataan odotettuun arvoon (merkkijonona). Katso kyselykielen ohjeita osoitteesta {0}. Leikkikenttä löytyy osoitteesta {1}.", + "now": "nyt", + "time ago": "{0} sitten", + "-year": "-vuosi", + "Json Query Expression": "Json-kyselylauseke", + "and": "ja", + "cacheBusterParam": "Lisää parametri {0}", + "cacheBusterParamDescription": "Satunnaisesti luotu parametri välimuistien ohittamiseksi.", + "Community String": "Yhteisömerkkijono", + "OID (Object Identifier)": "OID (Objektin tunniste)", + "snmpOIDHelptext": "Syötä OID anturille tai tilalle jota haluat valvoa. Käytä verkonvalvontatyökaluja kuten MIB-selaimia tai SNMP-ohjelmistoja jos olet epävarma OID:n valinnasta.", + "Condition": "Ehto", + "SNMP Version": "SNMP-versio", + "Please enter a valid OID.": "Ole hyvä ja syötä kelvollinen OID.", + "Host Onesender": "OneSender-isäntä", + "Token Onesender": "OneSender-tokeni", + "Recipient Type": "Vastaanottajan tyyppi", + "Private Number": "Yksityinen numero", + "Group ID": "Ryhmän tunnus (Group ID)", + "groupOnesenderDesc": "Varmista, että ryhmän tunnus (Group ID) on kelvollinen. Lähettääksesi viestin ryhmälle, esim. 628123456789-342345", + "wayToGetOnesenderUrlandToken": "Saat URL-osoitteen ja tokenin vierailemalla OneSenderin verkkosivulla. Lisätietoja osoitteesta {0}", + "Add Remote Browser": "Lisää etäselain", + "New Group": "Uusi ryhmä", + "Group Name": "Ryhmän nimi", + "OAuth2: Client Credentials": "OAuth2: Asiakkaan tunnukset", + "Authentication Method": "Tunnistustapa", + "Form Data Body": "Lomakkeen tietosisältö (Form data body)", + "OAuth Token URL": "OAuth tokenin URL", + "Client ID": "Asiakkaan ID", + "Client Secret": "Asiakkaan salaisuus", + "OAuth Scope": "OAuth-näkyvyysalue (scope)", + "Go back to home page.": "Palaa etusivulle.", + "No tags found.": "Tunnisteita ei löytynyt.", + "Lost connection to the socket server.": "Menetettiin yhteys Socket-palvelimeen.", + "Cannot connect to the socket server.": "Socket-palvelimeen ei voi yhdistää.", + "SIGNL4": "SIGNL4", + "SIGNL4 Webhook URL": "SIGNL4 Webhookin URL", + "signl4Docs": "Löydät lisätietoja SIGNL4-asetuksista ja webhook URLin hankinnasta osoitteesta {0}.", + "Conditions": "Ehdot", + "conditionAdd": "Lisää ehto", + "conditionDelete": "Poista ehto", + "conditionAddGroup": "Lisää ryhmä", + "conditionDeleteGroup": "Poista ryhmä", + "conditionValuePlaceholder": "Arvo", + "contains": "sisältää", + "not contains": "ei sisällä", + "not equals": "ei yhtä suuri kuin", + "equals": "yhtä suuri kuin", + "starts with": "alkaa", + "not starts with": "ei ala", + "ends with": "päättyy", + "not ends with": "ei pääty", + "less than": "vähemmän kuin", + "greater than": "enemmän kuin", + "less than or equal to": "vähemmän tai yhtä paljon kuin", + "greater than or equal to": "enemmän tai yhtä paljon kuin", + "record": "tietue" +} diff --git a/src/lang/fr-FR.json b/src/lang/fr-FR.json index fb36cac66..1369a4dab 100644 --- a/src/lang/fr-FR.json +++ b/src/lang/fr-FR.json @@ -1,1055 +1,1055 @@ -{ - "languageName": "Français", - "checkEverySecond": "Vérifier toutes les {0} secondes", - "retryCheckEverySecond": "Réessayer toutes les {0} secondes", - "resendEveryXTimes": "Renvoyez toutes les {0} fois", - "resendDisabled": "Renvoi désactivé", - "retriesDescription": "Nombre d'essais avant que le service ne soit déclaré hors ligne et qu'une notification soit envoyée", - "ignoreTLSError": "Ignorer les erreurs liées au certificat SSL/TLS", - "upsideDownModeDescription": "Si le service est en ligne, il sera alors noté hors ligne et vice-versa.", - "maxRedirectDescription": "Nombre maximal de redirections avant que le service ne soit marqué comme hors ligne.", - "enableGRPCTls": "Autoriser l'envoi d'une requête gRPC avec une connexion TLS", - "grpcMethodDescription": "Le nom de la méthode est converti au format CamelCase tel que sayHello, check, etc.", - "acceptedStatusCodesDescription": "Codes HTTP qui considèrent le service comme étant disponible.", - "Maintenance": "Maintenance", - "statusMaintenance": "Maintenance", - "Schedule maintenance": "Planifier la maintenance", - "Affected Monitors": "Sondes concernées", - "Pick Affected Monitors...": "Sélectionner les sondes concernées…", - "Start of maintenance": "Début de la maintenance", - "All Status Pages": "Toutes les pages d'état", - "Select status pages...": "Sélectionner les pages d'état…", - "recurringIntervalMessage": "Exécuter une fois par jour | Exécuter une fois tous les {0} jours", - "affectedMonitorsDescription": "Sélectionnez les sondes concernées par la maintenance en cours", - "affectedStatusPages": "Afficher ce message de maintenance sur les pages d'état sélectionnées", - "atLeastOneMonitor": "Sélectionnez au moins une sonde concernée", - "passwordNotMatchMsg": "Les mots de passe ne correspondent pas.", - "notificationDescription": "Une fois ajoutée, vous devez l'activer manuellement dans les paramètres de vos hôtes.", - "keywordDescription": "Le mot clé sera recherché dans la réponse HTML/JSON reçue du site internet.", - "pauseDashboardHome": "En pause", - "deleteMonitorMsg": "Êtes-vous sûr de vouloir supprimer cette sonde ?", - "deleteMaintenanceMsg": "Voulez-vous vraiment supprimer cette maintenance ?", - "deleteNotificationMsg": "Êtes-vous sûr de vouloir supprimer ce type de notification pour toutes les sondes ?", - "dnsPortDescription": "Port du serveur DNS. La valeur par défaut est 53. Vous pouvez modifier le port à tout moment.", - "resolverserverDescription": "Le DNS de Cloudflare est utilisé par défaut, mais vous pouvez le changer si vous le souhaitez.", - "rrtypeDescription": "Veuillez sélectionner un type d'enregistrement DNS", - "pauseMonitorMsg": "Êtes-vous sûr de vouloir mettre en pause cette sonde ?", - "enableDefaultNotificationDescription": "Pour chaque nouvelle sonde, cette notification sera activée par défaut. Vous pouvez toujours désactiver la notification séparément pour chaque sonde.", - "clearEventsMsg": "Êtes-vous sûr de vouloir supprimer tous les événements pour cette sonde ?", - "clearHeartbeatsMsg": "Êtes-vous sûr de vouloir supprimer toutes les vérifications pour cette sonde ?", - "confirmClearStatisticsMsg": "Êtes-vous sûr de vouloir supprimer toutes les statistiques ?", - "importHandleDescription": "Choisissez « Ignorer l'existant » si vous voulez ignorer chaque sonde ou notification portant le même nom. L'option « Écraser » supprime toutes les sondes et notifications existantes.", - "confirmImportMsg": "Êtes-vous sûr de vouloir importer la sauvegarde ? Veuillez vous assurer que vous avez sélectionné la bonne option d'importation.", - "twoFAVerifyLabel": "Veuillez saisir votre jeton pour vérifier que le système 2FA fonctionne :", - "tokenValidSettingsMsg": "Le jeton est valide. Vous pouvez maintenant sauvegarder les paramètres de double authentification (2FA).", - "confirmEnableTwoFAMsg": "Êtes-vous sûr de vouloir activer la double authentification (2FA) ?", - "confirmDisableTwoFAMsg": "Êtes-vous sûr de vouloir désactiver la double authentification (2FA) ?", - "Settings": "Paramètres", - "Dashboard": "Tableau de bord", - "New Update": "Mise à jour disponible", - "Language": "Langue", - "Appearance": "Apparence", - "Theme": "Thème", - "General": "Général", - "Primary Base URL": "URL principale", - "Version": "Version", - "Check Update On GitHub": "Consulter les mises à jour sur GitHub", - "List": "Lister", - "Add": "Ajouter", - "Add New Monitor": "Ajouter une nouvelle sonde", - "Quick Stats": "Résumé", - "Up": "En ligne", - "Down": "Hors ligne", - "Pending": "En attente", - "Unknown": "Inconnu", - "Pause": "En pause", - "Name": "Nom", - "Status": "État", - "DateTime": "Heure", - "Message": "Messages", - "No important events": "Aucun évènement important", - "Resume": "Reprendre", - "Edit": "Modifier", - "Delete": "Supprimer", - "Current": "Actuellement", - "Uptime": "Disponibilité", - "Cert Exp.": "Expiration Cert SSL.", - "day": "jour | jours", - "-day": "-jours", - "hour": "heure", - "-hour": "-heures", - "Response": "Temps de réponse", - "Ping": "Ping", - "Monitor Type": "Type de sonde", - "Keyword": "Mot-clé", - "Friendly Name": "Nom d'affichage", - "URL": "URL", - "Hostname": "Nom d'hôte / adresse IP", - "Port": "Port", - "Heartbeat Interval": "Intervalle de vérification", - "Retries": "Essais", - "Heartbeat Retry Interval": "Intervalle de ré-essai", - "Resend Notification if Down X times consecutively": "Renvoyer la notification si hors ligne X fois consécutivement", - "Advanced": "Avancé", - "Upside Down Mode": "Mode inversé", - "Max. Redirects": "Nombre maximum de redirections", - "Accepted Status Codes": "Codes HTTP acceptés", - "Push URL": "Push URL", - "needPushEvery": "Vous devez appeler cette URL toutes les {0} secondes.", - "pushOptionalParams": "Paramètres facultatifs : {0}", - "Save": "Sauvegarder", - "Notifications": "Notifications", - "Not available, please setup.": "Non disponible, merci de le configurer.", - "Setup Notification": "Créer une notification", - "Light": "Clair", - "Dark": "Sombre", - "Auto": "Automatique", - "Theme - Heartbeat Bar": "Thème - barres d'état", - "Normal": "Normal", - "Bottom": "En dessous", - "None": "Aucun", - "Timezone": "Fuseau horaire", - "Search Engine Visibility": "Visibilité par les moteurs de recherche", - "Allow indexing": "Autoriser l'indexation", - "Discourage search engines from indexing site": "Refuser l'indexation", - "Change Password": "Changer le mot de passe", - "Current Password": "Mot de passe actuel", - "New Password": "Nouveau mot de passe", - "Repeat New Password": "Répéter votre nouveau mot de passe", - "Update Password": "Mettre à jour le mot de passe", - "Disable Auth": "Désactiver l'authentification", - "Enable Auth": "Activer l'authentification", - "disableauth.message1": "Voulez-vous vraiment {disableAuth} ?", - "disable authentication": "désactiver l'authentification", - "disableauth.message2": "Cette fonctionnalité est conçue pour les scénarios {intendThirdPartyAuth} devant Uptime Kuma, comme Cloudflare Access, Authelia ou d'autres mécanismes d'authentification.", - "where you intend to implement third-party authentication": "où vous avez l'intention d'implémenter une authentification tierce", - "Please use this option carefully!": "Veuillez utiliser cette option avec précaution !", - "Logout": "Déconnexion", - "Leave": "Quitter", - "I understand, please disable": "Je comprends, désactivez-la", - "Confirm": "Confirmer", - "Yes": "Oui", - "No": "Non", - "Username": "Nom d'utilisateur", - "Password": "Mot de passe", - "Remember me": "Se souvenir de moi", - "Login": "Connexion", - "No Monitors, please": "Pas de sondes, veuillez", - "add one": "en ajouter une", - "Notification Type": "Type de notification", - "Email": "Courriel", - "Test": "Tester", - "Certificate Info": "Informations sur le certificat SSL", - "Resolver Server": "Serveur DNS utilisé", - "Resource Record Type": "Type d'enregistrement DNS recherché", - "Last Result": "Dernier résultat", - "Create your admin account": "Créer votre compte administrateur", - "Repeat Password": "Répéter le mot de passe", - "Import Backup": "Importation de la sauvegarde", - "Export Backup": "Exportation de la sauvegarde", - "Export": "Exporter", - "Import": "Importer", - "respTime": "Temps de réponse (ms)", - "notAvailableShort": "N/A", - "Default enabled": "Activé par défaut", - "Apply on all existing monitors": "Appliquer sur toutes les sondes existantes", - "Create": "Créer", - "Clear Data": "Effacer les données", - "Events": "Événements", - "Heartbeats": "Vérifications", - "Auto Get": "Récupérer automatiquement", - "backupDescription": "Vous pouvez sauvegarder toutes les sondes et toutes les notifications dans un fichier JSON.", - "backupDescription2": "PS : Les données relatives à l'historique et aux événements ne sont pas incluses.", - "backupDescription3": "Les données sensibles telles que les jetons de notification sont incluses dans le fichier d'exportation, veuillez les conserver soigneusement.", - "alertNoFile": "Veuillez sélectionner un fichier à importer.", - "alertWrongFileType": "Veuillez sélectionner un fichier JSON à importer.", - "Clear all statistics": "Effacer toutes les statistiques", - "Skip existing": "Sauter l'existant", - "Overwrite": "Écraser", - "Options": "Options", - "Keep both": "Garder les deux", - "Verify Token": "Vérifier le jeton", - "Setup 2FA": "Configurer la double authentification (2FA)", - "Enable 2FA": "Activer la double authentification (2FA)", - "Disable 2FA": "Désactiver la double authentification (2FA)", - "2FA Settings": "Paramètres de la double authentification (2FA)", - "Two Factor Authentication": "Double authentification", - "Active": "Actif", - "Inactive": "Inactif", - "Token": "Jeton", - "Show URI": "Afficher l'URI", - "Tags": "Étiquettes", - "Add New below or Select...": "Ajoutez-en un en dessous ou sélectionnez-le ici…", - "Tag with this name already exist.": "Une étiquette portant ce nom existe déjà.", - "Tag with this value already exist.": "Une étiquette avec cette valeur existe déjà.", - "color": "Couleur", - "value (optional)": "Valeur (facultatif)", - "Gray": "Gris", - "Red": "Rouge", - "Orange": "Orange", - "Green": "Vert", - "Blue": "Bleu", - "Indigo": "Indigo", - "Purple": "Violet", - "Pink": "Rose", - "Search...": "Rechercher…", - "Avg. Ping": "Ping moyen", - "Avg. Response": "Réponse moyenne", - "Entry Page": "Page d'accueil", - "statusPageNothing": "Rien ici, veuillez ajouter un groupe ou une sonde.", - "No Services": "Aucun service", - "All Systems Operational": "Tous les systèmes sont opérationnels", - "Partially Degraded Service": "Service partiellement dégradé", - "Degraded Service": "Service dégradé", - "Add Group": "Ajouter un groupe", - "Add a monitor": "Ajouter une sonde", - "Edit Status Page": "Modifier la page de statut", - "Go to Dashboard": "Accéder au tableau de bord", - "Status Page": "Page de statut", - "Status Pages": "Pages de statut", - "defaultNotificationName": "Ma notification {notification} numéro ({number})", - "here": "ici", - "Required": "Requis", - "telegram": "Telegram", - "ZohoCliq": "ZohoCliq", - "Bot Token": "Jeton du robot", - "wayToGetTelegramToken": "Vous pouvez obtenir un token depuis {0}.", - "Chat ID": "Chat ID", - "supportTelegramChatID": "Prend en charge les messages privés / messages de groupe / l'ID d'un salon", - "wayToGetTelegramChatID": "Vous pouvez obtenir le Chat ID en envoyant un message avec le robot puis en récupérant l'URL pour voir l'ID du salon :", - "YOUR BOT TOKEN HERE": "VOTRE JETON ROBOT ICI", - "chatIDNotFound": "ID du salon introuvable, envoyez un message via le robot avant", - "webhook": "Webhook", - "Post URL": "Post URL", - "Content Type": "Type de contenu", - "webhookJsonDesc": "{0} est bien pour tous les serveurs HTTP modernes comme Express.js", - "webhookFormDataDesc": "{multipart} est bien pour du PHP. Le JSON aura besoin d'être parsé avec {decodeFunction}", - "webhookAdditionalHeadersTitle": "En-têtes supplémentaires", - "webhookAdditionalHeadersDesc": "Définit des en-têtes supplémentaires envoyés avec le webhook. Chaque en-tête doit être défini comme une clé/valeur JSON.", - "smtp": "Courriel (SMTP)", - "secureOptionNone": "Aucun / STARTTLS (25, 587)", - "secureOptionTLS": "TLS (465)", - "Ignore TLS Error": "Ignorer les erreurs TLS", - "From Email": "Depuis l'adresse", - "emailCustomSubject": "Objet personnalisé", - "To Email": "Vers l'adresse", - "smtpCC": "CC", - "smtpBCC": "CCI", - "discord": "Discord", - "Discord Webhook URL": "URL vers le webhook Discord", - "wayToGetDiscordURL": "Vous pouvez l'obtenir en allant dans « Paramètres du serveur » -> « Intégrations » -> « Consulter les webhooks» -> « Nouveau Webhook »", - "Bot Display Name": "Nom du robot (affiché)", - "Prefix Custom Message": "Préfixe du message personnalisé", - "Hello @everyone is...": "Bonjour {'@'}everyone il…", - "teams": "Microsoft Teams", - "Webhook URL": "URL vers le webhook", - "wayToGetTeamsURL": "Vous pouvez apprendre comment créer une URL Webhook {0}.", - "wayToGetZohoCliqURL": "Vous pouvez apprendre comment créer une URL Webhook {0}.", - "signal": "Signal", - "Number": "Numéro", - "Recipients": "Destinataires", - "needSignalAPI": "Vous avez besoin d'un client Signal avec l'API REST.", - "wayToCheckSignalURL": "Vous pouvez regarder l'URL suivante pour savoir comment la mettre en place :", - "signalImportant": "IMPORTANT : Vous ne pouvez pas mixer les groupes et les numéros en destinataires !", - "gotify": "Gotify", - "Application Token": "Jeton d'application", - "Server URL": "URL du serveur", - "Priority": "Priorité", - "slack": "Slack", - "Icon Emoji": "Icon Emoji", - "Channel Name": "Nom du salon", - "Uptime Kuma URL": "URL vers Uptime Kuma", - "aboutWebhooks": "Plus d'informations sur les webhooks ici : {0}", - "aboutChannelName": "Mettez le nom du salon dans {0} dans « Nom du salon » si vous voulez contourner le salon webhook. Ex. : #autre-salon", - "aboutKumaURL": "Si vous laissez l'URL d'Uptime Kuma vierge, elle redirigera vers la page du projet GitHub.", - "emojiCheatSheet": "Aide sur les émojis : {0}", - "rocket.chat": "Rocket.chat", - "pushover": "Pushover", - "pushy": "Pushy", - "PushByTechulus": "Push par Techulus", - "octopush": "Octopush", - "promosms": "PromoSMS", - "clicksendsms": "ClickSend SMS", - "lunasea": "LunaSea", - "apprise": "Apprise (prend en charge plus de 50 services de notification)", - "GoogleChat": "Google Chat (Google Workspace uniquement)", - "pushbullet": "Pushbullet", - "Kook": "Kook", - "wayToGetKookBotToken": "Créez une application et récupérer le jeton de robot à l'addresse {0}", - "wayToGetKookGuildID": "Passez en « mode développeur » dans les paramètres de Kook, et cliquez droit sur le Guild pour obtenir son identifiant", - "Guild ID": "Identifiant de Guild", - "line": "Line Messenger", - "mattermost": "Mattermost", - "User Key": "Clé d'utilisateur", - "Device": "Appareil", - "Message Title": "Titre du message", - "Notification Sound": "Son de notification", - "More info on:": "Plus d'informations sur : {0}", - "pushoverDesc1": "Priorité d'urgence (2) a un délai par défaut de 30 secondes entre les tentatives et expire après une heure.", - "pushoverDesc2": "Si vous voulez envoyer des notifications sur différents appareils, remplissez le champ « Appareil ».", - "SMS Type": "Type de SMS", - "octopushTypePremium": "Premium (rapide - recommandé pour les alertes)", - "octopushTypeLowCost": "Économique (lent, bloqué de temps en temps par l'opérateur)", - "checkPrice": "Vérification {0} tarifs :", - "apiCredentials": "Identifiants de l'API", - "octopushLegacyHint": "Voulez-vous utiliser l'ancienne version d'Octopush (2011-2020) ou la nouvelle version ?", - "Check octopush prices": "Vérifier les prix d'Octopush {0}.", - "octopushPhoneNumber": "Numéro de téléphone (format international, ex. : +33612345678) ", - "octopushSMSSender": "Nom de l'expéditeur : 3-11 caractères alphanumériques avec espace (a-zA-Z0-9)", - "LunaSea Device ID": "Identifiant d'appareil LunaSea", - "Apprise URL": "URL d'Apprise", - "Example:": "Exemple : {0}", - "Read more:": "En savoir plus : {0}", - "Status:": "État : {0}", - "Read more": "En savoir plus", - "appriseInstalled": "Apprise est installé.", - "appriseNotInstalled": "Apprise n'est pas installé. {0}", - "Access Token": "Jeton d'accès", - "Channel access token": "Jeton d'accès au canal", - "Line Developers Console": "Console développeurs Line", - "lineDevConsoleTo": "Console développeurs Line - {0}", - "Basic Settings": "Paramètres de base", - "User ID": "Identifiant utilisateur", - "Messaging API": "Messaging API", - "wayToGetLineChannelToken": "Premièrement accédez à {0}, créez un provider et définissez un type de salon à «Messaging API». Vous obtiendrez alors le jeton d'accès du salon et l'identifiant utilisateur demandés.", - "Icon URL": "URL vers l'icône", - "aboutIconURL": "Vous pouvez mettre un lien vers une image dans « URL vers l'icône » pour remplacer l'image de profil par défaut. Elle ne sera utilisé que si « Icône émoji » n'est pas défini.", - "aboutMattermostChannelName": "Vous pouvez remplacer le salon par défaut que le webhook utilise en mettant le nom du salon dans le champ « Nom du salon ». Vous aurez besoin de l'activer depuis les paramètres de Mattermost. Ex. : #autre-salon", - "matrix": "Matrix", - "promosmsTypeEco": "SMS ECO - Bon marché mais lent et souvent surchargé. Limité uniquement aux destinataires polonais.", - "promosmsTypeFlash": "SMS FLASH - Le message sera automatiquement affiché sur l'appareil du destinataire. Limité uniquement aux destinataires Polonais.", - "promosmsTypeFull": "SMS FULL - Version premium des SMS. Vous pouvez mettre le nom de l'expéditeur (vous devez l'enregistrer au préalable). Fiable pour les alertes.", - "promosmsTypeSpeed": "SMS SPEED - Priorité élevée pour le système. Très rapide et fiable mais coûteux (environ le double du prix d'un SMS FULL).", - "promosmsPhoneNumber": "Numéro de téléphone (pour les destinataires polonais, vous pouvez ignorer l'indicatif international)", - "promosmsSMSSender": "Nom de l'expéditeur du SMS : Nom pré-enregistré ou l'un de base : InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - "matrixHomeserverURL": "L'URL du serveur (avec http(s):// et le port de manière facultative)", - "Internal Room Id": "ID de la salle interne", - "matrixDesc1": "Vous pouvez trouver l'ID de salle interne en regardant dans la section avancée des paramètres dans le client Matrix. C'est censé ressembler à !QMdRCpUIfLwsfjxye6:home.server.", - "matrixDesc2": "Il est fortement recommandé de créer un nouvel utilisateur et de ne pas utiliser le jeton d'accès de votre propre utilisateur Matrix, car il vous donnera un accès complet à votre compte et à toutes les salles que vous avez rejointes. Pour cela, créez un nouvel utilisateur et invitez-le uniquement dans la salle dans laquelle vous souhaitez recevoir la notification. Vous pouvez obtenir le jeton d'accès en exécutant {0}", - "Method": "Méthode", - "Body": "Corps", - "Headers": "En-têtes", - "PushUrl": "URL Push", - "HeadersInvalidFormat": "Les en-têtes de la requête ne sont pas dans un format JSON valide : ", - "BodyInvalidFormat": "Le corps de la requête n'est pas dans un format JSON valide : ", - "Monitor History": "Historique de la sonde", - "clearDataOlderThan": "Conserver l'historique des données de la sonde durant {0} jours.", - "PasswordsDoNotMatch": "Les mots de passe ne correspondent pas.", - "records": "enregistrements", - "One record": "Un enregistrement", - "steamApiKeyDescription": "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici : ", - "Current User": "Utilisateur actuel", - "topic": "Sujet", - "topicExplanation": "Topic MQTT à surveiller", - "successMessage": "Message de réussite", - "successMessageExplanation": "Message MQTT qui sera considéré comme un succès", - "recent": "Récent", - "Done": "Fait", - "Info": "Info", - "Security": "Sécurité", - "Steam API Key": "Clé d'API Steam", - "Shrink Database": "Réduire la base de données", - "Pick a RR-Type...": "Choisissez un type d'enregistrement…", - "Pick Accepted Status Codes...": "Choisissez les codes de statut acceptés…", - "Default": "Défaut", - "HTTP Options": "Options HTTP", - "Create Incident": "Créer un incident", - "Title": "Titre", - "Content": "Contenu", - "Style": "Style", - "info": "Info", - "warning": "Attention", - "danger": "Danger", - "error": "Erreur", - "critical": "Critique", - "primary": "Primaire", - "light": "Blanc", - "dark": "Noir", - "Post": "Post", - "Please input title and content": "Veuillez saisir le titre et le contenu", - "Created": "Créé", - "Last Updated": "Dernière mise à jour", - "Unpin": "Retirer", - "Switch to Light Theme": "Passer au thème clair", - "Switch to Dark Theme": "Passer au thème sombre", - "Show Tags": "Afficher les étiquettes", - "Hide Tags": "Masquer les étiquettes", - "Description": "Description", - "No monitors available.": "Aucune sonde disponible.", - "Add one": "En rajouter une", - "No Monitors": "Aucune sonde", - "Untitled Group": "Groupe sans titre", - "Services": "Services", - "Discard": "Abandonner", - "Cancel": "Annuler", - "Powered by": "Propulsé par", - "serwersms": "SerwerSMS.pl", - "serwersmsAPIUser": "Nom d'utilisateur de l'API (incl. webapi_ prefix)", - "serwersmsAPIPassword": "Mot de passe API", - "serwersmsPhoneNumber": "Numéro de téléphone", - "serwersmsSenderName": "Nom de l'expéditeur du SMS (enregistré via le portail client)", - "smseagle": "SMSEagle", - "smseagleTo": "Numéro(s) de téléphone", - "smseagleGroup": "Nom(s) de groupe(s) de répertoire", - "smseagleContact": "Nom(s) de contact du répertoire", - "smseagleRecipientType": "Type de destinataire", - "smseagleRecipient": "Destinataire(s) (les multiples doivent être séparés par une virgule)", - "smseagleToken": "Jeton d'accès à l'API", - "smseagleUrl": "L'URL de votre appareil SMSEagle", - "smseagleEncoding": "Envoyer en Unicode", - "smseaglePriority": "Priorité des messages (0-9, par défaut = 0)", - "stackfield": "Stackfield", - "Customize": "Personnaliser", - "Custom Footer": "Pied de page personnalisé", - "Custom CSS": "CSS personnalisé", - "smtpDkimSettings": "Paramètres DKIM", - "smtpDkimDesc": "Veuillez vous référer au Nodemailer DKIM {0} pour l'utilisation.", - "documentation": "documentation", - "smtpDkimDomain": "Nom de domaine", - "smtpDkimKeySelector": "Sélecteur de clé", - "smtpDkimPrivateKey": "Clé privée", - "smtpDkimHashAlgo": "Algorithme de hachage (facultatif)", - "smtpDkimheaderFieldNames": "Clés d'en-tête à signer (facultatif)", - "smtpDkimskipFields": "Clés d'en-tête à ne pas signer (facultatif)", - "wayToGetPagerDutyKey": "Vous pouvez l'obtenir en allant dans Service -> Annuaire des services -> (sélectionner un service) -> Intégrations -> Ajouter une intégration. Ici, vous pouvez rechercher \"Events API V2\". Plus d'infos {0}", - "Integration Key": "Clé d'intégration", - "Integration URL": "URL d'intégration", - "Auto resolve or acknowledged": "Résolution automatique ou accusé de réception", - "do nothing": "ne fais rien", - "auto acknowledged": "accusé de réception automatique", - "auto resolve": "résolution automatique", - "gorush": "Gorush", - "alerta": "Alerta", - "alertaApiEndpoint": "API Endpoint", - "alertaEnvironment": "Environnement", - "alertaApiKey": "Clé de l'API", - "alertaAlertState": "État de l'alerte", - "alertaRecoverState": "État de récupération", - "deleteStatusPageMsg": "Voulez-vous vraiment supprimer cette page d'état ?", - "Proxies": "Proxies", - "default": "Défaut", - "enabled": "Activé", - "setAsDefault": "Définir par défaut", - "deleteProxyMsg": "Voulez-vous vraiment supprimer ce proxy pour toutes les sondes ?", - "proxyDescription": "Les proxies doivent être affectés à une sonde pour fonctionner.", - "enableProxyDescription": "Ce proxy n'aura pas d'effet sur les demandes de sonde tant qu'il n'est pas activé. Vous pouvez contrôler la désactivation temporaire du proxy de toutes les sondes en fonction de l'état d'activation.", - "setAsDefaultProxyDescription": "Ce proxy sera activé par défaut pour les nouvelles sondes. Vous pouvez toujours désactiver le proxy séparément pour chaque sonde.", - "Certificate Chain": "Chaîne de certificats", - "Valid": "Valide", - "Invalid": "Non valide", - "AccessKeyId": "ID de clé d'accès", - "SecretAccessKey": "Clé secrète d'accès", - "PhoneNumbers": "Numéros de téléphone", - "TemplateCode": "Modèle de code", - "SignName": "Signature", - "Sms template must contain parameters: ": "Le modèle de SMS doit contenir des paramètres : ", - "Bark Endpoint": "Endpoint Bark", - "Bark Group": "Groupe Bark", - "Bark Sound": "Son Bark", - "WebHookUrl": "WebHookUrl", - "SecretKey": "Clé secrète", - "For safety, must use secret key": "Par sécurité, utilisation obligatoire de la clé secrète", - "Device Token": "Jeton d'appareil", - "Platform": "Plateforme", - "Huawei": "Huawei", - "High": "Haute", - "Retry": "Recommencez", - "Topic": "Topic", - "WeCom Bot Key": "Clé de robot WeCom", - "Setup Proxy": "Configurer le proxy", - "Proxy Protocol": "Protocole proxy", - "Proxy Server": "Serveur proxy", - "Proxy server has authentication": "Une authentification est nécessaire pour le serveur proxy", - "User": "Utilisateur", - "Installed": "Installé", - "Not installed": "Non installé", - "Running": "En cours", - "Not running": "Ne fonctionne pas", - "Remove Token": "Supprimer le jeton", - "Start": "Démarrer", - "Stop": "Arrêter", - "Uptime Kuma": "Uptime Kuma", - "Add New Status Page": "Ajouter une page de statut", - "Slug": "Chemin", - "Accept characters:": "Caractères acceptés :", - "startOrEndWithOnly": "Commence uniquement par {0}", - "No consecutive dashes": "Pas de double tirets", - "Next": "Continuer", - "The slug is already taken. Please choose another slug.": "Un chemin existe déjà. Veuillez en choisir un autre.", - "No Proxy": "Pas de proxy", - "Authentication": "Authentification", - "HTTP Basic Auth": "Authentification de base HTTP", - "New Status Page": "Nouvelle page de statut", - "Page Not Found": "Page non trouvée", - "Reverse Proxy": "Proxy inverse", - "Backup": "Sauvegarde", - "About": "À propos", - "wayToGetCloudflaredURL": "(télécharger cloudflared depuis {0})", - "cloudflareWebsite": "Site web de Cloudflare", - "Message:": "Message :", - "Don't know how to get the token? Please read the guide:": "Vous ne savez pas comment obtenir le jeton ? Lisez le guide :", - "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "La connexion actuelle peut être perdue si vous vous connectez actuellement via un tunnel Cloudflare. Êtes-vous sûr de vouloir l'arrêter ? Tapez votre mot de passe actuel pour le confirmer.", - "HTTP Headers": "En-têtes HTTP", - "Trust Proxy": "Proxy de confiance", - "Other Software": "Autres logiciels", - "For example: nginx, Apache and Traefik.": "Par exemple : nginx, Apache et Traefik.", - "Please read": "Veuillez lire", - "Subject:": "Objet :", - "Valid To:": "Valable jusqu'au :", - "Days Remaining:": "Jours restants :", - "Issuer:": "Émetteur :", - "Fingerprint:": "Empreinte :", - "No status pages": "Aucune page de statut", - "Domain Name Expiry Notification": "Notification d'expiration du nom de domaine", - "Proxy": "Proxy", - "Date Created": "Date de création", - "HomeAssistant": "Home Assistant", - "onebotHttpAddress": "Adresse HTTP OneBot", - "onebotMessageType": "Type de message OneBot", - "onebotGroupMessage": "Groupe", - "onebotPrivateMessage": "Privé", - "onebotUserOrGroupId": "ID de groupe/utilisateur", - "onebotSafetyTips": "Pour des raisons de sécurité, vous devez définir un jeton d'accès", - "PushDeer Key": "Clé PushDeer", - "Footer Text": "Texte de pied de page", - "Show Powered By": "Afficher « Propulsé par »", - "Domain Names": "Noms de domaine", - "signedInDisp": "Connecté en tant que {0}", - "signedInDispDisabled": "Authentification désactivée.", - "RadiusSecret": "Radius Secret", - "RadiusSecretDescription": "Secret partagé entre le client et le serveur", - "RadiusCalledStationId": "Identifiant de la station appelée", - "RadiusCalledStationIdDescription": "Identifiant de l'appareil appelé", - "RadiusCallingStationId": "Identifiant de la station appelante", - "RadiusCallingStationIdDescription": "Identifiant de l'appareil appelant", - "Certificate Expiry Notification": "Notification d'expiration du certificat", - "API Username": "Nom d'utilisateur de l'API", - "API Key": "Clé API", - "Recipient Number": "Numéro du destinataire", - "From Name/Number": "De nom/numéro", - "Leave blank to use a shared sender number.": "Laisser vide pour utiliser un numéro d'expéditeur partagé.", - "Octopush API Version": "Version de l'API Octopush", - "Legacy Octopush-DM": "Ancien Octopush-DM", - "endpoint": "endpoint", - "octopushAPIKey": "\"Clé API\" à partir des informations d'identification de l'API HTTP dans le panneau de configuration", - "octopushLogin": "\"Identifiant\" à partir des informations d'identification de l'API HTTP dans le panneau de configuration", - "promosmsLogin": "Nom de connexion API", - "promosmsPassword": "Mot de passe API", - "pushoversounds pushover": "Pushover (par défaut)", - "pushoversounds bike": "Vélo", - "pushoversounds bugle": "Clairon", - "pushoversounds cashregister": "Caisse enregistreuse", - "pushoversounds classical": "Classique", - "pushoversounds cosmic": "Cosmique", - "pushoversounds falling": "Chute", - "pushoversounds gamelan": "Gamelan", - "pushoversounds incoming": "Arrivée", - "pushoversounds intermission": "Intermission", - "pushoversounds magic": "Magique", - "pushoversounds mechanical": "Mécanique", - "pushoversounds pianobar": "Piano-bar", - "pushoversounds siren": "Sirène", - "pushoversounds spacealarm": "Alarme spatiale", - "pushoversounds tugboat": "Remorqueur", - "pushoversounds alien": "Alarme alienne (version longue)", - "pushoversounds climb": "Escalade (version longue)", - "pushoversounds persistent": "Persistent (version longue)", - "pushoversounds echo": "Pushover Echo (version longue)", - "pushoversounds updown": "Up Down (version longue)", - "pushoversounds vibrate": "Vibration seulement", - "pushoversounds none": "Aucun (silencieux)", - "pushyAPIKey": "Clé API secrète", - "pushyToken": "Jeton d'appareil", - "Show update if available": "Afficher la mise à jour si disponible", - "Also check beta release": "Vérifiez également la version bêta", - "Using a Reverse Proxy?": "Utiliser un proxy inverse ?", - "Check how to config it for WebSocket": "Vérifier comment le configurer pour WebSocket", - "Steam Game Server": "Serveur de jeu Steam", - "Most likely causes:": "Causes les plus probables :", - "The resource is no longer available.": "La ressource n'est plus disponible.", - "There might be a typing error in the address.": "Il se peut qu'il y ait une erreur de frappe dans l'adresse.", - "What you can try:": "Ce que vous pouvez essayer :", - "Retype the address.": "Retaper l'adresse.", - "Go back to the previous page.": "Retourner à la page précédente.", - "Coming Soon": "Prochainement", - "wayToGetClickSendSMSToken": "Vous pouvez obtenir le nom d'utilisateur API et la clé API à partir de {0} .", - "Connection String": "Chaîne de connexion", - "Query": "Requête", - "settingsCertificateExpiry": "Expiration du certificat TLS", - "certificationExpiryDescription": "Les sondes HTTPS émettent une notification lorsque le certificat TLS expire dans :", - "Setup Docker Host": "Configurer l'hôte Docker", - "Connection Type": "Type de connexion", - "Docker Daemon": "Deamon Docker", - "deleteDockerHostMsg": "Voulez-vous vraiment supprimer cet hôte Docker pour toutes les sondes ?", - "socket": "Socket", - "tcp": "TCP / HTTP", - "Docker Container": "Conteneur Docker", - "Container Name / ID": "Nom / ID du conteneur", - "Docker Host": "Hôte Docker", - "Docker Hosts": "Hôtes Docker", - "ntfy Topic": "Topic ntfy", - "Domain": "Domaine", - "Workstation": "Poste de travail", - "disableCloudflaredNoAuthMsg": "Vous êtes en mode No Auth, un mot de passe n'est pas nécessaire.", - "trustProxyDescription": "Faire confiance aux en-têtes 'X-Forwarded-*'. Si vous souhaitez obtenir la bonne adresse IP client et que votre Uptime Kuma se situe derrière un proxy (comme nginx ou Apache) vous devez l'activer.", - "wayToGetLineNotifyToken": "Vous pouvez obtenir un jeton d'accès auprès de {0}", - "Examples": "Exemples", - "Home Assistant URL": "URL vers Home Assistant", - "Long-Lived Access Token": "Jeton d'accès de longue durée", - "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Un jeton d'accès de longue durée peut être créé en cliquant sur le nom de votre profil (en bas à gauche) et en faisant défiler vers le bas, puis cliquez sur Créer un jeton. ", - "Notification Service": "Service de notifications", - "default: notify all devices": "par défaut : notifier tous les appareils", - "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Une liste des services de notification peut être trouvée dans Home Assistant sous \"Outils de développement > Services\" recherchez \"notification\" pour trouver le nom de votre appareil/téléphone.", - "Automations can optionally be triggered in Home Assistant:": "Les automatisations peuvent éventuellement être déclenchées dans Home Assistant :", - "Trigger type:": "Type de déclencheur :", - "Event type:": "Type d'événement :", - "Event data:": "Données d'événement :", - "Then choose an action, for example switch the scene to where an RGB light is red.": "Ensuite, choisissez une action, par exemple basculer la scène là où une lumière RVB est rouge.", - "Frontend Version": "Version frontend", - "Frontend Version do not match backend version!": "La version frontend ne correspond pas à la version backend !", - "Base URL": "URL de base", - "goAlertInfo": "GoAlert est une application open source pour la planification des appels, les escalades automatisées et les notifications (comme les SMS ou les appels vocaux). Impliquez automatiquement la bonne personne, de la bonne manière et au bon moment ! {0}", - "goAlertIntegrationKeyInfo": "Obtenez la clé d'intégration d'API générique pour le service dans ce format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" généralement la valeur du paramètre de jeton de l'URL copiée.", - "goAlert": "GoAlert", - "backupOutdatedWarning": "Obsolète : étant donné que de nombreuses fonctionnalités ont été ajoutées et que cette fonctionnalité de sauvegarde est non maintenue, elle ne peut pas générer ou restaurer une sauvegarde complète.", - "backupRecommend": "Veuillez sauvegarder le volume ou le dossier de données (./data/) directement à la place.", - "Optional": "Optionnel", - "squadcast": "Squadcast", - "SendKey": "SendKey", - "SMSManager API Docs": "Documentations de l'API SMSManager ", - "Gateway Type": "Type de passerelle", - "SMSManager": "SMSManager", - "You can divide numbers with": "Vous pouvez diviser des nombres avec", - "or": "ou", - "recurringInterval": "Intervalle", - "Recurring": "Récurrent", - "strategyManual": "Activer/désactiver manuellement", - "warningTimezone": "Utilisation du fuseau horaire du serveur", - "weekdayShortMon": "Lun", - "weekdayShortTue": "Mar", - "weekdayShortWed": "Mer", - "weekdayShortThu": "Jeu", - "weekdayShortFri": "Ven", - "weekdayShortSat": "Sam", - "weekdayShortSun": "Dim", - "dayOfWeek": "Jour de la semaine", - "dayOfMonth": "Jour du mois", - "lastDay": "Dernier jour", - "lastDay1": "Dernier jour du mois", - "lastDay2": "Avant-dernier jour du mois", - "lastDay3": "3ème dernier jour du mois", - "lastDay4": "4ème dernier jour du mois", - "No Maintenance": "Aucune maintenance", - "pauseMaintenanceMsg": "Voulez-vous vraiment mettre en pause ?", - "maintenanceStatus-under-maintenance": "En maintenance", - "maintenanceStatus-inactive": "Inactif", - "maintenanceStatus-scheduled": "Programmé", - "maintenanceStatus-ended": "Terminé", - "maintenanceStatus-unknown": "Inconnue", - "Display Timezone": "Afficher le fuseau horaire", - "Server Timezone": "Fuseau horaire du serveur", - "statusPageMaintenanceEndDate": "Fin", - "IconUrl": "URL vers l'icône", - "Enable DNS Cache": "(Obsolète) Activer le cache DNS pour les sondes HTTP(s)", - "Enable": "Activer", - "Disable": "Désactiver", - "dnsCacheDescription": "Il peut ne pas fonctionner dans certains environnements IPv6, désactivez-le si vous rencontrez des problèmes.", - "Single Maintenance Window": "Créneau de maintenance unique", - "Maintenance Time Window of a Day": "Créneau de la maintenance", - "Effective Date Range": "Plage de dates d'effet (facultatif)", - "Schedule Maintenance": "Créer une maintenance", - "Date and Time": "Date et heure", - "DateTime Range": "Plage de dates et d'heures", - "Strategy": "Stratégie", - "Free Mobile User Identifier": "Identifiant d'utilisateur Free Mobile", - "Free Mobile API Key": "Clé d'API Free Mobile", - "Enable TLS": "Activer le TLS", - "Proto Service Name": "Nom du service proto", - "Proto Method": "Méthode Proto", - "Proto Content": "Contenu proto", - "Economy": "Économique", - "Lowcost": "Faible coût", - "high": "Haute", - "General Monitor Type": "Type de sonde générale", - "Passive Monitor Type": "Type de sonde passive", - "Specific Monitor Type": "Type de sonde spécifique", - "dataRetentionTimeError": "La durée de conservation doit être supérieure ou égale à 0", - "infiniteRetention": "Définissez la valeur à 0 pour une durée de conservation infinie.", - "Monitor": "Sonde | Sondes", - "Custom": "Personnalisé", - "confirmDeleteTagMsg": "Voulez-vous vraiment supprimer cette étiquette ? Les sondes associées ne seront pas supprimées.", - "promosmsAllowLongSMS": "Autoriser les longs SMS", - "Help": "Aide", - "Game": "Jeux", - "Packet Size": "Taille du paquet", - "loadingError": "Impossible de récupérer les données, veuillez réessayer plus tard.", - "plugin": "Plugin | Plugins", - "install": "Installer", - "installing": "Installation", - "uninstall": "Désinstaller", - "uninstalling": "Désinstallation", - "confirmUninstallPlugin": "Voulez-vous vraiment désinstaller ce plugin ?", - "Custom Monitor Type": "Type de sonde personnalisé", - "markdownSupported": "Syntaxe Markdown supportée", - "Google Analytics ID": "Identifiant Google Analytics", - "Server Address": "Adresse du serveur", - "Learn More": "En savoir plus", - "Edit Tag": "Modifier l'étiquette", - "Body Encoding": "Encodage du corps", - "telegramMessageThreadID": "(Facultatif) ID du fil de message", - "telegramMessageThreadIDDescription": "(Facultatif) Identifiant unique pour le fil de discussion ciblé (sujet) du forum ; pour les supergroupes du forum uniquement", - "telegramProtectContent": "Protéger le transfert/l'enregistrement", - "telegramProtectContentDescription": "S'il est activé, les messages du robot dans Telegram seront protégés contre le transfert et l'enregistrement.", - "telegramSendSilently": "Envoyer silencieusement", - "telegramSendSilentlyDescription": "Envoie le message silencieusement. Les utilisateurs recevront une notification sans son.", - "notificationRegional": "Régional", - "Clone Monitor": "Cloner la sonde", - "Clone": "Cloner", - "cloneOf": "Clone de {0}", - "Expiry date": "Date d'expiration", - "Add Another": "Ajouter un autre", - "Key Added": "Clé ajoutée", - "Expiry": "Expiration", - "Continue": "Continuer", - "Add API Key": "Ajouter une clé API", - "No API Keys": "Aucune clé API", - "apiKey-active": "Active", - "apiKey-expired": "Expirée", - "apiKey-inactive": "Inactif", - "Expires": "Expire", - "disableAPIKeyMsg": "Voulez-vous vraiment désactiver cette clé API ?", - "deleteAPIKeyMsg": "Voulez-vous vraiment supprimer cette clé API ?", - "Generate": "Générer", - "API Keys": "Clés API", - "apiKeyAddedMsg": "Votre clé API a été ajoutée. Veuillez la noter car elle ne pourra plus être affichée.", - "Don't expire": "N'expire pas", - "pagertreeUrgency": "Urgence", - "pagertreeSilent": "Silencieux", - "pagertreeLow": "Faible", - "pagertreeMedium": "Moyen", - "pagertreeHigh": "Haut", - "pagertreeResolve": "Résolution automatique", - "pagertreeDoNothing": "Ne fais rien", - "pagertreeIntegrationUrl": "URL d'intégration", - "pagertreeCritical": "Critique", - "wayToGetPagerTreeIntegrationURL": "Après avoir créé l'intégration Uptime Kuma dans PagerTree, copiez le fichier Endpoint. Voir tous les détails {0}", - "lunaseaDeviceID": "Identifiant de l'appareil", - "lunaseaUserID": "Identifiant de l'utilisateur", - "Add New Tag": "Ajouter une étiquette", - "lunaseaTarget": "Cible", - "statusPageRefreshIn": "Actualisation dans : {0}", - "twilioFromNumber": "Du Nombre", - "twilioToNumber": "Au Nombre", - "twilioAccountSID": "ID du compte", - "twilioAuthToken": "Jeton d'authentification / Clé secrète de l'API", - "sameAsServerTimezone": "Identique au fuseau horaire du serveur", - "startDateTime": "Date/heure de début", - "endDateTime": "Date/heure de fin", - "cronExpression": "Expression cron", - "cronSchedule": "Calendrier : ", - "invalidCronExpression": "Expression Cron non valide : {0}", - "ntfyUsernameAndPassword": "Nom d'utilisateur et mot de passe", - "ntfyAuthenticationMethod": "Méthode d'authentification", - "pushoverMessageTtl": "TTL Message (Secondes)", - "Show Clickable Link": "Afficher le lien cliquable", - "Show Clickable Link Description": "Si cette case est cochée, tous ceux qui ont accès à cette page d'état peuvent accéder à l'URL de la sonde.", - "Open Badge Generator": "Ouvrir le générateur de badges", - "Badge Type": "Type de badge", - "Badge Duration": "Durée du badge", - "Badge Prefix": "Préfixe de la valeur du badge", - "Badge Suffix": "Suffixe de la valeur du badge", - "Badge Label Color": "Couleur de l'étiquette du badge", - "Badge Color": "Couleur du badge", - "Badge Label Prefix": "Préfixe d'étiquette de badge", - "Badge Label Suffix": "Suffixe d'étiquette de badge", - "Badge Up Color": "Couleur du badge en ligne", - "Badge Down Color": "Couleur du badge hors ligne", - "Badge Pending Color": "Couleur du badge en attente", - "Badge Maintenance Color": "Couleur du badge maintenance", - "Badge Warn Color": "Couleur du badge d'avertissement", - "Badge Warn Days": "Jours d'avertissement de badge", - "Badge Style": "Style de badge", - "Badge value (For Testing only.)": "Valeur du badge (Pour les tests uniquement.)", - "Monitor Setting": "Réglage de la sonde {0}", - "Badge Generator": "Générateur de badges {0}", - "Badge Label": "Étiquette de badge", - "Badge URL": "URL du badge", - "Cannot connect to the socket server": "Impossible de se connecter au serveur de socket", - "Reconnecting...": "Reconnexion...", - "Edit Maintenance": "Modifier la maintenance", - "Monitor Group": "Groupe de sonde | Groupe de sondes", - "Badge Down Days": "Badge hors ligne", - "Group": "Groupe", - "Home": "Accueil", - "noGroupMonitorMsg": "Pas disponible. Créez d'abord une sonde de groupe.", - "Close": "Fermer", - "chromeExecutableDescription": "Pour les utilisateurs sous Docker, si Chromium n'est pas encore installé, quelques minutes seront nécessaires pour installer et afficher le résultat du test. Cela peut prendre 1 Go d'espace disque.", - "chromeExecutableAutoDetect": "Auto-détecter", - "chromeExecutable": "Exécutable Chrome/Chromium", - "Invert Keyword": "Inverser le mot-clé", - "invertKeywordDescription": "Recherchez le mot-clé absent plutôt que présent.", - "webhookCustomBodyDesc": "Définissez un corps HTTP personnalisé pour la requête. Les variables de modèle {msg}, {heartbeat}, {monitor} sont acceptées.", - "webhookBodyCustomOption": "Corps personnalisé", - "webhookBodyPresetOption": "Préréglages - {0}", - "Request Body": "Corps de la requête", - "twilioApiKey": "Clé API (facultatif)", - "Expected Value": "Valeur attendue", - "Json Query": "Requête Json", - "Badge Duration (in hours)": "Durée du badge (en heures)", - "Badge Preview": "Aperçu du badge", - "aboutNotifyChannel": "Notifier le canal déclenchera une notification de bureau ou mobile pour tous les membres du canal, que leur disponibilité soit active ou absente.", - "Notify Channel": "Notifier le canal", - "filterActive": "Actif", - "filterActivePaused": "En pause", - "Enter the list of brokers": "Entrez la liste des courtiers", - "Press Enter to add broker": "Appuyez sur Entrée pour ajouter un courtier", - "Kafka Topic Name": "Nom du sujet Kafka", - "Enable Kafka SSL": "Activer Kafka SSL", - "Kafka SASL Options": "Options de Kafka SAS", - "Mechanism": "Mécanisme", - "Pick a SASL Mechanism...": "Choisissez un mécanisme SASL…", - "Authorization Identity": "Identité d'autorisation", - "AccessKey Id": "ID de la clé d'accès", - "Secret AccessKey": "Clé d'accès secrète", - "Session Token": "Jeton de session", - "Kafka Brokers": "Courtiers Kafka", - "Kafka Producer Message": "Message du producteur Kafka", - "Enable Kafka Producer Auto Topic Creation": "Activer la création automatique de rubrique Kafka", - "tailscalePingWarning": "Afin d'utiliser la sonde Tailscale Ping, vous devez installer Uptime Kuma sans Docker et également installer le client Tailscale sur votre serveur.", - "Server URL should not contain the nfty topic": "L'URL du serveur ne doit pas contenir le sujet nfty", - "Select": "Sélectionner", - "selectedMonitorCount": "Sélectionné : {0}", - "Check/Uncheck": "Cocher/décocher", - "nostrRelaysHelp": "Une URL relais par ligne", - "nostrRecipients": "Clés publiques des bénéficiaires (npub)", - "nostrSender": "Émetteur clé privée (nsec)", - "nostrRecipientsHelp": "Format npub, un par ligne", - "nostrRelays": "Relais Nostr", - "PushDeer Server": "PushDeer Server", - "showCertificateExpiry": "Afficher l'expiration du certificat", - "noOrBadCertificate": "Pas/Mauvais certificat", - "pushDeerServerDescription": "Laissez le champ vide pour utiliser le serveur officiel", - "FlashDuty Severity": "Gravité", - "wayToGetFlashDutyKey": "Vous pouvez aller dans Canal -> (Sélectionner un canal) -> Intégrations -> Ajouter une nouvelle page d'intégration, ajouter un « Uptime Kuma » pour obtenir une adresse push, copier la clé d'intégration dans l'adresse. Pour plus d'informations, veuillez visiter", - "Request Timeout": "Délai d'expiration de la demande", - "timeoutAfter": "Délai dépassé après {0} secondes", - "gamedigGuessPort": "Gamedig : Devinez le port", - "gamedigGuessPortDescription": "Le port utilisé par Valve Server Query Protocol peut être différent du port client. Essayez ceci si la sonde ne peut pas se connecter à votre serveur.", - "styleElapsedTimeShowNoLine": "Afficher (pas de ligne)", - "styleElapsedTimeShowWithLine": "Afficher (avec ligne)", - "styleElapsedTime": "Temps écoulé sous la barre d'état", - "enableNSCD": "Activer NSCD (Name Service Cache Daemon) pour mettre en cache toutes les demandes DNS", - "setupDatabaseChooseDatabase": "Quelle base de données souhaitez-vous utiliser ?", - "setupDatabaseEmbeddedMariaDB": "Vous n'avez rien à définir. Cette image Docker a intégré et configuré MariaDB automatiquement pour vous. Uptime Kuma se connectera à cette base de données via un socket Unix.", - "setupDatabaseSQLite": "Un fichier de base de données simple, recommandé pour les déploiements à petite échelle. Avant la v2.0.0, Uptime Kuma utilisait SQLite comme base de données par défaut.", - "setupDatabaseMariaDB": "Connectez-vous à une base de données MariaDB externe. Vous devez définir les informations de connexion à la base de données.", - "dbName": "Nom de la base de données", - "Saved.": "Enregistré.", - "toastErrorTimeout": "Délai d'attente pour les notifications d'erreur", - "toastSuccessTimeout": "Délai d'attente pour les notifications de réussite", - "monitorToastMessagesLabel": "Surveiller les notifications Toast", - "monitorToastMessagesDescription": "Les notifications Toast pour les sondes disparaissent après un délai donné en secondes. La valeur -1 désactive le délai d'attente. La valeur 0 désactive les notifications toast.", - "Bark API Version": "Version de l'API Bark", - "pushViewCode": "Comment utiliser une sonde type « Push » (voir le code)", - "pushOthers": "Autres", - "programmingLanguages": "Langages de programmation", - "authInvalidToken": "Jeton invalide.", - "authIncorrectCreds": "Nom d'utilisateur ou mot de passe incorrects.", - "2faAlreadyEnabled": "L'authentification à deux facteurs (2FA) est déjà activée.", - "2faDisabled": "Authentification à deux facteurs (2FA) désactivée.", - "successAdded": "Ajouté avec succès.", - "successEdited": "Modifié avec succès.", - "successBackupRestored": "Sauvegarde restaurée avec succès.", - "successDisabled": "Désactivé avec succès.", - "successEnabled": "Activé avec succès.", - "tagNotFound": "Étiquette non trouvée.", - "foundChromiumVersion": "Version de Chromium/Chrome trouvée : {0}", - "successResumed": "Reprise avec succès.", - "successPaused": "Mis en pause avec succès.", - "authUserInactiveOrDeleted": "L'utilisateur est inactif ou a été supprimé.", - "2faEnabled": "Authentification à deux facteurs (2FA) activée.", - "successDeleted": "Supprimé avec succès.", - "successAuthChangePassword": "Le mot de passe a bien été mis à jour.", - "Reset Token": "Réinitialiser le jeton", - "liquidIntroduction": "La possibilité de créer des modèles est obtenue via le langage de modèles Liquid. Veuillez vous référer au {0} pour les instructions d'utilisation. Voici les variables disponibles :", - "emailCustomisableContent": "Contenu personnalisable", - "smtpLiquidIntroduction": "Les deux champs suivants peuvent être modélisés via le langage de modèles Liquid. Veuillez vous référer au {0} pour les instructions d'utilisation. Voici les variables disponibles :", - "leave blank for default subject": "laisser vide pour le sujet par défaut", - "emailCustomBody": "Corps personnalisé", - "leave blank for default body": "laisser vide pour le corps par défaut", - "emailTemplateServiceName": "Nom du service", - "emailTemplateHostnameOrURL": "Nom d'hôte ou URL", - "emailTemplateStatus": "Statut", - "emailTemplateMonitorJSON": "objet décrivant la sonde", - "templateMsg": "message de notification", - "templateHeartbeatJSON": "objet décrivant la vérification", - "templateMonitorJSON": "objet décrivant la sonde", - "templateLimitedToUpDownCertNotifications": "disponible uniquement pour les notifications En ligne/Hors ligne/expiration du certificat", - "templateLimitedToUpDownNotifications": "disponible uniquement pour les notifications en ligne/hors ligne", - "emailTemplateMsg": "message de notification", - "emailTemplateLimitedToUpDownNotification": "disponible uniquement pour les vérifications en ligne/hors ligne, sinon nul", - "emailTemplateHeartbeatJSON": "objet décrivant la vérification", - "GrafanaOncallUrl": "URL vers Grafana Oncall", - "noDockerHostMsg": "Pas disponible. Configurez d'abord un hôte Docker.", - "DockerHostRequired": "Veuillez définir l'hôte Docker pour cette sonde.", - "Browser Screenshot": "Capture d'écran du navigateur", - "setup a new monitor group": "configurer un nouveau groupe de sondes", - "remoteBrowsersDescription": "Les navigateurs distants sont une alternative à l'exécution de Chromium localement. Configurez avec un service comme browserless.io ou connectez-vous au vôtre", - "deleteRemoteBrowserMessage": "Êtes-vous sûr de vouloir supprimer ce navigateur distant pour toutes les sondes ?", - "Add a new expiry notification day": "Ajouter un nouveau jour de notification d'expiration", - "Remove the expiry notification": "Supprimer le jour de notification d'expiration", - "openModalTo": "Ouvrir la fenêtre modale pour {0}", - "Add a domain": "Ajouter un domaine", - "Remove domain": "Supprimer le domaine '{0}'", - "Remote Browsers": "Navigateurs distants", - "Remote Browser": "Navigateur distant", - "Add a Remote Browser": "Ajouter un navigateur distant", - "Remote Browser not found!": "Navigateur distant introuvable !", - "self-hosted container": "conteneur auto-hébergé", - "remoteBrowserToggle": "Par défaut, Chromium s'exécute dans le conteneur Uptime Kuma. Vous pouvez utiliser un navigateur distant en activant ce commutateur.", - "useRemoteBrowser": "Utiliser un navigateur distant", - "successKeyword": "Mot-clé de réussite", - "successKeywordExplanation": "Mot clé MQTT qui sera considéré comme un succès", - "Search monitored sites": "Rechercher des sites surveillés", - "settingUpDatabaseMSG": "Mise en place de la base de données. Cela peut prendre un certain temps, veuillez patienter.", - "ntfyPriorityHelptextAllEvents": "Tous les événements sont envoyés avec la priorité maximale", - "ntfyPriorityHelptextAllExceptDown": "Tous les événements sont envoyés avec cette priorité, à l'exception des événements {0}, qui ont une priorité de {1}", - "statusPageSpecialSlugDesc": "Chemin spécial {0} : cette page sera affichée en l'absence de chemin", - "What is a Remote Browser?": "Qu'est-ce qu'un navigateur distant ?", - "Channel access token (Long-lived)": "Jeton d'accès au canal (longue durée)", - "Your User ID": "Votre identifiant", - "documentationOf": "{0} Documentation", - "wayToGetHeiiOnCallDetails": "Comment obtenir l'ID de déclencheur et les clés API d'après la {documentation}", - "From Phone Number / Transmission Path Originating Address (TPOA)": "À partir du numéro de téléphone / Adresse d'origine du chemin de transmission (TPOA)", - "To Phone Number": "Au numéro de téléphone", - "gtxMessagingToHint": "Format international, avec \"+\" ({e164}, {e212} ou {e214})", - "gtxMessagingApiKeyHint": "Vous pouvez trouver votre clé API à l'adresse suivante : Mes comptes de routage > Afficher les informations du compte > Informations d'identification de l'API > API REST (v2.x)", - "gtxMessagingFromHint": "Sur les téléphones mobiles, vos destinataires voient le TPOA affiché comme l'expéditeur du message. Sont autorisés jusqu'à 11 caractères alphanumériques, un shortcode, le longcode local ou les numéros internationaux ({e164}, {e212} ou {e214})", - "Telephone number": "Numéro de téléphone", - "Originator": "Auteur", - "cellsyntOriginator": "Visible sur le téléphone mobile du destinataire en tant qu'expéditeur du message. Les valeurs autorisées et la fonction dépendent du type d'auteur du paramètre.", - "Destination": "Destination", - "Allow Long SMS": "Autoriser les SMS longs", - "cellsyntSplitLongMessages": "Divisez les longs messages en 6 parties maximum. 153 x 6 = 918 caractères.", - "max 15 digits": "maximum 15 chiffres", - "max 11 alphanumeric characters": "maximum 11 caractères alphanumériques", - "Originator type": "Type d'auteur", - "Alphanumeric (recommended)": "Alphanumérique (recommandé)", - "cellsyntOriginatortypeAlphanumeric": "Chaîne alphanumérique (max 11 caractères alphanumériques). Les destinataires ne peuvent pas répondre au message.", - "cellsyntOriginatortypeNumeric": "Valeur numérique (maximum 15 chiffres) avec numéro de téléphone au format international sans 00 en tête (par exemple, le numéro britannique 07920 110 000 doit être défini comme 447920110000). Les destinataires peuvent répondre au message.", - "cellsyntDestination": "Numéro de téléphone du destinataire au format international commençant par 00 suivi de l'indicatif du pays, par ex. 00447920110000 pour le numéro britannique 07920 110 000 (max 17 chiffres au total). Max 25 000 destinataires séparés par des virgules par requête HTTP.", - "callMeBotGet": "Ici, vous pouvez générer un point de terminaison pour {0}, {1} et {2}. Gardez à l’esprit que votre tarif peut être limité. Les limites de débit semblent être : {3}", - "wayToGetWhapiUrlAndToken": "Vous pouvez obtenir l'URL de l'API et le jeton en allant dans votre canal souhaité à partir de {0}", - "whapiRecipient": "Numéro de téléphone / ID de contact / ID de groupe", - "API URL": "URL de l'API", - "wayToWriteWhapiRecipient": "Le numéro de téléphone avec le préfixe international, mais sans le signe plus au début ({0}), l'ID de contact ({1}) ou l'ID de groupe ({2}).", - "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Entrez le nom d'hôte du serveur auquel vous souhaitez vous connecter ou {localhost} si vous avez l'intention d'utiliser un {local_mta}", - "locally configured mail transfer agent": "Agent de transfert de courrier configuré localement", - "Don't mention people": "Ne mentionne pas les personnes", - "Mention group": "Mentionne {groupe}", - "Mentioning": "Mentionner", - "senderSevenIO": "Numéro ou nom d'envoi", - "receiverSevenIO": "Numéro de réception", - "apiKeySevenIO": "Clé API SevenIO", - "wayToGetSevenIOApiKey": "Visitez le tableau de bord sous app.seven.io > développeur > clé api > le bouton d'ajout vert", - "receiverInfoSevenIO": "Si le numéro de réception n'est pas situé en Allemagne, vous devez ajouter l'indicatif du pays devant le numéro (par exemple, pour l'indicatif de pays 1 des États-Unis, utilisez 117612121212 au lieu de 017612121212)", - "Host URL": "URL de l'hôte", - "Select message type": "Sélectionnez le type de message", - "Create new forum post": "Créer un nouveau message sur le forum", - "postToExistingThread": "Publier sur le fil de discussion / forum existant", - "forumPostName": "Nom du post sur le forum", - "threadForumPostID": "ID du fil / ID du post sur le forum", - "whatHappensAtForumPost": "Créer un nouveau post sur le forum. Cela ne publie PAS de messages dans un post existant. Pour publier dans un post existant, utilisez \"{option}\"", - "wayToGetDiscordThreadId": "Obtenir un ID de fil / post sur le forum est similaire à obtenir un ID de canal. Pour en savoir plus sur la manière d'obtenir des IDs, lisez {0}", - "Send to channel": "Envoyer au canal", - "e.g. {discordThreadID}": "e.g. {discordThreadID}", - "Command": "Commande", - "mongodbCommandDescription": "Exécutez une commande MongoDB sur la base de données. Pour plus d'informations sur les commandes disponibles, consultez la {documentation}", - "Refresh Interval": "Intervalle de rafraîchissement", - "Refresh Interval Description": "La page de statut effectuera un rafraîchissement complet du site toutes les {0} secondes", - "ignoreTLSErrorGeneral": "Ignorer l'erreur TLS/SSL pour la connexion", - "Bitrix24 Webhook URL": "URL du Webhook Bitrix24", - "wayToGetBitrix24Webhook": "Vous pouvez créer un webhook en suivant les étapes de {0}", - "bitrix24SupportUserID": "Entrez votre identifiant d'utilisateur dans Bitrix24. Vous pouvez trouver l'ID à partir du lien en allant sur le profil de l'utilisateur.", - "smspartnerPhoneNumber": "Numéro(s) de téléphone", - "smspartnerPhoneNumberHelptext": "Le numéro doit être au format international {0}, {1}. Plusieurs numéros doivent être séparés par {2}", - "smspartnerSenderName": "Nom de l'expéditeur SMS", - "smspartnerSenderNameInfo": "Doit être compris entre 3 et 11 caractères réguliers", - "smspartnerApiurl": "Vous pouvez trouver votre clé API dans votre tableau de bord à {0}", - "threemaRecipient": "Destinataire", - "threemaRecipientType": "Type de destinataire", - "threemaRecipientTypeIdentity": "Threema-ID", - "threemaRecipientTypeIdentityFormat": "8 caractères", - "threemaRecipientTypePhone": "Numéro de téléphone", - "threemaRecipientTypePhoneFormat": "E.164, sans le signe + initial", - "threemaRecipientTypeEmail": "Adresse email", - "threemaSenderIdentity": "Identifiant de passerelle", - "threemaSenderIdentityFormat": "8 caractères, commence généralement par *", - "threemaApiAuthenticationSecret": "Secret de l'identifiant de la passerelle", - "wayToGetThreemaGateway": "Vous pouvez vous inscrire à Threema Gateway {0}.", - "threemaBasicModeInfo": "Note : Cette intégration utilise Threema Gateway en mode basique (chiffrement basé sur le serveur). Vous pouvez trouver plus de détails {0}.", - "apiKeysDisabledMsg": "Les clés API sont désactivées car l'authentification est désactivée.", - "cacheBusterParam": "Ajoutez le paramètre {0}", - "snmpCommunityStringHelptext": "Cette chaîne fonctionne comme un mot de passe pour authentifier et contrôler l'accès aux appareils compatibles SNMP. Faites-le correspondre à la configuration de votre périphérique SNMP.", - "privateOnesenderDesc": "Assurez-vous que le numéro de téléphone est valide. Pour envoyer un message vers un numéro de téléphone privé, ex : 628123456789", - "groupOnesenderDesc": "Assurez-vous que le GroupID est valide. Pour envoyer un message dans le groupe, ex : 628123456789-342345", - "Optional: Space separated list of scopes": "Facultatif : liste des étendues séparées par des espaces", - "jsonQueryDescription": "Analyser et extraire des données spécifiques de la réponse JSON du serveur en utilisant une requête JSON ou utiliser « $ » pour la réponse brute, si un JSON n'est pas attendu. Le résultat est ensuite comparé à la valeur attendue, en tant que chaînes de caractères. Consultez {0} pour la documentation et utilisez {1} pour expérimenter avec des requêtes.", - "now": "Maintenant", - "time ago": "il y a {0}", - "-year": "-année", - "Json Query Expression": "Expression de requête JSON", - "and": "et", - "cacheBusterParamDescription": "Paramètre généré aléatoirement pour ignorer les caches.", - "Community String": "Chaîne de communauté", - "OID (Object Identifier)": "OID (identifiant d'objet)", - "snmpOIDHelptext": "Entrez l'OID du capteur ou de l'état que vous souhaitez surveiller. Utilisez des outils de gestion de réseau tels que les navigateurs MIB ou le logiciel SNMP si vous n'êtes pas sûr de l'OID.", - "Condition": "Condition", - "SNMP Version": "Version SNMP", - "Please enter a valid OID.": "Veuillez saisir un OID valide.", - "Host Onesender": "Héberger un expéditeur", - "Token Onesender": "Jeton Onesender", - "Recipient Type": "Type de destinataire", - "Private Number": "Numéro privé", - "Group ID": "Identifiant du groupe", - "wayToGetOnesenderUrlandToken": "Vous pouvez obtenir l'URL et le jeton en accédant au site Web Onesender. Plus d'informations {0}", - "Add Remote Browser": "Ajouter un navigateur distant", - "New Group": "Nouveau groupe", - "Group Name": "Nom du groupe", - "OAuth2: Client Credentials": "OAuth2 : informations d'identification du client", - "Authentication Method": "Méthode d'authentification", - "Authorization Header": "En-tête d'autorisation", - "Form Data Body": "Corps des données du formulaire", - "OAuth Token URL": "URL du jeton OAuth", - "Client ID": "Identifiant client", - "Client Secret": "Secret client", - "OAuth Scope": "Portée OAuth", - "Go back to home page.": "Retournez à la page d'accueil.", - "No tags found.": "Aucune étiquettes trouvée.", - "Lost connection to the socket server.": "Connexion au serveur de socket perdue.", - "Cannot connect to the socket server.": "Impossible de se connecter au serveur de socket.", - "SIGNL4": "SIGNL4", - "SIGNL4 Webhook URL": "URL du webhook SIGNL4", - "signl4Docs": "Vous pouvez trouver plus d'informations sur la façon de configurer SIGNL4 et sur la façon d'obtenir l'URL du webhook SIGNL4 dans le {0}.", - "Conditions": "Conditions", - "conditionAdd": "Ajouter une condition", - "conditionDelete": "Supprimer la condition", - "conditionAddGroup": "Ajouter un groupe", - "conditionDeleteGroup": "Supprimer le groupe", - "conditionValuePlaceholder": "Valeur", - "equals": "est égal", - "not equals": "pas égal", - "contains": "contient", - "not contains": "ne contient pas", - "starts with": "commence par", - "not starts with": "ne commence pas par", - "ends with": "se termine par", - "not ends with": "ne se termine pas par", - "less than": "moins que", - "greater than": "supérieur à", - "less than or equal to": "inférieur ou égal à", - "greater than or equal to": "supérieur ou égal à", - "record": "enregistrer", - "shrinkDatabaseDescriptionSqlite": "Déclencher la commande {vacuum} pour la base de données SQLite. {auto_vacuum} est déjà activé, mais cela ne défragmente pas la base de données ni ne réorganise les pages individuelles de la base de données de la même manière que la commande {vacuum}." -} +{ + "languageName": "Français", + "checkEverySecond": "Vérifier toutes les {0} secondes", + "retryCheckEverySecond": "Réessayer toutes les {0} secondes", + "resendEveryXTimes": "Renvoyez toutes les {0} fois", + "resendDisabled": "Renvoi désactivé", + "retriesDescription": "Nombre d'essais avant que le service ne soit déclaré hors ligne et qu'une notification soit envoyée", + "ignoreTLSError": "Ignorer les erreurs liées au certificat SSL/TLS", + "upsideDownModeDescription": "Si le service est en ligne, il sera alors noté hors ligne et vice-versa.", + "maxRedirectDescription": "Nombre maximal de redirections avant que le service ne soit marqué comme hors ligne.", + "enableGRPCTls": "Autoriser l'envoi d'une requête gRPC avec une connexion TLS", + "grpcMethodDescription": "Le nom de la méthode est converti au format CamelCase tel que sayHello, check, etc.", + "acceptedStatusCodesDescription": "Codes HTTP qui considèrent le service comme étant disponible.", + "Maintenance": "Maintenance", + "statusMaintenance": "Maintenance", + "Schedule maintenance": "Planifier la maintenance", + "Affected Monitors": "Sondes concernées", + "Pick Affected Monitors...": "Sélectionner les sondes concernées…", + "Start of maintenance": "Début de la maintenance", + "All Status Pages": "Toutes les pages d'état", + "Select status pages...": "Sélectionner les pages d'état…", + "recurringIntervalMessage": "Exécuter une fois par jour | Exécuter une fois tous les {0} jours", + "affectedMonitorsDescription": "Sélectionnez les sondes concernées par la maintenance en cours", + "affectedStatusPages": "Afficher ce message de maintenance sur les pages d'état sélectionnées", + "atLeastOneMonitor": "Sélectionnez au moins une sonde concernée", + "passwordNotMatchMsg": "Les mots de passe ne correspondent pas.", + "notificationDescription": "Une fois ajoutée, vous devez l'activer manuellement dans les paramètres de vos hôtes.", + "keywordDescription": "Le mot clé sera recherché dans la réponse HTML/JSON reçue du site internet.", + "pauseDashboardHome": "En pause", + "deleteMonitorMsg": "Êtes-vous sûr de vouloir supprimer cette sonde ?", + "deleteMaintenanceMsg": "Voulez-vous vraiment supprimer cette maintenance ?", + "deleteNotificationMsg": "Êtes-vous sûr de vouloir supprimer ce type de notification pour toutes les sondes ?", + "dnsPortDescription": "Port du serveur DNS. La valeur par défaut est 53. Vous pouvez modifier le port à tout moment.", + "resolverserverDescription": "Le DNS de Cloudflare est utilisé par défaut, mais vous pouvez le changer si vous le souhaitez.", + "rrtypeDescription": "Veuillez sélectionner un type d'enregistrement DNS", + "pauseMonitorMsg": "Êtes-vous sûr de vouloir mettre en pause cette sonde ?", + "enableDefaultNotificationDescription": "Pour chaque nouvelle sonde, cette notification sera activée par défaut. Vous pouvez toujours désactiver la notification séparément pour chaque sonde.", + "clearEventsMsg": "Êtes-vous sûr de vouloir supprimer tous les événements pour cette sonde ?", + "clearHeartbeatsMsg": "Êtes-vous sûr de vouloir supprimer toutes les vérifications pour cette sonde ?", + "confirmClearStatisticsMsg": "Êtes-vous sûr de vouloir supprimer toutes les statistiques ?", + "importHandleDescription": "Choisissez « Ignorer l'existant » si vous voulez ignorer chaque sonde ou notification portant le même nom. L'option « Écraser » supprime toutes les sondes et notifications existantes.", + "confirmImportMsg": "Êtes-vous sûr de vouloir importer la sauvegarde ? Veuillez vous assurer que vous avez sélectionné la bonne option d'importation.", + "twoFAVerifyLabel": "Veuillez saisir votre jeton pour vérifier que le système 2FA fonctionne :", + "tokenValidSettingsMsg": "Le jeton est valide. Vous pouvez maintenant sauvegarder les paramètres de double authentification (2FA).", + "confirmEnableTwoFAMsg": "Êtes-vous sûr de vouloir activer la double authentification (2FA) ?", + "confirmDisableTwoFAMsg": "Êtes-vous sûr de vouloir désactiver la double authentification (2FA) ?", + "Settings": "Paramètres", + "Dashboard": "Tableau de bord", + "New Update": "Mise à jour disponible", + "Language": "Langue", + "Appearance": "Apparence", + "Theme": "Thème", + "General": "Général", + "Primary Base URL": "URL principale", + "Version": "Version", + "Check Update On GitHub": "Consulter les mises à jour sur GitHub", + "List": "Lister", + "Add": "Ajouter", + "Add New Monitor": "Ajouter une nouvelle sonde", + "Quick Stats": "Résumé", + "Up": "En ligne", + "Down": "Hors ligne", + "Pending": "En attente", + "Unknown": "Inconnu", + "Pause": "En pause", + "Name": "Nom", + "Status": "État", + "DateTime": "Heure", + "Message": "Messages", + "No important events": "Aucun évènement important", + "Resume": "Reprendre", + "Edit": "Modifier", + "Delete": "Supprimer", + "Current": "Actuellement", + "Uptime": "Disponibilité", + "Cert Exp.": "Expiration Cert SSL.", + "day": "jour | jours", + "-day": "-jours", + "hour": "heure", + "-hour": "-heures", + "Response": "Temps de réponse", + "Ping": "Ping", + "Monitor Type": "Type de sonde", + "Keyword": "Mot-clé", + "Friendly Name": "Nom d'affichage", + "URL": "URL", + "Hostname": "Nom d'hôte / adresse IP", + "Port": "Port", + "Heartbeat Interval": "Intervalle de vérification", + "Retries": "Essais", + "Heartbeat Retry Interval": "Intervalle de ré-essai", + "Resend Notification if Down X times consecutively": "Renvoyer la notification si hors ligne X fois consécutivement", + "Advanced": "Avancé", + "Upside Down Mode": "Mode inversé", + "Max. Redirects": "Nombre maximum de redirections", + "Accepted Status Codes": "Codes HTTP acceptés", + "Push URL": "Push URL", + "needPushEvery": "Vous devez appeler cette URL toutes les {0} secondes.", + "pushOptionalParams": "Paramètres facultatifs : {0}", + "Save": "Sauvegarder", + "Notifications": "Notifications", + "Not available, please setup.": "Non disponible, merci de le configurer.", + "Setup Notification": "Créer une notification", + "Light": "Clair", + "Dark": "Sombre", + "Auto": "Automatique", + "Theme - Heartbeat Bar": "Thème - barres d'état", + "Normal": "Normal", + "Bottom": "En dessous", + "None": "Aucun", + "Timezone": "Fuseau horaire", + "Search Engine Visibility": "Visibilité par les moteurs de recherche", + "Allow indexing": "Autoriser l'indexation", + "Discourage search engines from indexing site": "Refuser l'indexation", + "Change Password": "Changer le mot de passe", + "Current Password": "Mot de passe actuel", + "New Password": "Nouveau mot de passe", + "Repeat New Password": "Répéter votre nouveau mot de passe", + "Update Password": "Mettre à jour le mot de passe", + "Disable Auth": "Désactiver l'authentification", + "Enable Auth": "Activer l'authentification", + "disableauth.message1": "Voulez-vous vraiment {disableAuth} ?", + "disable authentication": "désactiver l'authentification", + "disableauth.message2": "Cette fonctionnalité est conçue pour les scénarios {intendThirdPartyAuth} devant Uptime Kuma, comme Cloudflare Access, Authelia ou d'autres mécanismes d'authentification.", + "where you intend to implement third-party authentication": "où vous avez l'intention d'implémenter une authentification tierce", + "Please use this option carefully!": "Veuillez utiliser cette option avec précaution !", + "Logout": "Déconnexion", + "Leave": "Quitter", + "I understand, please disable": "Je comprends, désactivez-la", + "Confirm": "Confirmer", + "Yes": "Oui", + "No": "Non", + "Username": "Nom d'utilisateur", + "Password": "Mot de passe", + "Remember me": "Se souvenir de moi", + "Login": "Connexion", + "No Monitors, please": "Pas de sondes, veuillez", + "add one": "en ajouter une", + "Notification Type": "Type de notification", + "Email": "Courriel", + "Test": "Tester", + "Certificate Info": "Informations sur le certificat SSL", + "Resolver Server": "Serveur DNS utilisé", + "Resource Record Type": "Type d'enregistrement DNS recherché", + "Last Result": "Dernier résultat", + "Create your admin account": "Créer votre compte administrateur", + "Repeat Password": "Répéter le mot de passe", + "Import Backup": "Importation de la sauvegarde", + "Export Backup": "Exportation de la sauvegarde", + "Export": "Exporter", + "Import": "Importer", + "respTime": "Temps de réponse (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Activé par défaut", + "Apply on all existing monitors": "Appliquer sur toutes les sondes existantes", + "Create": "Créer", + "Clear Data": "Effacer les données", + "Events": "Événements", + "Heartbeats": "Vérifications", + "Auto Get": "Récupérer automatiquement", + "backupDescription": "Vous pouvez sauvegarder toutes les sondes et toutes les notifications dans un fichier JSON.", + "backupDescription2": "PS : Les données relatives à l'historique et aux événements ne sont pas incluses.", + "backupDescription3": "Les données sensibles telles que les jetons de notification sont incluses dans le fichier d'exportation, veuillez les conserver soigneusement.", + "alertNoFile": "Veuillez sélectionner un fichier à importer.", + "alertWrongFileType": "Veuillez sélectionner un fichier JSON à importer.", + "Clear all statistics": "Effacer toutes les statistiques", + "Skip existing": "Sauter l'existant", + "Overwrite": "Écraser", + "Options": "Options", + "Keep both": "Garder les deux", + "Verify Token": "Vérifier le jeton", + "Setup 2FA": "Configurer la double authentification (2FA)", + "Enable 2FA": "Activer la double authentification (2FA)", + "Disable 2FA": "Désactiver la double authentification (2FA)", + "2FA Settings": "Paramètres de la double authentification (2FA)", + "Two Factor Authentication": "Double authentification", + "Active": "Actif", + "Inactive": "Inactif", + "Token": "Jeton", + "Show URI": "Afficher l'URI", + "Tags": "Étiquettes", + "Add New below or Select...": "Ajoutez-en un en dessous ou sélectionnez-le ici…", + "Tag with this name already exist.": "Une étiquette portant ce nom existe déjà.", + "Tag with this value already exist.": "Une étiquette avec cette valeur existe déjà.", + "color": "Couleur", + "value (optional)": "Valeur (facultatif)", + "Gray": "Gris", + "Red": "Rouge", + "Orange": "Orange", + "Green": "Vert", + "Blue": "Bleu", + "Indigo": "Indigo", + "Purple": "Violet", + "Pink": "Rose", + "Search...": "Rechercher…", + "Avg. Ping": "Ping moyen", + "Avg. Response": "Réponse moyenne", + "Entry Page": "Page d'accueil", + "statusPageNothing": "Rien ici, veuillez ajouter un groupe ou une sonde.", + "No Services": "Aucun service", + "All Systems Operational": "Tous les systèmes sont opérationnels", + "Partially Degraded Service": "Service partiellement dégradé", + "Degraded Service": "Service dégradé", + "Add Group": "Ajouter un groupe", + "Add a monitor": "Ajouter une sonde", + "Edit Status Page": "Modifier la page de statut", + "Go to Dashboard": "Accéder au tableau de bord", + "Status Page": "Page de statut", + "Status Pages": "Pages de statut", + "defaultNotificationName": "Ma notification {notification} numéro ({number})", + "here": "ici", + "Required": "Requis", + "telegram": "Telegram", + "ZohoCliq": "ZohoCliq", + "Bot Token": "Jeton du robot", + "wayToGetTelegramToken": "Vous pouvez obtenir un token depuis {0}.", + "Chat ID": "Chat ID", + "supportTelegramChatID": "Prend en charge les messages privés / messages de groupe / l'ID d'un salon", + "wayToGetTelegramChatID": "Vous pouvez obtenir le Chat ID en envoyant un message avec le robot puis en récupérant l'URL pour voir l'ID du salon :", + "YOUR BOT TOKEN HERE": "VOTRE JETON ROBOT ICI", + "chatIDNotFound": "ID du salon introuvable, envoyez un message via le robot avant", + "webhook": "Webhook", + "Post URL": "Post URL", + "Content Type": "Type de contenu", + "webhookJsonDesc": "{0} est bien pour tous les serveurs HTTP modernes comme Express.js", + "webhookFormDataDesc": "{multipart} est bien pour du PHP. Le JSON aura besoin d'être parsé avec {decodeFunction}", + "webhookAdditionalHeadersTitle": "En-têtes supplémentaires", + "webhookAdditionalHeadersDesc": "Définit des en-têtes supplémentaires envoyés avec le webhook. Chaque en-tête doit être défini comme une clé/valeur JSON.", + "smtp": "Courriel (SMTP)", + "secureOptionNone": "Aucun / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Ignorer les erreurs TLS", + "From Email": "Depuis l'adresse", + "emailCustomSubject": "Objet personnalisé", + "To Email": "Vers l'adresse", + "smtpCC": "CC", + "smtpBCC": "CCI", + "discord": "Discord", + "Discord Webhook URL": "URL vers le webhook Discord", + "wayToGetDiscordURL": "Vous pouvez l'obtenir en allant dans « Paramètres du serveur » -> « Intégrations » -> « Consulter les webhooks» -> « Nouveau Webhook »", + "Bot Display Name": "Nom du robot (affiché)", + "Prefix Custom Message": "Préfixe du message personnalisé", + "Hello @everyone is...": "Bonjour {'@'}everyone il…", + "teams": "Microsoft Teams", + "Webhook URL": "URL vers le webhook", + "wayToGetTeamsURL": "Vous pouvez apprendre comment créer une URL Webhook {0}.", + "wayToGetZohoCliqURL": "Vous pouvez apprendre comment créer une URL Webhook {0}.", + "signal": "Signal", + "Number": "Numéro", + "Recipients": "Destinataires", + "needSignalAPI": "Vous avez besoin d'un client Signal avec l'API REST.", + "wayToCheckSignalURL": "Vous pouvez regarder l'URL suivante pour savoir comment la mettre en place :", + "signalImportant": "IMPORTANT : Vous ne pouvez pas mixer les groupes et les numéros en destinataires !", + "gotify": "Gotify", + "Application Token": "Jeton d'application", + "Server URL": "URL du serveur", + "Priority": "Priorité", + "slack": "Slack", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Nom du salon", + "Uptime Kuma URL": "URL vers Uptime Kuma", + "aboutWebhooks": "Plus d'informations sur les webhooks ici : {0}", + "aboutChannelName": "Mettez le nom du salon dans {0} dans « Nom du salon » si vous voulez contourner le salon webhook. Ex. : #autre-salon", + "aboutKumaURL": "Si vous laissez l'URL d'Uptime Kuma vierge, elle redirigera vers la page du projet GitHub.", + "emojiCheatSheet": "Aide sur les émojis : {0}", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "Push par Techulus", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (prend en charge plus de 50 services de notification)", + "GoogleChat": "Google Chat (Google Workspace uniquement)", + "pushbullet": "Pushbullet", + "Kook": "Kook", + "wayToGetKookBotToken": "Créez une application et récupérer le jeton de robot à l'addresse {0}", + "wayToGetKookGuildID": "Passez en « mode développeur » dans les paramètres de Kook, et cliquez droit sur le Guild pour obtenir son identifiant", + "Guild ID": "Identifiant de Guild", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "Clé d'utilisateur", + "Device": "Appareil", + "Message Title": "Titre du message", + "Notification Sound": "Son de notification", + "More info on:": "Plus d'informations sur : {0}", + "pushoverDesc1": "Priorité d'urgence (2) a un délai par défaut de 30 secondes entre les tentatives et expire après une heure.", + "pushoverDesc2": "Si vous voulez envoyer des notifications sur différents appareils, remplissez le champ « Appareil ».", + "SMS Type": "Type de SMS", + "octopushTypePremium": "Premium (rapide - recommandé pour les alertes)", + "octopushTypeLowCost": "Économique (lent, bloqué de temps en temps par l'opérateur)", + "checkPrice": "Vérification {0} tarifs :", + "apiCredentials": "Identifiants de l'API", + "octopushLegacyHint": "Voulez-vous utiliser l'ancienne version d'Octopush (2011-2020) ou la nouvelle version ?", + "Check octopush prices": "Vérifier les prix d'Octopush {0}.", + "octopushPhoneNumber": "Numéro de téléphone (format international, ex. : +33612345678) ", + "octopushSMSSender": "Nom de l'expéditeur : 3-11 caractères alphanumériques avec espace (a-zA-Z0-9)", + "LunaSea Device ID": "Identifiant d'appareil LunaSea", + "Apprise URL": "URL d'Apprise", + "Example:": "Exemple : {0}", + "Read more:": "En savoir plus : {0}", + "Status:": "État : {0}", + "Read more": "En savoir plus", + "appriseInstalled": "Apprise est installé.", + "appriseNotInstalled": "Apprise n'est pas installé. {0}", + "Access Token": "Jeton d'accès", + "Channel access token": "Jeton d'accès au canal", + "Line Developers Console": "Console développeurs Line", + "lineDevConsoleTo": "Console développeurs Line - {0}", + "Basic Settings": "Paramètres de base", + "User ID": "Identifiant utilisateur", + "Messaging API": "Messaging API", + "wayToGetLineChannelToken": "Premièrement accédez à {0}, créez un provider et définissez un type de salon à «Messaging API». Vous obtiendrez alors le jeton d'accès du salon et l'identifiant utilisateur demandés.", + "Icon URL": "URL vers l'icône", + "aboutIconURL": "Vous pouvez mettre un lien vers une image dans « URL vers l'icône » pour remplacer l'image de profil par défaut. Elle ne sera utilisé que si « Icône émoji » n'est pas défini.", + "aboutMattermostChannelName": "Vous pouvez remplacer le salon par défaut que le webhook utilise en mettant le nom du salon dans le champ « Nom du salon ». Vous aurez besoin de l'activer depuis les paramètres de Mattermost. Ex. : #autre-salon", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - Bon marché mais lent et souvent surchargé. Limité uniquement aux destinataires polonais.", + "promosmsTypeFlash": "SMS FLASH - Le message sera automatiquement affiché sur l'appareil du destinataire. Limité uniquement aux destinataires Polonais.", + "promosmsTypeFull": "SMS FULL - Version premium des SMS. Vous pouvez mettre le nom de l'expéditeur (vous devez l'enregistrer au préalable). Fiable pour les alertes.", + "promosmsTypeSpeed": "SMS SPEED - Priorité élevée pour le système. Très rapide et fiable mais coûteux (environ le double du prix d'un SMS FULL).", + "promosmsPhoneNumber": "Numéro de téléphone (pour les destinataires polonais, vous pouvez ignorer l'indicatif international)", + "promosmsSMSSender": "Nom de l'expéditeur du SMS : Nom pré-enregistré ou l'un de base : InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "L'URL du serveur (avec http(s):// et le port de manière facultative)", + "Internal Room Id": "ID de la salle interne", + "matrixDesc1": "Vous pouvez trouver l'ID de salle interne en regardant dans la section avancée des paramètres dans le client Matrix. C'est censé ressembler à !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Il est fortement recommandé de créer un nouvel utilisateur et de ne pas utiliser le jeton d'accès de votre propre utilisateur Matrix, car il vous donnera un accès complet à votre compte et à toutes les salles que vous avez rejointes. Pour cela, créez un nouvel utilisateur et invitez-le uniquement dans la salle dans laquelle vous souhaitez recevoir la notification. Vous pouvez obtenir le jeton d'accès en exécutant {0}", + "Method": "Méthode", + "Body": "Corps", + "Headers": "En-têtes", + "PushUrl": "URL Push", + "HeadersInvalidFormat": "Les en-têtes de la requête ne sont pas dans un format JSON valide : ", + "BodyInvalidFormat": "Le corps de la requête n'est pas dans un format JSON valide : ", + "Monitor History": "Historique de la sonde", + "clearDataOlderThan": "Conserver l'historique des données de la sonde durant {0} jours.", + "PasswordsDoNotMatch": "Les mots de passe ne correspondent pas.", + "records": "enregistrements", + "One record": "Un enregistrement", + "steamApiKeyDescription": "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici : ", + "Current User": "Utilisateur actuel", + "topic": "Sujet", + "topicExplanation": "Topic MQTT à surveiller", + "successMessage": "Message de réussite", + "successMessageExplanation": "Message MQTT qui sera considéré comme un succès", + "recent": "Récent", + "Done": "Fait", + "Info": "Info", + "Security": "Sécurité", + "Steam API Key": "Clé d'API Steam", + "Shrink Database": "Réduire la base de données", + "Pick a RR-Type...": "Choisissez un type d'enregistrement…", + "Pick Accepted Status Codes...": "Choisissez les codes de statut acceptés…", + "Default": "Défaut", + "HTTP Options": "Options HTTP", + "Create Incident": "Créer un incident", + "Title": "Titre", + "Content": "Contenu", + "Style": "Style", + "info": "Info", + "warning": "Attention", + "danger": "Danger", + "error": "Erreur", + "critical": "Critique", + "primary": "Primaire", + "light": "Blanc", + "dark": "Noir", + "Post": "Post", + "Please input title and content": "Veuillez saisir le titre et le contenu", + "Created": "Créé", + "Last Updated": "Dernière mise à jour", + "Unpin": "Retirer", + "Switch to Light Theme": "Passer au thème clair", + "Switch to Dark Theme": "Passer au thème sombre", + "Show Tags": "Afficher les étiquettes", + "Hide Tags": "Masquer les étiquettes", + "Description": "Description", + "No monitors available.": "Aucune sonde disponible.", + "Add one": "En rajouter une", + "No Monitors": "Aucune sonde", + "Untitled Group": "Groupe sans titre", + "Services": "Services", + "Discard": "Abandonner", + "Cancel": "Annuler", + "Powered by": "Propulsé par", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "Nom d'utilisateur de l'API (incl. webapi_ prefix)", + "serwersmsAPIPassword": "Mot de passe API", + "serwersmsPhoneNumber": "Numéro de téléphone", + "serwersmsSenderName": "Nom de l'expéditeur du SMS (enregistré via le portail client)", + "smseagle": "SMSEagle", + "smseagleTo": "Numéro(s) de téléphone", + "smseagleGroup": "Nom(s) de groupe(s) de répertoire", + "smseagleContact": "Nom(s) de contact du répertoire", + "smseagleRecipientType": "Type de destinataire", + "smseagleRecipient": "Destinataire(s) (les multiples doivent être séparés par une virgule)", + "smseagleToken": "Jeton d'accès à l'API", + "smseagleUrl": "L'URL de votre appareil SMSEagle", + "smseagleEncoding": "Envoyer en Unicode", + "smseaglePriority": "Priorité des messages (0-9, par défaut = 0)", + "stackfield": "Stackfield", + "Customize": "Personnaliser", + "Custom Footer": "Pied de page personnalisé", + "Custom CSS": "CSS personnalisé", + "smtpDkimSettings": "Paramètres DKIM", + "smtpDkimDesc": "Veuillez vous référer au Nodemailer DKIM {0} pour l'utilisation.", + "documentation": "documentation", + "smtpDkimDomain": "Nom de domaine", + "smtpDkimKeySelector": "Sélecteur de clé", + "smtpDkimPrivateKey": "Clé privée", + "smtpDkimHashAlgo": "Algorithme de hachage (facultatif)", + "smtpDkimheaderFieldNames": "Clés d'en-tête à signer (facultatif)", + "smtpDkimskipFields": "Clés d'en-tête à ne pas signer (facultatif)", + "wayToGetPagerDutyKey": "Vous pouvez l'obtenir en allant dans Service -> Annuaire des services -> (sélectionner un service) -> Intégrations -> Ajouter une intégration. Ici, vous pouvez rechercher \"Events API V2\". Plus d'infos {0}", + "Integration Key": "Clé d'intégration", + "Integration URL": "URL d'intégration", + "Auto resolve or acknowledged": "Résolution automatique ou accusé de réception", + "do nothing": "ne fais rien", + "auto acknowledged": "accusé de réception automatique", + "auto resolve": "résolution automatique", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpoint", + "alertaEnvironment": "Environnement", + "alertaApiKey": "Clé de l'API", + "alertaAlertState": "État de l'alerte", + "alertaRecoverState": "État de récupération", + "deleteStatusPageMsg": "Voulez-vous vraiment supprimer cette page d'état ?", + "Proxies": "Proxies", + "default": "Défaut", + "enabled": "Activé", + "setAsDefault": "Définir par défaut", + "deleteProxyMsg": "Voulez-vous vraiment supprimer ce proxy pour toutes les sondes ?", + "proxyDescription": "Les proxies doivent être affectés à une sonde pour fonctionner.", + "enableProxyDescription": "Ce proxy n'aura pas d'effet sur les demandes de sonde tant qu'il n'est pas activé. Vous pouvez contrôler la désactivation temporaire du proxy de toutes les sondes en fonction de l'état d'activation.", + "setAsDefaultProxyDescription": "Ce proxy sera activé par défaut pour les nouvelles sondes. Vous pouvez toujours désactiver le proxy séparément pour chaque sonde.", + "Certificate Chain": "Chaîne de certificats", + "Valid": "Valide", + "Invalid": "Non valide", + "AccessKeyId": "ID de clé d'accès", + "SecretAccessKey": "Clé secrète d'accès", + "PhoneNumbers": "Numéros de téléphone", + "TemplateCode": "Modèle de code", + "SignName": "Signature", + "Sms template must contain parameters: ": "Le modèle de SMS doit contenir des paramètres : ", + "Bark Endpoint": "Endpoint Bark", + "Bark Group": "Groupe Bark", + "Bark Sound": "Son Bark", + "WebHookUrl": "WebHookUrl", + "SecretKey": "Clé secrète", + "For safety, must use secret key": "Par sécurité, utilisation obligatoire de la clé secrète", + "Device Token": "Jeton d'appareil", + "Platform": "Plateforme", + "Huawei": "Huawei", + "High": "Haute", + "Retry": "Recommencez", + "Topic": "Topic", + "WeCom Bot Key": "Clé de robot WeCom", + "Setup Proxy": "Configurer le proxy", + "Proxy Protocol": "Protocole proxy", + "Proxy Server": "Serveur proxy", + "Proxy server has authentication": "Une authentification est nécessaire pour le serveur proxy", + "User": "Utilisateur", + "Installed": "Installé", + "Not installed": "Non installé", + "Running": "En cours", + "Not running": "Ne fonctionne pas", + "Remove Token": "Supprimer le jeton", + "Start": "Démarrer", + "Stop": "Arrêter", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Ajouter une page de statut", + "Slug": "Chemin", + "Accept characters:": "Caractères acceptés :", + "startOrEndWithOnly": "Commence uniquement par {0}", + "No consecutive dashes": "Pas de double tirets", + "Next": "Continuer", + "The slug is already taken. Please choose another slug.": "Un chemin existe déjà. Veuillez en choisir un autre.", + "No Proxy": "Pas de proxy", + "Authentication": "Authentification", + "HTTP Basic Auth": "Authentification de base HTTP", + "New Status Page": "Nouvelle page de statut", + "Page Not Found": "Page non trouvée", + "Reverse Proxy": "Proxy inverse", + "Backup": "Sauvegarde", + "About": "À propos", + "wayToGetCloudflaredURL": "(télécharger cloudflared depuis {0})", + "cloudflareWebsite": "Site web de Cloudflare", + "Message:": "Message :", + "Don't know how to get the token? Please read the guide:": "Vous ne savez pas comment obtenir le jeton ? Lisez le guide :", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "La connexion actuelle peut être perdue si vous vous connectez actuellement via un tunnel Cloudflare. Êtes-vous sûr de vouloir l'arrêter ? Tapez votre mot de passe actuel pour le confirmer.", + "HTTP Headers": "En-têtes HTTP", + "Trust Proxy": "Proxy de confiance", + "Other Software": "Autres logiciels", + "For example: nginx, Apache and Traefik.": "Par exemple : nginx, Apache et Traefik.", + "Please read": "Veuillez lire", + "Subject:": "Objet :", + "Valid To:": "Valable jusqu'au :", + "Days Remaining:": "Jours restants :", + "Issuer:": "Émetteur :", + "Fingerprint:": "Empreinte :", + "No status pages": "Aucune page de statut", + "Domain Name Expiry Notification": "Notification d'expiration du nom de domaine", + "Proxy": "Proxy", + "Date Created": "Date de création", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "Adresse HTTP OneBot", + "onebotMessageType": "Type de message OneBot", + "onebotGroupMessage": "Groupe", + "onebotPrivateMessage": "Privé", + "onebotUserOrGroupId": "ID de groupe/utilisateur", + "onebotSafetyTips": "Pour des raisons de sécurité, vous devez définir un jeton d'accès", + "PushDeer Key": "Clé PushDeer", + "Footer Text": "Texte de pied de page", + "Show Powered By": "Afficher « Propulsé par »", + "Domain Names": "Noms de domaine", + "signedInDisp": "Connecté en tant que {0}", + "signedInDispDisabled": "Authentification désactivée.", + "RadiusSecret": "Radius Secret", + "RadiusSecretDescription": "Secret partagé entre le client et le serveur", + "RadiusCalledStationId": "Identifiant de la station appelée", + "RadiusCalledStationIdDescription": "Identifiant de l'appareil appelé", + "RadiusCallingStationId": "Identifiant de la station appelante", + "RadiusCallingStationIdDescription": "Identifiant de l'appareil appelant", + "Certificate Expiry Notification": "Notification d'expiration du certificat", + "API Username": "Nom d'utilisateur de l'API", + "API Key": "Clé API", + "Recipient Number": "Numéro du destinataire", + "From Name/Number": "De nom/numéro", + "Leave blank to use a shared sender number.": "Laisser vide pour utiliser un numéro d'expéditeur partagé.", + "Octopush API Version": "Version de l'API Octopush", + "Legacy Octopush-DM": "Ancien Octopush-DM", + "endpoint": "endpoint", + "octopushAPIKey": "\"Clé API\" à partir des informations d'identification de l'API HTTP dans le panneau de configuration", + "octopushLogin": "\"Identifiant\" à partir des informations d'identification de l'API HTTP dans le panneau de configuration", + "promosmsLogin": "Nom de connexion API", + "promosmsPassword": "Mot de passe API", + "pushoversounds pushover": "Pushover (par défaut)", + "pushoversounds bike": "Vélo", + "pushoversounds bugle": "Clairon", + "pushoversounds cashregister": "Caisse enregistreuse", + "pushoversounds classical": "Classique", + "pushoversounds cosmic": "Cosmique", + "pushoversounds falling": "Chute", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Arrivée", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "Magique", + "pushoversounds mechanical": "Mécanique", + "pushoversounds pianobar": "Piano-bar", + "pushoversounds siren": "Sirène", + "pushoversounds spacealarm": "Alarme spatiale", + "pushoversounds tugboat": "Remorqueur", + "pushoversounds alien": "Alarme alienne (version longue)", + "pushoversounds climb": "Escalade (version longue)", + "pushoversounds persistent": "Persistent (version longue)", + "pushoversounds echo": "Pushover Echo (version longue)", + "pushoversounds updown": "Up Down (version longue)", + "pushoversounds vibrate": "Vibration seulement", + "pushoversounds none": "Aucun (silencieux)", + "pushyAPIKey": "Clé API secrète", + "pushyToken": "Jeton d'appareil", + "Show update if available": "Afficher la mise à jour si disponible", + "Also check beta release": "Vérifiez également la version bêta", + "Using a Reverse Proxy?": "Utiliser un proxy inverse ?", + "Check how to config it for WebSocket": "Vérifier comment le configurer pour WebSocket", + "Steam Game Server": "Serveur de jeu Steam", + "Most likely causes:": "Causes les plus probables :", + "The resource is no longer available.": "La ressource n'est plus disponible.", + "There might be a typing error in the address.": "Il se peut qu'il y ait une erreur de frappe dans l'adresse.", + "What you can try:": "Ce que vous pouvez essayer :", + "Retype the address.": "Retaper l'adresse.", + "Go back to the previous page.": "Retourner à la page précédente.", + "Coming Soon": "Prochainement", + "wayToGetClickSendSMSToken": "Vous pouvez obtenir le nom d'utilisateur API et la clé API à partir de {0} .", + "Connection String": "Chaîne de connexion", + "Query": "Requête", + "settingsCertificateExpiry": "Expiration du certificat TLS", + "certificationExpiryDescription": "Les sondes HTTPS émettent une notification lorsque le certificat TLS expire dans :", + "Setup Docker Host": "Configurer l'hôte Docker", + "Connection Type": "Type de connexion", + "Docker Daemon": "Deamon Docker", + "deleteDockerHostMsg": "Voulez-vous vraiment supprimer cet hôte Docker pour toutes les sondes ?", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "Conteneur Docker", + "Container Name / ID": "Nom / ID du conteneur", + "Docker Host": "Hôte Docker", + "Docker Hosts": "Hôtes Docker", + "ntfy Topic": "Topic ntfy", + "Domain": "Domaine", + "Workstation": "Poste de travail", + "disableCloudflaredNoAuthMsg": "Vous êtes en mode No Auth, un mot de passe n'est pas nécessaire.", + "trustProxyDescription": "Faire confiance aux en-têtes 'X-Forwarded-*'. Si vous souhaitez obtenir la bonne adresse IP client et que votre Uptime Kuma se situe derrière un proxy (comme nginx ou Apache) vous devez l'activer.", + "wayToGetLineNotifyToken": "Vous pouvez obtenir un jeton d'accès auprès de {0}", + "Examples": "Exemples", + "Home Assistant URL": "URL vers Home Assistant", + "Long-Lived Access Token": "Jeton d'accès de longue durée", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Un jeton d'accès de longue durée peut être créé en cliquant sur le nom de votre profil (en bas à gauche) et en faisant défiler vers le bas, puis cliquez sur Créer un jeton. ", + "Notification Service": "Service de notifications", + "default: notify all devices": "par défaut : notifier tous les appareils", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Une liste des services de notification peut être trouvée dans Home Assistant sous \"Outils de développement > Services\" recherchez \"notification\" pour trouver le nom de votre appareil/téléphone.", + "Automations can optionally be triggered in Home Assistant:": "Les automatisations peuvent éventuellement être déclenchées dans Home Assistant :", + "Trigger type:": "Type de déclencheur :", + "Event type:": "Type d'événement :", + "Event data:": "Données d'événement :", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Ensuite, choisissez une action, par exemple basculer la scène là où une lumière RVB est rouge.", + "Frontend Version": "Version frontend", + "Frontend Version do not match backend version!": "La version frontend ne correspond pas à la version backend !", + "Base URL": "URL de base", + "goAlertInfo": "GoAlert est une application open source pour la planification des appels, les escalades automatisées et les notifications (comme les SMS ou les appels vocaux). Impliquez automatiquement la bonne personne, de la bonne manière et au bon moment ! {0}", + "goAlertIntegrationKeyInfo": "Obtenez la clé d'intégration d'API générique pour le service dans ce format \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" généralement la valeur du paramètre de jeton de l'URL copiée.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Obsolète : étant donné que de nombreuses fonctionnalités ont été ajoutées et que cette fonctionnalité de sauvegarde est non maintenue, elle ne peut pas générer ou restaurer une sauvegarde complète.", + "backupRecommend": "Veuillez sauvegarder le volume ou le dossier de données (./data/) directement à la place.", + "Optional": "Optionnel", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "Documentations de l'API SMSManager ", + "Gateway Type": "Type de passerelle", + "SMSManager": "SMSManager", + "You can divide numbers with": "Vous pouvez diviser des nombres avec", + "or": "ou", + "recurringInterval": "Intervalle", + "Recurring": "Récurrent", + "strategyManual": "Activer/désactiver manuellement", + "warningTimezone": "Utilisation du fuseau horaire du serveur", + "weekdayShortMon": "Lun", + "weekdayShortTue": "Mar", + "weekdayShortWed": "Mer", + "weekdayShortThu": "Jeu", + "weekdayShortFri": "Ven", + "weekdayShortSat": "Sam", + "weekdayShortSun": "Dim", + "dayOfWeek": "Jour de la semaine", + "dayOfMonth": "Jour du mois", + "lastDay": "Dernier jour", + "lastDay1": "Dernier jour du mois", + "lastDay2": "Avant-dernier jour du mois", + "lastDay3": "3ème dernier jour du mois", + "lastDay4": "4ème dernier jour du mois", + "No Maintenance": "Aucune maintenance", + "pauseMaintenanceMsg": "Voulez-vous vraiment mettre en pause ?", + "maintenanceStatus-under-maintenance": "En maintenance", + "maintenanceStatus-inactive": "Inactif", + "maintenanceStatus-scheduled": "Programmé", + "maintenanceStatus-ended": "Terminé", + "maintenanceStatus-unknown": "Inconnue", + "Display Timezone": "Afficher le fuseau horaire", + "Server Timezone": "Fuseau horaire du serveur", + "statusPageMaintenanceEndDate": "Fin", + "IconUrl": "URL vers l'icône", + "Enable DNS Cache": "(Obsolète) Activer le cache DNS pour les sondes HTTP(s)", + "Enable": "Activer", + "Disable": "Désactiver", + "dnsCacheDescription": "Il peut ne pas fonctionner dans certains environnements IPv6, désactivez-le si vous rencontrez des problèmes.", + "Single Maintenance Window": "Créneau de maintenance unique", + "Maintenance Time Window of a Day": "Créneau de la maintenance", + "Effective Date Range": "Plage de dates d'effet (facultatif)", + "Schedule Maintenance": "Créer une maintenance", + "Date and Time": "Date et heure", + "DateTime Range": "Plage de dates et d'heures", + "Strategy": "Stratégie", + "Free Mobile User Identifier": "Identifiant d'utilisateur Free Mobile", + "Free Mobile API Key": "Clé d'API Free Mobile", + "Enable TLS": "Activer le TLS", + "Proto Service Name": "Nom du service proto", + "Proto Method": "Méthode Proto", + "Proto Content": "Contenu proto", + "Economy": "Économique", + "Lowcost": "Faible coût", + "high": "Haute", + "General Monitor Type": "Type de sonde générale", + "Passive Monitor Type": "Type de sonde passive", + "Specific Monitor Type": "Type de sonde spécifique", + "dataRetentionTimeError": "La durée de conservation doit être supérieure ou égale à 0", + "infiniteRetention": "Définissez la valeur à 0 pour une durée de conservation infinie.", + "Monitor": "Sonde | Sondes", + "Custom": "Personnalisé", + "confirmDeleteTagMsg": "Voulez-vous vraiment supprimer cette étiquette ? Les sondes associées ne seront pas supprimées.", + "promosmsAllowLongSMS": "Autoriser les longs SMS", + "Help": "Aide", + "Game": "Jeux", + "Packet Size": "Taille du paquet", + "loadingError": "Impossible de récupérer les données, veuillez réessayer plus tard.", + "plugin": "Plugin | Plugins", + "install": "Installer", + "installing": "Installation", + "uninstall": "Désinstaller", + "uninstalling": "Désinstallation", + "confirmUninstallPlugin": "Voulez-vous vraiment désinstaller ce plugin ?", + "Custom Monitor Type": "Type de sonde personnalisé", + "markdownSupported": "Syntaxe Markdown supportée", + "Google Analytics ID": "Identifiant Google Analytics", + "Server Address": "Adresse du serveur", + "Learn More": "En savoir plus", + "Edit Tag": "Modifier l'étiquette", + "Body Encoding": "Encodage du corps", + "telegramMessageThreadID": "(Facultatif) ID du fil de message", + "telegramMessageThreadIDDescription": "(Facultatif) Identifiant unique pour le fil de discussion ciblé (sujet) du forum ; pour les supergroupes du forum uniquement", + "telegramProtectContent": "Protéger le transfert/l'enregistrement", + "telegramProtectContentDescription": "S'il est activé, les messages du robot dans Telegram seront protégés contre le transfert et l'enregistrement.", + "telegramSendSilently": "Envoyer silencieusement", + "telegramSendSilentlyDescription": "Envoie le message silencieusement. Les utilisateurs recevront une notification sans son.", + "notificationRegional": "Régional", + "Clone Monitor": "Cloner la sonde", + "Clone": "Cloner", + "cloneOf": "Clone de {0}", + "Expiry date": "Date d'expiration", + "Add Another": "Ajouter un autre", + "Key Added": "Clé ajoutée", + "Expiry": "Expiration", + "Continue": "Continuer", + "Add API Key": "Ajouter une clé API", + "No API Keys": "Aucune clé API", + "apiKey-active": "Active", + "apiKey-expired": "Expirée", + "apiKey-inactive": "Inactif", + "Expires": "Expire", + "disableAPIKeyMsg": "Voulez-vous vraiment désactiver cette clé API ?", + "deleteAPIKeyMsg": "Voulez-vous vraiment supprimer cette clé API ?", + "Generate": "Générer", + "API Keys": "Clés API", + "apiKeyAddedMsg": "Votre clé API a été ajoutée. Veuillez la noter car elle ne pourra plus être affichée.", + "Don't expire": "N'expire pas", + "pagertreeUrgency": "Urgence", + "pagertreeSilent": "Silencieux", + "pagertreeLow": "Faible", + "pagertreeMedium": "Moyen", + "pagertreeHigh": "Haut", + "pagertreeResolve": "Résolution automatique", + "pagertreeDoNothing": "Ne fais rien", + "pagertreeIntegrationUrl": "URL d'intégration", + "pagertreeCritical": "Critique", + "wayToGetPagerTreeIntegrationURL": "Après avoir créé l'intégration Uptime Kuma dans PagerTree, copiez le fichier Endpoint. Voir tous les détails {0}", + "lunaseaDeviceID": "Identifiant de l'appareil", + "lunaseaUserID": "Identifiant de l'utilisateur", + "Add New Tag": "Ajouter une étiquette", + "lunaseaTarget": "Cible", + "statusPageRefreshIn": "Actualisation dans : {0}", + "twilioFromNumber": "Du Nombre", + "twilioToNumber": "Au Nombre", + "twilioAccountSID": "ID du compte", + "twilioAuthToken": "Jeton d'authentification / Clé secrète de l'API", + "sameAsServerTimezone": "Identique au fuseau horaire du serveur", + "startDateTime": "Date/heure de début", + "endDateTime": "Date/heure de fin", + "cronExpression": "Expression cron", + "cronSchedule": "Calendrier : ", + "invalidCronExpression": "Expression Cron non valide : {0}", + "ntfyUsernameAndPassword": "Nom d'utilisateur et mot de passe", + "ntfyAuthenticationMethod": "Méthode d'authentification", + "pushoverMessageTtl": "TTL Message (Secondes)", + "Show Clickable Link": "Afficher le lien cliquable", + "Show Clickable Link Description": "Si cette case est cochée, tous ceux qui ont accès à cette page d'état peuvent accéder à l'URL de la sonde.", + "Open Badge Generator": "Ouvrir le générateur de badges", + "Badge Type": "Type de badge", + "Badge Duration": "Durée du badge", + "Badge Prefix": "Préfixe de la valeur du badge", + "Badge Suffix": "Suffixe de la valeur du badge", + "Badge Label Color": "Couleur de l'étiquette du badge", + "Badge Color": "Couleur du badge", + "Badge Label Prefix": "Préfixe d'étiquette de badge", + "Badge Label Suffix": "Suffixe d'étiquette de badge", + "Badge Up Color": "Couleur du badge en ligne", + "Badge Down Color": "Couleur du badge hors ligne", + "Badge Pending Color": "Couleur du badge en attente", + "Badge Maintenance Color": "Couleur du badge maintenance", + "Badge Warn Color": "Couleur du badge d'avertissement", + "Badge Warn Days": "Jours d'avertissement de badge", + "Badge Style": "Style de badge", + "Badge value (For Testing only.)": "Valeur du badge (Pour les tests uniquement.)", + "Monitor Setting": "Réglage de la sonde {0}", + "Badge Generator": "Générateur de badges {0}", + "Badge Label": "Étiquette de badge", + "Badge URL": "URL du badge", + "Cannot connect to the socket server": "Impossible de se connecter au serveur de socket", + "Reconnecting...": "Reconnexion...", + "Edit Maintenance": "Modifier la maintenance", + "Monitor Group": "Groupe de sonde | Groupe de sondes", + "Badge Down Days": "Badge hors ligne", + "Group": "Groupe", + "Home": "Accueil", + "noGroupMonitorMsg": "Pas disponible. Créez d'abord une sonde de groupe.", + "Close": "Fermer", + "chromeExecutableDescription": "Pour les utilisateurs sous Docker, si Chromium n'est pas encore installé, quelques minutes seront nécessaires pour installer et afficher le résultat du test. Cela peut prendre 1 Go d'espace disque.", + "chromeExecutableAutoDetect": "Auto-détecter", + "chromeExecutable": "Exécutable Chrome/Chromium", + "Invert Keyword": "Inverser le mot-clé", + "invertKeywordDescription": "Recherchez le mot-clé absent plutôt que présent.", + "webhookCustomBodyDesc": "Définissez un corps HTTP personnalisé pour la requête. Les variables de modèle {msg}, {heartbeat}, {monitor} sont acceptées.", + "webhookBodyCustomOption": "Corps personnalisé", + "webhookBodyPresetOption": "Préréglages - {0}", + "Request Body": "Corps de la requête", + "twilioApiKey": "Clé API (facultatif)", + "Expected Value": "Valeur attendue", + "Json Query": "Requête Json", + "Badge Duration (in hours)": "Durée du badge (en heures)", + "Badge Preview": "Aperçu du badge", + "aboutNotifyChannel": "Notifier le canal déclenchera une notification de bureau ou mobile pour tous les membres du canal, que leur disponibilité soit active ou absente.", + "Notify Channel": "Notifier le canal", + "filterActive": "Actif", + "filterActivePaused": "En pause", + "Enter the list of brokers": "Entrez la liste des courtiers", + "Press Enter to add broker": "Appuyez sur Entrée pour ajouter un courtier", + "Kafka Topic Name": "Nom du sujet Kafka", + "Enable Kafka SSL": "Activer Kafka SSL", + "Kafka SASL Options": "Options de Kafka SAS", + "Mechanism": "Mécanisme", + "Pick a SASL Mechanism...": "Choisissez un mécanisme SASL…", + "Authorization Identity": "Identité d'autorisation", + "AccessKey Id": "ID de la clé d'accès", + "Secret AccessKey": "Clé d'accès secrète", + "Session Token": "Jeton de session", + "Kafka Brokers": "Courtiers Kafka", + "Kafka Producer Message": "Message du producteur Kafka", + "Enable Kafka Producer Auto Topic Creation": "Activer la création automatique de rubrique Kafka", + "tailscalePingWarning": "Afin d'utiliser la sonde Tailscale Ping, vous devez installer Uptime Kuma sans Docker et également installer le client Tailscale sur votre serveur.", + "Server URL should not contain the nfty topic": "L'URL du serveur ne doit pas contenir le sujet nfty", + "Select": "Sélectionner", + "selectedMonitorCount": "Sélectionné : {0}", + "Check/Uncheck": "Cocher/décocher", + "nostrRelaysHelp": "Une URL relais par ligne", + "nostrRecipients": "Clés publiques des bénéficiaires (npub)", + "nostrSender": "Émetteur clé privée (nsec)", + "nostrRecipientsHelp": "Format npub, un par ligne", + "nostrRelays": "Relais Nostr", + "PushDeer Server": "PushDeer Server", + "showCertificateExpiry": "Afficher l'expiration du certificat", + "noOrBadCertificate": "Pas/Mauvais certificat", + "pushDeerServerDescription": "Laissez le champ vide pour utiliser le serveur officiel", + "FlashDuty Severity": "Gravité", + "wayToGetFlashDutyKey": "Vous pouvez aller dans Canal -> (Sélectionner un canal) -> Intégrations -> Ajouter une nouvelle page d'intégration, ajouter un « Uptime Kuma » pour obtenir une adresse push, copier la clé d'intégration dans l'adresse. Pour plus d'informations, veuillez visiter", + "Request Timeout": "Délai d'expiration de la demande", + "timeoutAfter": "Délai dépassé après {0} secondes", + "gamedigGuessPort": "Gamedig : Devinez le port", + "gamedigGuessPortDescription": "Le port utilisé par Valve Server Query Protocol peut être différent du port client. Essayez ceci si la sonde ne peut pas se connecter à votre serveur.", + "styleElapsedTimeShowNoLine": "Afficher (pas de ligne)", + "styleElapsedTimeShowWithLine": "Afficher (avec ligne)", + "styleElapsedTime": "Temps écoulé sous la barre d'état", + "enableNSCD": "Activer NSCD (Name Service Cache Daemon) pour mettre en cache toutes les demandes DNS", + "setupDatabaseChooseDatabase": "Quelle base de données souhaitez-vous utiliser ?", + "setupDatabaseEmbeddedMariaDB": "Vous n'avez rien à définir. Cette image Docker a intégré et configuré MariaDB automatiquement pour vous. Uptime Kuma se connectera à cette base de données via un socket Unix.", + "setupDatabaseSQLite": "Un fichier de base de données simple, recommandé pour les déploiements à petite échelle. Avant la v2.0.0, Uptime Kuma utilisait SQLite comme base de données par défaut.", + "setupDatabaseMariaDB": "Connectez-vous à une base de données MariaDB externe. Vous devez définir les informations de connexion à la base de données.", + "dbName": "Nom de la base de données", + "Saved.": "Enregistré.", + "toastErrorTimeout": "Délai d'attente pour les notifications d'erreur", + "toastSuccessTimeout": "Délai d'attente pour les notifications de réussite", + "monitorToastMessagesLabel": "Surveiller les notifications Toast", + "monitorToastMessagesDescription": "Les notifications Toast pour les sondes disparaissent après un délai donné en secondes. La valeur -1 désactive le délai d'attente. La valeur 0 désactive les notifications toast.", + "Bark API Version": "Version de l'API Bark", + "pushViewCode": "Comment utiliser une sonde type « Push » (voir le code)", + "pushOthers": "Autres", + "programmingLanguages": "Langages de programmation", + "authInvalidToken": "Jeton invalide.", + "authIncorrectCreds": "Nom d'utilisateur ou mot de passe incorrects.", + "2faAlreadyEnabled": "L'authentification à deux facteurs (2FA) est déjà activée.", + "2faDisabled": "Authentification à deux facteurs (2FA) désactivée.", + "successAdded": "Ajouté avec succès.", + "successEdited": "Modifié avec succès.", + "successBackupRestored": "Sauvegarde restaurée avec succès.", + "successDisabled": "Désactivé avec succès.", + "successEnabled": "Activé avec succès.", + "tagNotFound": "Étiquette non trouvée.", + "foundChromiumVersion": "Version de Chromium/Chrome trouvée : {0}", + "successResumed": "Reprise avec succès.", + "successPaused": "Mis en pause avec succès.", + "authUserInactiveOrDeleted": "L'utilisateur est inactif ou a été supprimé.", + "2faEnabled": "Authentification à deux facteurs (2FA) activée.", + "successDeleted": "Supprimé avec succès.", + "successAuthChangePassword": "Le mot de passe a bien été mis à jour.", + "Reset Token": "Réinitialiser le jeton", + "liquidIntroduction": "La possibilité de créer des modèles est obtenue via le langage de modèles Liquid. Veuillez vous référer au {0} pour les instructions d'utilisation. Voici les variables disponibles :", + "emailCustomisableContent": "Contenu personnalisable", + "smtpLiquidIntroduction": "Les deux champs suivants peuvent être modélisés via le langage de modèles Liquid. Veuillez vous référer au {0} pour les instructions d'utilisation. Voici les variables disponibles :", + "leave blank for default subject": "laisser vide pour le sujet par défaut", + "emailCustomBody": "Corps personnalisé", + "leave blank for default body": "laisser vide pour le corps par défaut", + "emailTemplateServiceName": "Nom du service", + "emailTemplateHostnameOrURL": "Nom d'hôte ou URL", + "emailTemplateStatus": "Statut", + "emailTemplateMonitorJSON": "objet décrivant la sonde", + "templateMsg": "message de notification", + "templateHeartbeatJSON": "objet décrivant la vérification", + "templateMonitorJSON": "objet décrivant la sonde", + "templateLimitedToUpDownCertNotifications": "disponible uniquement pour les notifications En ligne/Hors ligne/expiration du certificat", + "templateLimitedToUpDownNotifications": "disponible uniquement pour les notifications en ligne/hors ligne", + "emailTemplateMsg": "message de notification", + "emailTemplateLimitedToUpDownNotification": "disponible uniquement pour les vérifications en ligne/hors ligne, sinon nul", + "emailTemplateHeartbeatJSON": "objet décrivant la vérification", + "GrafanaOncallUrl": "URL vers Grafana Oncall", + "noDockerHostMsg": "Pas disponible. Configurez d'abord un hôte Docker.", + "DockerHostRequired": "Veuillez définir l'hôte Docker pour cette sonde.", + "Browser Screenshot": "Capture d'écran du navigateur", + "setup a new monitor group": "configurer un nouveau groupe de sondes", + "remoteBrowsersDescription": "Les navigateurs distants sont une alternative à l'exécution de Chromium localement. Configurez avec un service comme browserless.io ou connectez-vous au vôtre", + "deleteRemoteBrowserMessage": "Êtes-vous sûr de vouloir supprimer ce navigateur distant pour toutes les sondes ?", + "Add a new expiry notification day": "Ajouter un nouveau jour de notification d'expiration", + "Remove the expiry notification": "Supprimer le jour de notification d'expiration", + "openModalTo": "Ouvrir la fenêtre modale pour {0}", + "Add a domain": "Ajouter un domaine", + "Remove domain": "Supprimer le domaine '{0}'", + "Remote Browsers": "Navigateurs distants", + "Remote Browser": "Navigateur distant", + "Add a Remote Browser": "Ajouter un navigateur distant", + "Remote Browser not found!": "Navigateur distant introuvable !", + "self-hosted container": "conteneur auto-hébergé", + "remoteBrowserToggle": "Par défaut, Chromium s'exécute dans le conteneur Uptime Kuma. Vous pouvez utiliser un navigateur distant en activant ce commutateur.", + "useRemoteBrowser": "Utiliser un navigateur distant", + "successKeyword": "Mot-clé de réussite", + "successKeywordExplanation": "Mot clé MQTT qui sera considéré comme un succès", + "Search monitored sites": "Rechercher des sites surveillés", + "settingUpDatabaseMSG": "Mise en place de la base de données. Cela peut prendre un certain temps, veuillez patienter.", + "ntfyPriorityHelptextAllEvents": "Tous les événements sont envoyés avec la priorité maximale", + "ntfyPriorityHelptextAllExceptDown": "Tous les événements sont envoyés avec cette priorité, à l'exception des événements {0}, qui ont une priorité de {1}", + "statusPageSpecialSlugDesc": "Chemin spécial {0} : cette page sera affichée en l'absence de chemin", + "What is a Remote Browser?": "Qu'est-ce qu'un navigateur distant ?", + "Channel access token (Long-lived)": "Jeton d'accès au canal (longue durée)", + "Your User ID": "Votre identifiant", + "documentationOf": "{0} Documentation", + "wayToGetHeiiOnCallDetails": "Comment obtenir l'ID de déclencheur et les clés API d'après la {documentation}", + "From Phone Number / Transmission Path Originating Address (TPOA)": "À partir du numéro de téléphone / Adresse d'origine du chemin de transmission (TPOA)", + "To Phone Number": "Au numéro de téléphone", + "gtxMessagingToHint": "Format international, avec \"+\" ({e164}, {e212} ou {e214})", + "gtxMessagingApiKeyHint": "Vous pouvez trouver votre clé API à l'adresse suivante : Mes comptes de routage > Afficher les informations du compte > Informations d'identification de l'API > API REST (v2.x)", + "gtxMessagingFromHint": "Sur les téléphones mobiles, vos destinataires voient le TPOA affiché comme l'expéditeur du message. Sont autorisés jusqu'à 11 caractères alphanumériques, un shortcode, le longcode local ou les numéros internationaux ({e164}, {e212} ou {e214})", + "Telephone number": "Numéro de téléphone", + "Originator": "Auteur", + "cellsyntOriginator": "Visible sur le téléphone mobile du destinataire en tant qu'expéditeur du message. Les valeurs autorisées et la fonction dépendent du type d'auteur du paramètre.", + "Destination": "Destination", + "Allow Long SMS": "Autoriser les SMS longs", + "cellsyntSplitLongMessages": "Divisez les longs messages en 6 parties maximum. 153 x 6 = 918 caractères.", + "max 15 digits": "maximum 15 chiffres", + "max 11 alphanumeric characters": "maximum 11 caractères alphanumériques", + "Originator type": "Type d'auteur", + "Alphanumeric (recommended)": "Alphanumérique (recommandé)", + "cellsyntOriginatortypeAlphanumeric": "Chaîne alphanumérique (max 11 caractères alphanumériques). Les destinataires ne peuvent pas répondre au message.", + "cellsyntOriginatortypeNumeric": "Valeur numérique (maximum 15 chiffres) avec numéro de téléphone au format international sans 00 en tête (par exemple, le numéro britannique 07920 110 000 doit être défini comme 447920110000). Les destinataires peuvent répondre au message.", + "cellsyntDestination": "Numéro de téléphone du destinataire au format international commençant par 00 suivi de l'indicatif du pays, par ex. 00447920110000 pour le numéro britannique 07920 110 000 (max 17 chiffres au total). Max 25 000 destinataires séparés par des virgules par requête HTTP.", + "callMeBotGet": "Ici, vous pouvez générer un point de terminaison pour {0}, {1} et {2}. Gardez à l’esprit que votre tarif peut être limité. Les limites de débit semblent être : {3}", + "wayToGetWhapiUrlAndToken": "Vous pouvez obtenir l'URL de l'API et le jeton en allant dans votre canal souhaité à partir de {0}", + "whapiRecipient": "Numéro de téléphone / ID de contact / ID de groupe", + "API URL": "URL de l'API", + "wayToWriteWhapiRecipient": "Le numéro de téléphone avec le préfixe international, mais sans le signe plus au début ({0}), l'ID de contact ({1}) ou l'ID de groupe ({2}).", + "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Entrez le nom d'hôte du serveur auquel vous souhaitez vous connecter ou {localhost} si vous avez l'intention d'utiliser un {local_mta}", + "locally configured mail transfer agent": "Agent de transfert de courrier configuré localement", + "Don't mention people": "Ne mentionne pas les personnes", + "Mention group": "Mentionne {groupe}", + "Mentioning": "Mentionner", + "senderSevenIO": "Numéro ou nom d'envoi", + "receiverSevenIO": "Numéro de réception", + "apiKeySevenIO": "Clé API SevenIO", + "wayToGetSevenIOApiKey": "Visitez le tableau de bord sous app.seven.io > développeur > clé api > le bouton d'ajout vert", + "receiverInfoSevenIO": "Si le numéro de réception n'est pas situé en Allemagne, vous devez ajouter l'indicatif du pays devant le numéro (par exemple, pour l'indicatif de pays 1 des États-Unis, utilisez 117612121212 au lieu de 017612121212)", + "Host URL": "URL de l'hôte", + "Select message type": "Sélectionnez le type de message", + "Create new forum post": "Créer un nouveau message sur le forum", + "postToExistingThread": "Publier sur le fil de discussion / forum existant", + "forumPostName": "Nom du post sur le forum", + "threadForumPostID": "ID du fil / ID du post sur le forum", + "whatHappensAtForumPost": "Créer un nouveau post sur le forum. Cela ne publie PAS de messages dans un post existant. Pour publier dans un post existant, utilisez \"{option}\"", + "wayToGetDiscordThreadId": "Obtenir un ID de fil / post sur le forum est similaire à obtenir un ID de canal. Pour en savoir plus sur la manière d'obtenir des IDs, lisez {0}", + "Send to channel": "Envoyer au canal", + "e.g. {discordThreadID}": "e.g. {discordThreadID}", + "Command": "Commande", + "mongodbCommandDescription": "Exécutez une commande MongoDB sur la base de données. Pour plus d'informations sur les commandes disponibles, consultez la {documentation}", + "Refresh Interval": "Intervalle de rafraîchissement", + "Refresh Interval Description": "La page de statut effectuera un rafraîchissement complet du site toutes les {0} secondes", + "ignoreTLSErrorGeneral": "Ignorer l'erreur TLS/SSL pour la connexion", + "Bitrix24 Webhook URL": "URL du Webhook Bitrix24", + "wayToGetBitrix24Webhook": "Vous pouvez créer un webhook en suivant les étapes de {0}", + "bitrix24SupportUserID": "Entrez votre identifiant d'utilisateur dans Bitrix24. Vous pouvez trouver l'ID à partir du lien en allant sur le profil de l'utilisateur.", + "smspartnerPhoneNumber": "Numéro(s) de téléphone", + "smspartnerPhoneNumberHelptext": "Le numéro doit être au format international {0}, {1}. Plusieurs numéros doivent être séparés par {2}", + "smspartnerSenderName": "Nom de l'expéditeur SMS", + "smspartnerSenderNameInfo": "Doit être compris entre 3 et 11 caractères réguliers", + "smspartnerApiurl": "Vous pouvez trouver votre clé API dans votre tableau de bord à {0}", + "threemaRecipient": "Destinataire", + "threemaRecipientType": "Type de destinataire", + "threemaRecipientTypeIdentity": "Threema-ID", + "threemaRecipientTypeIdentityFormat": "8 caractères", + "threemaRecipientTypePhone": "Numéro de téléphone", + "threemaRecipientTypePhoneFormat": "E.164, sans le signe + initial", + "threemaRecipientTypeEmail": "Adresse email", + "threemaSenderIdentity": "Identifiant de passerelle", + "threemaSenderIdentityFormat": "8 caractères, commence généralement par *", + "threemaApiAuthenticationSecret": "Secret de l'identifiant de la passerelle", + "wayToGetThreemaGateway": "Vous pouvez vous inscrire à Threema Gateway {0}.", + "threemaBasicModeInfo": "Note : Cette intégration utilise Threema Gateway en mode basique (chiffrement basé sur le serveur). Vous pouvez trouver plus de détails {0}.", + "apiKeysDisabledMsg": "Les clés API sont désactivées car l'authentification est désactivée.", + "cacheBusterParam": "Ajoutez le paramètre {0}", + "snmpCommunityStringHelptext": "Cette chaîne fonctionne comme un mot de passe pour authentifier et contrôler l'accès aux appareils compatibles SNMP. Faites-le correspondre à la configuration de votre périphérique SNMP.", + "privateOnesenderDesc": "Assurez-vous que le numéro de téléphone est valide. Pour envoyer un message vers un numéro de téléphone privé, ex : 628123456789", + "groupOnesenderDesc": "Assurez-vous que le GroupID est valide. Pour envoyer un message dans le groupe, ex : 628123456789-342345", + "Optional: Space separated list of scopes": "Facultatif : liste des étendues séparées par des espaces", + "jsonQueryDescription": "Analyser et extraire des données spécifiques de la réponse JSON du serveur en utilisant une requête JSON ou utiliser « $ » pour la réponse brute, si un JSON n'est pas attendu. Le résultat est ensuite comparé à la valeur attendue, en tant que chaînes de caractères. Consultez {0} pour la documentation et utilisez {1} pour expérimenter avec des requêtes.", + "now": "Maintenant", + "time ago": "il y a {0}", + "-year": "-année", + "Json Query Expression": "Expression de requête JSON", + "and": "et", + "cacheBusterParamDescription": "Paramètre généré aléatoirement pour ignorer les caches.", + "Community String": "Chaîne de communauté", + "OID (Object Identifier)": "OID (identifiant d'objet)", + "snmpOIDHelptext": "Entrez l'OID du capteur ou de l'état que vous souhaitez surveiller. Utilisez des outils de gestion de réseau tels que les navigateurs MIB ou le logiciel SNMP si vous n'êtes pas sûr de l'OID.", + "Condition": "Condition", + "SNMP Version": "Version SNMP", + "Please enter a valid OID.": "Veuillez saisir un OID valide.", + "Host Onesender": "Héberger un expéditeur", + "Token Onesender": "Jeton Onesender", + "Recipient Type": "Type de destinataire", + "Private Number": "Numéro privé", + "Group ID": "Identifiant du groupe", + "wayToGetOnesenderUrlandToken": "Vous pouvez obtenir l'URL et le jeton en accédant au site Web Onesender. Plus d'informations {0}", + "Add Remote Browser": "Ajouter un navigateur distant", + "New Group": "Nouveau groupe", + "Group Name": "Nom du groupe", + "OAuth2: Client Credentials": "OAuth2 : informations d'identification du client", + "Authentication Method": "Méthode d'authentification", + "Authorization Header": "En-tête d'autorisation", + "Form Data Body": "Corps des données du formulaire", + "OAuth Token URL": "URL du jeton OAuth", + "Client ID": "Identifiant client", + "Client Secret": "Secret client", + "OAuth Scope": "Portée OAuth", + "Go back to home page.": "Retournez à la page d'accueil.", + "No tags found.": "Aucune étiquettes trouvée.", + "Lost connection to the socket server.": "Connexion au serveur de socket perdue.", + "Cannot connect to the socket server.": "Impossible de se connecter au serveur de socket.", + "SIGNL4": "SIGNL4", + "SIGNL4 Webhook URL": "URL du webhook SIGNL4", + "signl4Docs": "Vous pouvez trouver plus d'informations sur la façon de configurer SIGNL4 et sur la façon d'obtenir l'URL du webhook SIGNL4 dans le {0}.", + "Conditions": "Conditions", + "conditionAdd": "Ajouter une condition", + "conditionDelete": "Supprimer la condition", + "conditionAddGroup": "Ajouter un groupe", + "conditionDeleteGroup": "Supprimer le groupe", + "conditionValuePlaceholder": "Valeur", + "equals": "est égal", + "not equals": "pas égal", + "contains": "contient", + "not contains": "ne contient pas", + "starts with": "commence par", + "not starts with": "ne commence pas par", + "ends with": "se termine par", + "not ends with": "ne se termine pas par", + "less than": "moins que", + "greater than": "supérieur à", + "less than or equal to": "inférieur ou égal à", + "greater than or equal to": "supérieur ou égal à", + "record": "enregistrer", + "shrinkDatabaseDescriptionSqlite": "Déclencher la commande {vacuum} pour la base de données SQLite. {auto_vacuum} est déjà activé, mais cela ne défragmente pas la base de données ni ne réorganise les pages individuelles de la base de données de la même manière que la commande {vacuum}." +} diff --git a/src/lang/hr-HR.json b/src/lang/hr-HR.json index 42ea97706..cc4cba240 100644 --- a/src/lang/hr-HR.json +++ b/src/lang/hr-HR.json @@ -1,987 +1,987 @@ -{ - "languageName": "Hrvatski", - "checkEverySecond": "Provjera svake {0} sekunde", - "retryCheckEverySecond": "Ponovni pokušaj svake {0} sekunde", - "retriesDescription": "Broj ponovnih pokušaja prije nego će se servis označiti kao nedostupan te poslati obavijest", - "ignoreTLSError": "Ignoriraj TLS/SSL pogreške za HTTPS web stranice", - "upsideDownModeDescription": "Preokreni logiku statusa. Ako se primi pozitivan odgovor, smatra se da je usluga nedostupna.", - "maxRedirectDescription": "Maksimalan broj preusmjeravanja. Postaviti na 0 kako bi se preusmjeravanja onemogućila.", - "acceptedStatusCodesDescription": "Odaberite statusne kodove koji se smatraju uspješnim odgovorom.", - "passwordNotMatchMsg": "Lozinke se ne poklapaju.", - "notificationDescription": "Obavijesti će funkcionirati samo ako su dodijeljene monitoru.", - "keywordDescription": "Ključna riječ za pretragu, u obliku običnog HTML-a ili u JSON formatu. Pretraga je osjetljiva na velika i mala slova.", - "deleteMonitorMsg": "Jeste li sigurni da želite izbrisati monitor?", - "deleteNotificationMsg": "Jeste li sigurni da želite izbrisati ovu obavijest za sve monitore?", - "resolverserverDescription": "Cloudflare je zadani DNS poslužitelj. Možete to promijeniti u bilo kojem trenutku.", - "rrtypeDescription": "Odaberite vrstu DNS zapisa o resursu kojeg želite pratiti", - "pauseMonitorMsg": "Jeste li sigurni da želite pauzirati?", - "enableDefaultNotificationDescription": "Ova će obavijesti biti omogućena za sve nove monitore. Možete ju ručno onemogućiti za pojedini monitor.", - "clearEventsMsg": "Jeste li sigurni da želite izbrisati sve zapise o događajima za ovaj monitor?", - "clearHeartbeatsMsg": "Jeste li sigurni da želite izbrisati sve zapise o provjerama za ovaj monitor?", - "confirmClearStatisticsMsg": "Jeste li sigurni da želite izbrisati SVE statistike?", - "importHandleDescription": "Odaberite opciju \"Preskoči postojeće\" ako želite preskočiti uvoz postojećih monitora i obavijesti ako dođe do poklapanja u imenu. Opcija \"Prepiši\" će izbrisati postojeće monitore i obavijesti.", - "confirmImportMsg": "Jeste li sigurni da želite pokrenuti uvoz? Provjerite jeste li odabrali ispravnu opciju uvoza.", - "twoFAVerifyLabel": "Unesite svoj 2FA token:", - "tokenValidSettingsMsg": "Token je važeći! Sada možete spremiti postavke dvofaktorske autentikacije.", - "confirmEnableTwoFAMsg": "Želite li omogućiti dvofaktorsku autentikaciju?", - "confirmDisableTwoFAMsg": "Jeste li sigurni da želite onemogućiti dvofaktorsku autentikaciju?", - "Settings": "Postavke", - "Dashboard": "Kontrolna ploča", - "New Update": "Novo ažuriranje", - "Language": "Jezik", - "Appearance": "Izgled", - "Theme": "Tema", - "General": "Općenito", - "Primary Base URL": "Osnovni URL", - "Version": "Inačica", - "Check Update On GitHub": "Provjeri dostupnost nove inačice na GitHubu", - "List": "Popis", - "Add": "Dodaj", - "Add New Monitor": "Dodaj novi Monitor", - "Quick Stats": "Statistika", - "Up": "Dostupno", - "Down": "Nedostupno", - "Pending": "U tijeku", - "Unknown": "Nepoznato", - "pauseDashboardHome": "Pauzirano", - "Name": "Naziv", - "Status": "Status", - "DateTime": "Vremenska oznaka", - "Message": "Izvještaj", - "No important events": "Nema važnih događaja", - "Pause": "Pauziraj", - "Resume": "Nastavi", - "Edit": "Uredi", - "Delete": "Obriši", - "Current": "Trenutno", - "Uptime": "Dostupnost", - "Cert Exp.": "Istek cert.", - "day": "dan | dana", - "-day": "-dnevno", - "hour": "sat", - "-hour": "-satno", - "Response": "Odgovor", - "Ping": "Odziv", - "Monitor Type": "Vrsta Monitora", - "Keyword": "Ključna riječ", - "Friendly Name": "Prilagođen naziv", - "URL": "URL", - "Hostname": "Domaćin", - "Port": "Port", - "Heartbeat Interval": "Interval provjere", - "Retries": "Broj ponovnih pokušaja", - "Heartbeat Retry Interval": "Interval ponovnih pokušaja", - "Advanced": "Napredne postavke", - "Upside Down Mode": "Obrnuti način", - "Max. Redirects": "Maksimalan broj preusmjeravanja", - "Accepted Status Codes": "Prihvaćeni statusni kodovi", - "Push URL": "Push URL", - "needPushEvery": "Potrebno je slati zahtjeve na URL svakih {0} sekundi.", - "pushOptionalParams": "Neobavezni parametri: {0}", - "Save": "Spremi", - "Notifications": "Obavijesti", - "Not available, please setup.": "Nije dostupno, potrebno je dodati novu stavku.", - "Setup Notification": "Dodaj obavijest", - "Light": "Svijetli način", - "Dark": "Tamni način", - "Auto": "Automatski", - "Theme - Heartbeat Bar": "Tema za traku dostupnosti", - "Normal": "Normalno", - "Bottom": "Ispod", - "None": "Isključeno", - "Timezone": "Vremenska zona", - "Search Engine Visibility": "Vidljivost tražilicama", - "Allow indexing": "Dopusti indeksiranje", - "Discourage search engines from indexing site": "Sprječavanje indeksiranja", - "Change Password": "Promjena lozinke", - "Current Password": "Trenutna lozinka", - "New Password": "Nova lozinka", - "Repeat New Password": "Potvrdite novu lozinku", - "Update Password": "Spremi novu lozinku", - "Disable Auth": "Onemogući autentikaciju", - "Enable Auth": "Omogući autentikaciju", - "disableauth.message1": "Jeste li sigurni da želite {disableAuth}?", - "disable authentication": "isključiti autentikaciju", - "disableauth.message2": "To je za {intendThirdPartyAuth} ispred Uptime Kume, poput usluge Cloudflare Access.", - "where you intend to implement third-party authentication": "korisnike koji imaju vanjsku autentikaciju stranice", - "Please use this option carefully!": "Pažljivo koristite ovu opciju!", - "Logout": "Odjava", - "Leave": "Poništi", - "I understand, please disable": "Razumijem, svejedno onemogući", - "Confirm": "Potvrda", - "Yes": "Da", - "No": "Ne", - "Username": "Korisničko ime", - "Password": "Lozinka", - "Remember me": "Zapamti me", - "Login": "Prijava", - "No Monitors, please": "Nema monitora,", - "add one": "dodaj jedan", - "Notification Type": "Tip obavijesti", - "Email": "E-pošta", - "Test": "Testiraj", - "Certificate Info": "Informacije o certifikatu", - "Resolver Server": "DNS poslužitelj", - "Resource Record Type": "Vrsta DNS zapisa", - "Last Result": "Posljednji rezultat", - "Create your admin account": "Stvori administratorski račun", - "Repeat Password": "Potvrda lozinke", - "Import Backup": "Uvoz sigurnosne kopije", - "Export Backup": "Izvoz sigurnosne kopije", - "Export": "Izvoz", - "Import": "Uvoz", - "respTime": "Vrijeme odgovora (ms)", - "notAvailableShort": "ne postoji", - "Default enabled": "Omogući za nove monitore", - "Apply on all existing monitors": "Primijeni na postojeće monitore", - "Create": "Kreiraj", - "Clear Data": "Obriši podatke", - "Events": "Događaji", - "Heartbeats": "Provjere", - "Auto Get": "Automatski dohvat", - "backupDescription": "Moguće je napraviti sigurnosnu kopiju svih monitora i obavijesti koja će biti spremljena kao JSON datoteka.", - "backupDescription2": "Napomena: povijest i podaci o događajima nisu uključeni u sigurnosnu kopiju.", - "backupDescription3": "Osjetljivi podaci poput tokena za obavijesti uključeni su u sigurnosnu kopiju. Zato je potrebno čuvati izvoz na sigurnom mjestu.", - "alertNoFile": "Datoteka za uvoz nije odabrana.", - "alertWrongFileType": "Datoteka za uvoz nije u JSON formatu.", - "Clear all statistics": "Obriši sve statistike", - "Skip existing": "Preskoči postojeće", - "Overwrite": "Prepiši", - "Options": "Opcije", - "Keep both": "Zadrži sve", - "Verify Token": "Provjeri Token", - "Setup 2FA": "Postavi dvofaktorsku autentikaciju", - "Enable 2FA": "Omogući dvofaktorsku autentikaciju", - "Disable 2FA": "Onemogući dvofaktorsku autentikaciju", - "2FA Settings": "Postavke 2FA", - "Two Factor Authentication": "Dvofaktorska autentikacija", - "Active": "Aktivna", - "Inactive": "Neaktivno", - "Token": "Token", - "Show URI": "Pokaži URI", - "Tags": "Oznake", - "Add New below or Select...": "Dodajte novu oznaku ispod ili odaberite…", - "Tag with this name already exist.": "Oznaka s tim nazivom već postoji.", - "Tag with this value already exist.": "Oznaka s tom vrijednošću već postoji.", - "color": "Boja", - "value (optional)": "Vrijednost (neobavezno)", - "Gray": "Siva", - "Red": "Crvena", - "Orange": "Narančasta", - "Green": "Zelena", - "Blue": "Plava", - "Indigo": "Indigo", - "Purple": "Ljubičasta", - "Pink": "Ružičasta", - "Search...": "Pretraga…", - "Avg. Ping": "Prosječni odziv", - "Avg. Response": "Prosječni odgovor", - "Entry Page": "Početna stranica", - "statusPageNothing": "Ovdje nema ničega, dodajte grupu ili monitor.", - "No Services": "Nema usluga", - "All Systems Operational": "Svi sustavi su operativni", - "Partially Degraded Service": "Usluga djelomično nedostupna", - "Degraded Service": "Usluga nedostupna", - "Add Group": "Dodaj grupu", - "Add a monitor": "Dodaj monitor", - "Edit Status Page": "Uredi Statusnu stranicu", - "Go to Dashboard": "Na Kontrolnu ploču", - "Status Page": "Statusna stranica", - "Status Pages": "Statusne stranice", - "defaultNotificationName": "Moja {number}. {notification} obavijest", - "here": "ovdje", - "Required": "Potrebno", - "telegram": "Telegram", - "Bot Token": "Token bota", - "wayToGetTelegramToken": "Token možete nabaviti preko {0}.", - "Chat ID": "ID razgovora", - "supportTelegramChatID": "Podržani su ID-jevi izravnih razgovora, grupa i kanala", - "wayToGetTelegramChatID": "ID razgovora možete saznati tako da botu pošaljete poruku te odete na ovaj URL:", - "YOUR BOT TOKEN HERE": "OVDJE IDE TOKEN BOTA", - "chatIDNotFound": "ID razgovora nije pronađen; prvo morate poslati poruku botu", - "webhook": "Webhook", - "Post URL": "URL Post zahtjeva", - "Content Type": "Tip sadržaja (Content Type)", - "webhookJsonDesc": "{0} je dobra opcija za moderne HTTP poslužitelje poput Express.js-a", - "webhookFormDataDesc": "{multipart} je moguća alternativa za PHP, samo je potrebno parsirati JSON koristeći {decodeFunction}", - "smtp": "E-mail (SMTP)", - "secureOptionNone": "Bez sigurnosti / STARTTLS (25, 587)", - "secureOptionTLS": "TLS (465)", - "Ignore TLS Error": "Ignoriraj greške TLS-a", - "From Email": "Adresa za \"From\" polje", - "emailCustomSubject": "Prilagođeno \"Subject\" polje", - "To Email": "Odredišne adrese e-pošte", - "smtpCC": "Cc", - "smtpBCC": "Bcc", - "discord": "Discord", - "Discord Webhook URL": "URL Discord webhooka", - "wayToGetDiscordURL": "Ovo možete dobiti tako da odete na Postavke servera -> Integracije -> Pogledaj webhookove -> Novi webhook", - "Bot Display Name": "Nadimak Bota unutar servera", - "Prefix Custom Message": "Prefiks prilagođene poruke", - "Hello @everyone is...": "Pozdrav {'@'}everyone…", - "teams": "Microsoft Teams", - "Webhook URL": "URL webhooka", - "wayToGetTeamsURL": "Više informacija o Teams webhookovima možete pročitati {0}.", - "signal": "Signal", - "Number": "Broj", - "Recipients": "Primatelji", - "needSignalAPI": "Potreban je klijent s REST sučeljem.", - "wayToCheckSignalURL": "Više informacija o postavljanju Signal klijenta:", - "signalImportant": "VAŽNO: Grupe i brojevi se ne mogu istovremeno koristiti kao primatelji!", - "gotify": "Gotify", - "Application Token": "Token Aplikacije", - "Server URL": "URL poslužitelja", - "Priority": "Prioritet", - "slack": "Slack", - "Icon Emoji": "Emotikon", - "Channel Name": "Naziv kanala", - "Uptime Kuma URL": "Uptime Kuma URL", - "aboutWebhooks": "Dodatne informacije o webhookovima su dostupne na: {0}", - "aboutChannelName": "Unesite ime {0} kanala u polju Naziv kanala ako želite zaobići webhook kanal. Primjerice: #neki-kanal", - "aboutKumaURL": "Ako je polje \"Uptime Kuma URL\" prazno, koristi se zadana vrijednost koja vodi na GitHub stranicu projekta.", - "emojiCheatSheet": "Popis emotikona: {0}", - "rocket.chat": "Rocket.Chat", - "pushover": "Pushover", - "pushy": "Pushy", - "octopush": "Octopush", - "promosms": "PromoSMS", - "clicksendsms": "ClickSend SMS", - "lunasea": "LunaSea", - "apprise": "Apprise (Podržava preko 50 usluga za obavijesti)", - "pushbullet": "Pushbullet", - "line": "LINE", - "mattermost": "Mattermost", - "User Key": "Korisnički ključ", - "Device": "Uređaji", - "Message Title": "Naslov poruke", - "Notification Sound": "Zvuk obavijesti", - "More info on:": "Više informacija na: {0}", - "pushoverDesc1": "Hitni prioritet (2) ima zadani istek vremena od 30 sekundi između ponovnih pokušaja te će isteći nakon 1 sata.", - "pushoverDesc2": "Ako želite slati obavijesti na više uređaja, ispunite polje \"Uređaji\".", - "SMS Type": "Tip SMS-a", - "octopushTypePremium": "Premium (Brzo - preporučeno za obavijesti)", - "octopushTypeLowCost": "Low Cost (Sporo - mobilni operateri ponekad blokiraju ove poruke)", - "checkPrice": "Provjerite {0} cijene:", - "apiCredentials": "Vjerodajnice za API", - "octopushLegacyHint": "Koristite li staru inačicu usluge Octopush (2011-2020) ili noviju inačicu?", - "Check octopush prices": "Provjerite cijene usluge Octopush {0}.", - "octopushPhoneNumber": "Telefonski broj (međunarodni format, primjerice: +38512345678) ", - "octopushSMSSender": "Naziv SMS pošiljatelja : 3-11 alfanumeričkih znakova i razmak (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea ID Uređaja", - "Apprise URL": "URL usluge Apprise", - "Example:": "Primjerice: {0}", - "Read more:": "Pročitajte više: {0}", - "Status:": "Status: {0}", - "Read more": "Pročitaj više", - "appriseInstalled": "Apprise je instaliran.", - "appriseNotInstalled": "Apprise nije instaliran. {0}", - "Access Token": "Pristupni token", - "Channel access token": "Token za pristup kanalu", - "Line Developers Console": "LINE razvojnoj konzoli", - "lineDevConsoleTo": "LINE razvojna konzola - {0}", - "Basic Settings": "Osnovne Postavke", - "User ID": "Korisnički ID", - "Messaging API": "API za razmjenu poruka", - "wayToGetLineChannelToken": "Prvo, pristupite {0}, kreirajte pružatelja usluga te kanal (API za razmjenu poruka), zatim možete dobiti token za pristup kanalu te korisnički ID za polja iznad.", - "Icon URL": "URL slike", - "aboutIconURL": "Možete postaviti poveznicu na sliku u polju \"URL slike\" kako biste spriječili korištenje zadane slike. Ovo se polje neće koristiti ako je postavljeno polje \"Emotikon\".", - "aboutMattermostChannelName": "Možete promijeniti kanal u kojeg webhook šalje tako da ispunite polje \"Naziv kanala\". Ta opcija mora biti omogućena unutar Mattermost postavki za webhook. Primjerice: #neki-kanal", - "matrix": "Matrix", - "promosmsTypeEco": "SMS ECO - jeftina, ali spora opcija koja je često preopterećena. Ograničeno samo na primatelje unutar Poljske.", - "promosmsTypeFlash": "SMS FLASH - Poruka se automatski pojavljuje na uređaju primatelja. Ograničeno samo na primatelje unutar Poljske.", - "promosmsTypeFull": "SMS FULL - Premium razina usluge, dozvoljava postavljanje naziva SMS pošiljatelja (Naziv mora biti registriran). Usluga pouzdana za obavijesti.", - "promosmsTypeSpeed": "SMS SPEED - Usluga najvećeg prioriteta. Brza i pouzdana, ali skupa (otprilike dvostruko skuplja od cijene usluge SMS FULL).", - "promosmsPhoneNumber": "Telefonski broj (za primatelje unutar Poljske nije potrebno navoditi pozivni broj države)", - "promosmsSMSSender": "Naziv SMS pošiljatelja: Registriran naziv ili jedan od zadanih: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu URL webhooka", - "matrixHomeserverURL": "URL Matrix homeservera (uključujući http(s):// te port, ako je potrebno)", - "Internal Room Id": "Interni ID sobe", - "matrixDesc1": "Interni ID sobe se može pronaći u naprednim postavkama sobe unutar Matrix klijenta. ID sobe nalikuje idućem zapisu: !QMdRCpUIfLwsfjxye6:home.server.", - "matrixDesc2": "Preporučuje se stvaranje novog korisnika te suzdržavanje od korištenja pristupnog tokena vlastitog Matrix korisnika. Novog korisnika potrebno je dodati u sobe u kojima želite primati obavijesti. Pristupni token možete dobiti pokretanjem naredbe {0}", - "Method": "Metoda", - "Body": "Tijelo", - "Headers": "Zaglavlja", - "PushUrl": "Push URL", - "HeadersInvalidFormat": "Zaglavlja nisu nije valjani JSON: ", - "BodyInvalidFormat": "Tijelo zahtjeva nije valjani JSON: ", - "Monitor History": "Povijest monitora", - "clearDataOlderThan": "Podaci o povijesti monitora čuvaju se {0} dana.", - "PasswordsDoNotMatch": "Lozinke se ne poklapaju.", - "records": "zapisa", - "One record": "Jedan zapis", - "Showing {from} to {to} of {count} records": "Prikaz zapisa {from}-{to} od sveukupno {count}", - "steamApiKeyDescription": "Za praćenje Steam poslužitelja za igru, potrebno je imati Steam Web-API ključ. Možete registrirati vlastiti ključ ovdje: ", - "Current User": "Trenutni korisnik", - "recent": "Nedavno", - "Done": "Gotovo", - "Info": "Informacije", - "Security": "Sigurnost", - "Shrink Database": "Smanji bazu podataka", - "Pick a RR-Type...": "Odaberite vrstu DNS zapisa od navedenih…", - "Pick Accepted Status Codes...": "Odaberite HTTP statusne kodove koji će biti prihvaćeni…", - "Steam API Key": "Steam API ključ", - "Default": "Zadano", - "HTTP Options": "HTTP Postavke", - "Create Incident": "Novi izvještaj o incidentu", - "Title": "Naslov", - "Content": "Sadržaj", - "Style": "Stil", - "info": "informacija", - "warning": "upozorenje", - "danger": "opasnost", - "primary": "primarno", - "light": "svijetlo", - "dark": "tamno", - "Post": "Objavi", - "Created": "Stvoreno", - "Last Updated": "Uređeno", - "Please input title and content": "Naslov i sadržaj ne mogu biti prazni", - "Unpin": "Ukloni", - "Switch to Light Theme": "Prebaci na svijetli način", - "Switch to Dark Theme": "Prebaci na tamni način", - "Show Tags": "Pokaži oznake", - "Hide Tags": "Sakrij oznake", - "Description": "Opis", - "No monitors available.": "Nema dostupnih monitora.", - "Add one": "Stvori jednog", - "No Monitors": "Bez monitora", - "Untitled Group": "Bezimena grupa", - "Services": "Usluge", - "Discard": "Odbaci", - "Cancel": "Otkaži", - "Powered by": "Pokreće", - "Saved.": "Spremljeno.", - "PushByTechulus": "Push by Techulus", - "GoogleChat": "Google Chat (preko platforme Google Workspace)", - "serwersms": "SerwerSMS.pl", - "serwersmsAPIUser": "API korisničko ime (uključujući webapi_ prefiks)", - "serwersmsAPIPassword": "API lozinka", - "serwersmsPhoneNumber": "Broj telefona", - "serwersmsSenderName": "Ime SMS pošiljatelja (registrirano preko korisničkog portala)", - "stackfield": "Stackfield", - "smtpDkimSettings": "DKIM postavke", - "smtpDkimDesc": "Za više informacija, postoji Nodemailer DKIM {0}.", - "documentation": "dokumentacija", - "smtpDkimDomain": "Domena", - "smtpDkimKeySelector": "Odabir ključa", - "smtpDkimPrivateKey": "Privatni ključ", - "smtpDkimHashAlgo": "Hash algoritam (neobavezno)", - "smtpDkimheaderFieldNames": "Ključevi zaglavlja za potpis (neobavezno)", - "smtpDkimskipFields": "Ključevi zaglavlja koji se neće potpisati (neobavezno)", - "gorush": "Gorush", - "alerta": "Alerta", - "alertaApiEndpoint": "Krajnja točka API-ja (Endpoint)", - "alertaEnvironment": "Okruženje (Environment)", - "alertaApiKey": "API ključ", - "alertaAlertState": "Stanje upozorenja", - "alertaRecoverState": "Stanje oporavka", - "deleteStatusPageMsg": "Sigurno želite obrisati ovu statusnu stranicu?", - "resendEveryXTimes": "Ponovno pošalji svakih {0} puta", - "resendDisabled": "Ponovno slanje je onemogućeno", - "dnsPortDescription": "Port DNS poslužitelja. Zadana vrijednost je 53. Moguće je promijeniti ga u svakom trenutku.", - "Resend Notification if Down X times consecutively": "Ponovno pošalji obavijest ako je usluga nedostupna više puta zaredom", - "topic": "Tema", - "topicExplanation": "MQTT tema koja će se monitorirati", - "successMessage": "Poruka o uspjehu", - "successMessageExplanation": "MQTT poruka koja se smatra uspješnom", - "error": "greška", - "critical": "kritično", - "Customize": "Prilagodi", - "Custom Footer": "Prilagođeno podnožje", - "Custom CSS": "Prilagođeni CSS", - "wayToGetPagerDutyKey": "Ključ možete dobiti odlaskom na \"Service -> Service Directory -> (Odabrani servis) -> Integrations -> Add integration\". Ovdje pretražite za \"Events API V2\". Više informacija {0}", - "Integration Key": "Ključ integracije", - "Integration URL": "URL integracije", - "Auto resolve or acknowledged": "Automatsko razrješavanje i priznavanje", - "do nothing": "Ne radi ništa", - "auto acknowledged": "Automatsko priznavanje", - "auto resolve": "Automatsko razrješavanje", - "Proxies": "Proxy poslužitelji", - "default": "Zadano", - "enabled": "Omogućeno", - "setAsDefault": "Postavi kao zadano", - "deleteProxyMsg": "Sigurno želite obrisati ovaj proxy za sve monitore?", - "proxyDescription": "Proxy poslužitelji moraju biti dodijeljni monitoru kako bi funkcionirali.", - "enableProxyDescription": "Onemogućeni proxy poslužitelj neće imati učinak na zahtjeve monitora. Možete privremeno onemogućiti proxy poslužitelja za sve monitore.", - "setAsDefaultProxyDescription": "Ovaj proxy poslužitelj bit će odmah omogućen za nove monitore. I dalje ga možete onemogućiti za svaki monitor zasebno.", - "Certificate Chain": "Lanac certifikata", - "Valid": "Važeći", - "Invalid": "Nevažeći", - "AccessKeyId": "AccessKey identifikator", - "SecretAccessKey": "AccessKey tajni ključ", - "PhoneNumbers": "Telefonski brojevi", - "TemplateCode": "Predložak koda", - "SignName": "Potpis", - "Sms template must contain parameters: ": "SMS predložak mora sadržavati parametre: ", - "Bark Endpoint": "Bark krajnja točka (endpoint)", - "Bark Group": "Bark grupa", - "Bark Sound": "Bark zvuk", - "WebHookUrl": "URL webhooka", - "SecretKey": "Tajni ključ", - "For safety, must use secret key": "Korištenje tajnog ključa je obavezno", - "Device Token": "Token uređaja", - "Platform": "Platforma", - "Huawei": "Huawei", - "High": "Visoko", - "Retry": "Ponovnih pokušaja", - "Topic": "Tema", - "WeCom Bot Key": "WeCom ključ Bota", - "Setup Proxy": "Dodaj proxy poslužitelj", - "Proxy Protocol": "Protokol", - "Proxy Server": "Proxy poslužitelj", - "Proxy server has authentication": "Proxy poslužitelj ima autentikaciju", - "User": "Korisnik", - "Installed": "Instalirano", - "Not installed": "Nije instalirano", - "Running": "Pokrenuto", - "Not running": "Nije pokrenuto", - "Remove Token": "Ukloni Token", - "Start": "Pokreni", - "Stop": "Zaustavi", - "Uptime Kuma": "Uptime Kuma", - "Add New Status Page": "Dodaj novu statusnu stranicu", - "Slug": "Slug", - "Accept characters:": "Dozvoljeni znakovi:", - "startOrEndWithOnly": "Započinje ili završava znakovima {0}", - "No consecutive dashes": "Bez uzastopnih povlaka", - "Next": "Sljedeće", - "The slug is already taken. Please choose another slug.": "Slug je zauzet. Odaberite novi slug.", - "No Proxy": "Bez proxy poslužitelja", - "Authentication": "Autentikacija", - "HTTP Basic Auth": "HTTP \"Basic\" autentifikacija", - "New Status Page": "Dodaj statusnu stranicu", - "Page Not Found": "Stranica nije pronađena", - "Reverse Proxy": "Reverzni proxy", - "Backup": "Sigurnosno kopiranje", - "About": "O Uptime Kumi", - "wayToGetCloudflaredURL": "(Preuzmite cloudflared s {0})", - "cloudflareWebsite": "Cloudflare web stranice", - "Message:": "Poruka:", - "Don't know how to get the token? Please read the guide:": "Ne znate kako doći do tokena? Pročitajte vodič:", - "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Trenutna veza možda bude prekinuta jer se koristi Cloudflare tuneliranje. Sigurno želite zaustaviti? Unesite lozinku za potvrdu.", - "HTTP Headers": "HTTP zaglavlja", - "Trust Proxy": "Vjeruj proxy poslužitelju", - "Other Software": "Ostali programi", - "For example: nginx, Apache and Traefik.": "Primjerice: nginx, Apache ili Traefik.", - "Please read": "Molimo pročitajte", - "Subject:": "Predmet:", - "Valid To:": "Valjano do:", - "Days Remaining:": "Preostalo dana:", - "Issuer:": "Izdavatelj:", - "Fingerprint:": "Fingerprint:", - "No status pages": "Nema statusnih stranica", - "Domain Name Expiry Notification": "Obavijest za istek domena", - "Proxy": "Proxy", - "Date Created": "Datum stvaranja", - "HomeAssistant": "Home Assistant", - "onebotHttpAddress": "OneBot HTTP adresa", - "onebotMessageType": "OneBot tip poruke", - "onebotGroupMessage": "Grupna", - "onebotPrivateMessage": "Privatna", - "onebotUserOrGroupId": "ID korisnika/grupe", - "onebotSafetyTips": "Pristupni token mora biti postavljen", - "PushDeer Key": "PushDeer ključ", - "Footer Text": "Tekst podnožja", - "Show Powered By": "Pokaži natpis 'Pokreće...'", - "Domain Names": "Domene", - "signedInDisp": "Prijavljeni ste kao {0}", - "signedInDispDisabled": "Autentikacija onemogućena.", - "RadiusSecret": "Radius Tajna", - "RadiusSecretDescription": "Dijeljena Tajna između klijenta i poslužitelja", - "RadiusCalledStationId": "Called Station ID", - "RadiusCalledStationIdDescription": "Identifikator pozivne stanice", - "RadiusCallingStationId": "Calling Station ID", - "RadiusCallingStationIdDescription": "Identifikator pozivajuće stanice", - "Certificate Expiry Notification": "Obavijest za istek certifikata", - "API Username": "API korisničko ime", - "API Key": "API ključ", - "Recipient Number": "Broj primatelja", - "From Name/Number": "Naziv/broj pošiljatelja", - "Leave blank to use a shared sender number.": "Ostaviti prazno za korištenje dijeljenog broja pošiljatelja.", - "Octopush API Version": "Verzija Octopush API-ja", - "Legacy Octopush-DM": "Zastarijela Octopush-DM", - "endpoint": "krajnja točka (endpoint)", - "octopushAPIKey": "\"API ključ\" iz HTTP API postavki na upravljačkoj ploči", - "octopushLogin": "\"Korisničko ime\" iz HTTP API postavki", - "promosmsLogin": "API korisničko ime", - "promosmsPassword": "API lozinka", - "pushoversounds pushover": "Pushover (zadano)", - "pushoversounds bike": "Bicikl", - "pushoversounds bugle": "Truba", - "pushoversounds cashregister": "Blagajna", - "pushoversounds classical": "Classical", - "pushoversounds cosmic": "Kozmički", - "pushoversounds falling": "Padanje", - "pushoversounds gamelan": "Gamelan", - "pushoversounds incoming": "Dolazno", - "pushoversounds intermission": "Intermisija", - "pushoversounds magic": "Čarolija", - "pushoversounds mechanical": "Mehanički", - "pushoversounds pianobar": "Bar s klavirom", - "pushoversounds siren": "Sirena", - "pushoversounds spacealarm": "Svemirski alarm", - "pushoversounds tugboat": "Remorker", - "pushoversounds alien": "Vanzemaljski alarm (dugačko)", - "pushoversounds climb": "Penjanje (dugačko)", - "pushoversounds persistent": "Uporno (dugačko)", - "pushoversounds echo": "Pushover jeka (dugačko)", - "pushoversounds updown": "Gore-dolje (dugačko)", - "pushoversounds vibrate": "Samo vibracija", - "pushoversounds none": "Utišano (bez zvuka)", - "pushyAPIKey": "Tajni API ključ", - "pushyToken": "Token uređaja", - "Show update if available": "Pokaži moguću nadogradnju", - "Also check beta release": "Provjeravaj i za beta izdanja", - "Using a Reverse Proxy?": "Koristi li se reverzni proxy?", - "Check how to config it for WebSocket": "Provjerite kako se konfigurira za WebSocket protokol", - "Steam Game Server": "Steam poslužitelj igre", - "Most likely causes:": "Najvjerojatniji uzroci:", - "The resource is no longer available.": "Resurs više nije dostupan.", - "There might be a typing error in the address.": "Možda je nastala greška pri upisu adrese.", - "What you can try:": "Što možete pokušati:", - "Retype the address.": "Ponovno napišite adresu.", - "Go back to the previous page.": "Vratite se na prethodnu stranicu.", - "Coming Soon": "Dolazi uskoro", - "wayToGetClickSendSMSToken": "Možete dobiti API korisničko ime i API ključ sa {0}.", - "Connection String": "Tekst veze", - "Query": "Upit", - "settingsCertificateExpiry": "TLS istek certifikata", - "certificationExpiryDescription": "HTTPS monitori će obavijesiti kada je istek TLS certifikata za:", - "Setup Docker Host": "Dodaj Docker domaćina", - "Connection Type": "Tip veze", - "Docker Daemon": "Docker daemon", - "deleteDockerHostMsg": "Sigurno želite izbrisati ovog Docker domaćina za sve monitore?", - "socket": "Docker socket", - "tcp": "TCP / HTTP", - "Docker Container": "Docker kontejner", - "Container Name / ID": "Naziv / ID kontejnera", - "Docker Host": "Docker domaćin", - "Docker Hosts": "Docker domaćini", - "ntfy Topic": "ntfy tema", - "Domain": "Domena", - "Workstation": "Radna stanica", - "disableCloudflaredNoAuthMsg": "Lozinka nije nužna dok je isključena autentikacija.", - "trustProxyDescription": "Vjeruj 'X-Forwarded-*' zaglavljima. Ako želite dobiti ispravnu IP adresu klijenta i Uptime Kuma je iza reverznog proxy poslužitelja, trebate omogućiti ovo.", - "wayToGetLineNotifyToken": "Možete dobiti pristupni token sa {0}", - "Examples": "Primjeri", - "Home Assistant URL": "URL Home Assistanta", - "Long-Lived Access Token": "Dugotrajni pristupni token", - "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Dugotrajni pristupni token može se kreirati klikom na korisničko ime (dolje lijevo) u Home Assistantu, pomicanjem do dna, te klikom na 'Create Token'. ", - "Notification Service": "Notification Service", - "default: notify all devices": "zadano ponašanje: obavijesti sve uređaje", - "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Popis servisa za obavijesti u Home Assistantu nalaze se pod \"Developer Tools > Services\" te pretražiti \"notification\".", - "Automations can optionally be triggered in Home Assistant:": "Automacije se mogu okinuti u Home Assistantu:", - "Trigger type:": "Tip triggera:", - "Event type:": "Tip eventa:", - "Event data:": "Podaci eventa:", - "Then choose an action, for example switch the scene to where an RGB light is red.": "Potrebno je i odabrati akciju za izvođenje na Home Assistantu.", - "Frontend Version": "Inačica sučelja", - "Frontend Version do not match backend version!": "Inačica sučelja ne odgovara poslužitelju!", - "monitorToastMessagesLabel": "Skočne obavijesti Monitora", - "toastSuccessTimeout": "Vrijeme isteka skočnih obavijesti o uspjehu", - "toastErrorTimeout": "Vrijeme isteka skočnih obavijesti o pogrešci", - "Enter the list of brokers": "Upišite popis brokera", - "Press Enter to add broker": "Pritisnite Enter za dodavanje brokera", - "Kafka Topic Name": "Naziv Kafka teme", - "Kafka Producer Message": "Poruka Kafka producera", - "Enable Kafka SSL": "Omogući SSL", - "Enable Kafka Producer Auto Topic Creation": "Omogući automatsku izradu teme za Kafka producera", - "Kafka SASL Options": "Kafka SASL opcije", - "Mechanism": "Mehanizam", - "Pick a SASL Mechanism...": "Odaberite SASL mehanizam…", - "AccessKey Id": "ID pristupnog ključa", - "Secret AccessKey": "Tajni pristupni ključ", - "Session Token": "Token sesije", - "Schedule maintenance": "Zakaži održavanje", - "Select status pages...": "Odaberi statusne stranice…", - "webhookAdditionalHeadersTitle": "Dodatna zaglavlja", - "webhookAdditionalHeadersDesc": "Postavlja dodatna polja zaglavlja koja se šalju s webhookom. Svako zaglavlje treba se definirati kao JSON par ključ-vrijednost.", - "Packet Size": "Veličina paketa", - "backupRecommend": "Umjesto toga napravite ručnu sigurnosnu kopiju cijelog volumena ili izravno direktorija s podacima (./data/).", - "No Maintenance": "Ne postoje zakazana održavanja", - "Server Timezone": "Vremenska zona poslužitelja", - "dnsCacheDescription": "Možda ne radi kako spada u nekim IPv6 okruženjima. Onemogućite ako naiđete na probleme.", - "Select": "Odaberi", - "tailscalePingWarning": "Kako biste koristili Tailscale Ping monitor, trebate instalirati Uptime Kuma bez Dockera te također instalirati Tailscale klijent na svoj poslužitelj.", - "telegramProtectContentDescription": "Ako je omogućeno, poruke bota će biti zaštićene od prosljeđivanja i spremanja.", - "enableNSCD": "Omogući NSCD (Name Service Cache Daemon) za sve DNS zahtjeve", - "chromeExecutableDescription": "Za korisnike Dockera, ako Chromium još nije instaliran, instalacija i prikaz rezultata testa može potrajati nekoliko minuta. Zauzima 1 GB prostora na disku.", - "grpcMethodDescription": "Naziv metode automatski se pretvara u camelCase format. Primjerice, \"say hello\" će se pretvoriti u \"sayHello\".", - "wayToGetKookBotToken": "Kreirajte aplikaciju i preuzmite token svog bota na {0}", - "wayToGetKookGuildID": "Uključite 'Developer Mode' za Kook u postavkama i desnom tipkom miša kliknite na guild kako biste dobili njegov ID", - "Lowcost": "Niskotarifni", - "SendKey": "Ključ za slanje (SendKey)", - "You can divide numbers with": "Možete odvojiti brojeve pomoću", - "goAlertInfo": "GoAlert je aplikacija otvorenog koda za zakazivanje poziva, automatiziranu eskalaciju i slanje obavijesti (poput SMS-a ili glasovnih poziva). Automatski obavijestite pravu osobu, na pravi način i u pravo vrijeme! {0}", - "smseagleTo": "Broj(evi) telefona", - "smseagleGroup": "Nazivi grupa telefonskog imenika", - "smseagleRecipient": "Primatelj(i) (višestruke vrijednosti moraju se odvojiti zarezom)", - "pushDeerServerDescription": "Ostavite prazno za korištenje službenog poslužitelja", - "Edit Tag": "Uredi oznaku", - "Expiry date": "Datum isteka", - "Schedule Maintenance": "Zakazivanje održavanja", - "Edit Maintenance": "Uređivanje održavanja", - "uninstall": "Deinstaliraj", - "uninstalling": "Deinstalacija", - "Badge Type": "Tip značke", - "apiKeyAddedMsg": "Vaš API ključ je dodan. Spremite ga sada jer se više neće prikazivati.", - "pagertreeDoNothing": "Ne čini ništa", - "wayToGetPagerTreeIntegrationURL": "Nakon što stvorite Uptime Kuma integraciju u aplikaciji PagerTree, kopirajte krajnju točku (endpoint). Pogledajte sve pojedinosti {0}", - "Show Clickable Link Description": "Ako je označeno, svi koji imaju pristup ovoj statusnoj stranici mogu imati pristup URL-u Monitora.", - "monitorToastMessagesDescription": "Skočne obavijesti za monitore nestaju nakon zadanog vremena u sekundama. Vrijednost od -1 onemogućuje vremensko ograničenje, 0 onemogućuje skočne obavijesti.", - "Authorization Identity": "Identitet autorizacije", - "weekdayShortThu": "Čet", - "setupDatabaseChooseDatabase": "Koju bazu podataka želite koristiti?", - "setupDatabaseEmbeddedMariaDB": "Ne morate ništa dodatno postavljati. Ovaj docker image ima ugrađenu i konfiguriranu MariaDB bazu podataka za Vas. Uptime Kuma će se spojiti na ovu bazu preko UNIX socketa.", - "setupDatabaseMariaDB": "Spojite vanjsku MariaDB bazu podataka. Morate unijeti informacije o konekciji prema bazi.", - "setupDatabaseSQLite": "Jednostavna datoteka s bazom podataka, preporuča se samo za manje implementacije. Prije inačice v2.0.0, Uptime Kuma je koristila SQLite kao zadanu bazu podataka.", - "dbName": "Naziv baze podataka", - "Start of maintenance": "Početak održavanja", - "All Status Pages": "Sve statusne stranice", - "Affected Monitors": "Zahvaćeni Monitori", - "Pick Affected Monitors...": "Odaberi zahvaćene Monitore…", - "filterActivePaused": "Pauzirano", - "Add New Tag": "Dodaj novu oznaku", - "statusPageRefreshIn": "Osvježavanje za: {0}", - "webhookCustomBodyDesc": "Prilagodite tijelo HTTP zahtjeva. Dozvoljene varijable predloška: {msg}, {heartbeat}, {monitor}.", - "webhookBodyPresetOption": "Unaprijed postavljeno - {0}", - "webhookBodyCustomOption": "Prilagođeno tijelo zahtjeva", - "selectedMonitorCount": "Odabrano: {0}", - "Check/Uncheck": "Označi/odznači", - "telegramMessageThreadID": "(Neobavezno) ID dretve poruka", - "telegramMessageThreadIDDescription": "Neobavezni jedinstveni identifikator za dretvu poruka (temu) foruma; samo za forumske supergrupe", - "telegramSendSilently": "Pošalji nečujno", - "telegramSendSilentlyDescription": "Šalje poruku nečujno. Primatelji će dobiti obavijest bez zvuka.", - "telegramProtectContent": "Zaštiti od prosljeđivanja i spremanja", - "Optional": "Neobavezno", - "or": "ili", - "weekdayShortTue": "Uto", - "weekdayShortWed": "Sri", - "weekdayShortFri": "Pet", - "weekdayShortSat": "Sub", - "dayOfWeek": "Dan u tjednu", - "dayOfMonth": "Dan u mjesecu", - "lastDay": "Posljednji dan", - "lastDay1": "Posljednji dan mjeseca", - "lastDay2": "Pretposljednji dan mjeseca", - "lastDay3": "Treći do posljednjeg dana u mjesecu", - "lastDay4": "Četvrti do posljednjeg dana u mjesecu", - "pauseMaintenanceMsg": "Jeste li sigurni da želite pauzirati?", - "maintenanceStatus-under-maintenance": "Održavanje u tijeku", - "maintenanceStatus-inactive": "Neaktivno", - "maintenanceStatus-scheduled": "Zakazano", - "maintenanceStatus-ended": "Završeno", - "maintenanceStatus-unknown": "Nepoznato", - "Display Timezone": "Prikaži vremensku zonu", - "statusPageMaintenanceEndDate": "Kraj", - "IconUrl": "URL ikone", - "Enable": "Omogući", - "Disable": "Onemogući", - "sameAsServerTimezone": "Ista kao i vremenska zona poslužitelja", - "chromeExecutable": "Izvršna datoteka za Chrome/Chromium", - "chromeExecutableAutoDetect": "Automatska detekcija", - "Single Maintenance Window": "Jednokratno održavanje", - "Maintenance Time Window of a Day": "Vrijeme održavanja u danu", - "Effective Date Range": "Efektivan raspon datuma (neobavezno)", - "Clone": "Kloniraj", - "dataRetentionTimeError": "Razdoblje zadržavanja mora biti 0 ili veće", - "infiniteRetention": "Postavite na 0 za beskonačno zadržavanje.", - "confirmDeleteTagMsg": "Jeste li sigurni da želite izbrisati ovu oznaku? Monitori povezani s ovom oznakom neće biti izbrisani.", - "enableGRPCTls": "Omogući sigurno slanje gRPC zahtjeva koristeći TLS", - "deleteMaintenanceMsg": "Jeste li sigurni da želite izbrisati ovo održavanje?", - "Guild ID": "ID za guild", - "pushoverMessageTtl": "Vrijeme isteka poruke (u sekundama)", - "Proto Method": "Metoda poziva", - "Proto Content": "Proto sadržaj", - "Economy": "Ekonomski", - "high": "visoko", - "SMSManager API Docs": "Dokumentacija SMSManager API-ja ", - "Gateway Type": "Tip poveznika (gateway)", - "Base URL": "Osnovni URL", - "goAlertIntegrationKeyInfo": "Nabavite generički integracijski API ključ za ovu uslugu u formatu \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\", koji je obično vrijednost token parametra kopiranog URL-a.", - "aboutNotifyChannel": "Ova opcija će poslati mobilnu ili desktop obavijest za sve članove kanala, bez obzira na to jesu li trenutno dostupni ili ne.", - "smseagleContact": "Nazivi kontakata telefonskog imenika", - "smseagleRecipientType": "Tip primatelja", - "smseagleToken": "Token za pristup API-ju", - "smseagleUrl": "URL Vašeg SMSEagle uređaja", - "smseagleEncoding": "Pošalji kao Unicode", - "smseaglePriority": "Prioritet poruke (0-9, zadana vrijednost je 0)", - "Server URL should not contain the nfty topic": "URL poslužitelja ne smije sadržavati temu nfty", - "PushDeer Server": "PushDeer poslužitelj", - "Custom Monitor Type": "Prilagođeni tip Monitora", - "Google Analytics ID": "Google Analytics identifikator", - "Server Address": "Adresa poslužitelja", - "Learn More": "Saznaj više", - "Body Encoding": "Vrsta sadržaja u tijelu zahtjeva", - "API Keys": "API ključevi", - "Expiry": "Istek", - "Don't expire": "Bez isteka", - "Continue": "Nastavi", - "Add Another": "Dodaj još jedan", - "Key Added": "Ključ dodan", - "Add API Key": "Dodaj API ključ", - "No API Keys": "Nema dodanih API ključeva", - "apiKey-active": "Aktivan", - "apiKey-expired": "Istekao", - "apiKey-inactive": "Neaktivan", - "Expires": "Ističe", - "disableAPIKeyMsg": "Jeste li sigurni da želite onemogućiti ovaj API ključ?", - "Generate": "Generiraj", - "pagertreeIntegrationUrl": "URL integracije", - "pagertreeUrgency": "Hitnost", - "pagertreeSilent": "Utišano", - "pagertreeLow": "Niska", - "pagertreeMedium": "Srednja", - "pagertreeHigh": "Visoka", - "pagertreeCritical": "Kritična", - "pagertreeResolve": "Automatsko rješavanje", - "lunaseaTarget": "Cilj", - "lunaseaDeviceID": "ID uređaja", - "lunaseaUserID": "Korisnički ID", - "ntfyAuthenticationMethod": "Metoda provjere autentičnosti", - "ntfyUsernameAndPassword": "Korisničko ime i lozinka", - "twilioAccountSID": "SID korisničkog računa", - "twilioAuthToken": "Token za autentifikaciju / tajni API ključ", - "twilioFromNumber": "Broj pošiljatelja", - "twilioToNumber": "Broj primatelja", - "Show Clickable Link": "Pokaži poveznicu", - "Open Badge Generator": "Otvori generator znački", - "Badge Duration (in hours)": "Trajanje značke (u satima)", - "Badge Prefix": "Prefiks vrijednosti značke", - "Badge Suffix": "Sufiks vrijednosti značke", - "Badge Label": "Natpis značke", - "Badge Label Color": "Boja natpisa značke", - "Badge Color": "Boja značke", - "Badge Label Prefix": "Prefiks natpisa značke", - "Badge Preview": "Pretpregled značke", - "Badge Label Suffix": "Sufiks natpisa značke", - "Badge Up Color": "Boja značke za dostupnost", - "Badge Down Color": "Boja značke za nedostupnost", - "Badge Pending Color": "Boja značke za monitore u tijeku", - "Badge Maintenance Color": "Boja značke za monitore u održavanju", - "Badge Warn Color": "Boja značke za upozorenje", - "Badge Warn Days": "Dani značke za upozorenje", - "Badge Down Days": "Dani značke za nedostupnost", - "Badge value (For Testing only.)": "Vrijednost značke (samo za testiranje)", - "Badge URL": "URL značke", - "Group": "Grupa", - "Monitor Group": "Grupa Monitora", - "Badge Style": "Stil značke", - "Custom": "Prilagođeno", - "styleElapsedTime": "Vremenske oznake ispod trake dostupnosti", - "styleElapsedTimeShowNoLine": "Pokaži (bez linije)", - "styleElapsedTimeShowWithLine": "Pokaži (s linijom)", - "recurringInterval": "Periodično", - "Recurring": "Ponavljajući", - "strategyManual": "Ručno aktivan/neaktivan", - "warningTimezone": "Koristi vremensku zonu poslužitelja", - "weekdayShortMon": "Pon", - "weekdayShortSun": "Ned", - "startDateTime": "Vrijeme početka", - "endDateTime": "Vrijeme završetka", - "cronExpression": "Cron izraz", - "cronSchedule": "Raspored: ", - "invalidCronExpression": "Nevaljali Cron izraz: {0}", - "Date and Time": "Datum i vrijeme", - "DateTime Range": "Vremenski raspon", - "loadingError": "Nije moguće dohvatiti podatke, pokušajte ponovno kasnije.", - "plugin": "Dodatak | Dodaci", - "install": "Instaliraj", - "installing": "Instaliranje", - "confirmUninstallPlugin": "Jeste li sigurni da želite deinstalirati ovaj dodatak?", - "notificationRegional": "Specifično za regiju", - "Clone Monitor": "Kloniraj Monitor", - "cloneOf": "Klon monitora {0}", - "wayToGetZohoCliqURL": "Možete naučiti kako kreirati URL za webhook {0}.", - "affectedMonitorsDescription": "Odaberite monitore koji će biti zahvaćeni održavanjem", - "recurringIntervalMessage": "Pokreni jednom svaki dan | Pokreni jednom svakih {0} dana", - "affectedStatusPages": "Prikazuje poruku o održavanju na odabranim statusnim stranicama", - "atLeastOneMonitor": "Odaberite barem jedan zahvaćeni Monitor", - "invertKeywordDescription": "Postavi da ključna riječ mora biti odsutna umjesto prisutna.", - "Strategy": "Strategija", - "Free Mobile User Identifier": "Besplatni mobilni korisnički identifikator", - "Free Mobile API Key": "Besplatni mobilni ključ za API", - "Enable TLS": "Omogući TLS", - "Proto Service Name": "Naziv servisa", - "promosmsAllowLongSMS": "Dozvoli dugačke SMS-ove", - "Notify Channel": "Obavijesti cijeli kanal", - "Request Timeout": "Vrijeme isteka zahtjeva", - "timeoutAfter": "Istek nakon {0} sekundi", - "backupOutdatedWarning": "Zastarjelo: Budući da je dodano puno značajki, a ova je pomalo neodržavana, ne može generirati niti vratiti potpunu sigurnosnu kopiju.", - "Enable DNS Cache": "(Zastarijelo) Omogući DNS privremenu memoriju (cache) za HTTP(s) monitore", - "Home": "Početna", - "deleteAPIKeyMsg": "Jeste li sigurni da želite obrisati ovaj API ključ?", - "twilioApiKey": "API ključ (neobavezno)", - "Kafka Brokers": "Kafka brokeri", - "Game": "Igra", - "Passive Monitor Type": "Pasivni tip Monitora", - "markdownSupported": "Podržana je Markdown sintaksa", - "statusMaintenance": "Održavanje", - "General Monitor Type": "Općeniti tip Monitora", - "Maintenance": "Održavanje", - "Specific Monitor Type": "Određeni tip Monitora", - "Monitor": "Monitor | Monitori", - "Invert Keyword": "Obrni ključnu riječ", - "filterActive": "Aktivnost", - "Cannot connect to the socket server": "Nije moguće spojiti se na socket poslužitelj", - "Reconnecting...": "Ponovno povezivanje...", - "Expected Value": "Očekivana vrijednost", - "Json Query": "JSON upit", - "Help": "Pomoć", - "noGroupMonitorMsg": "Nije dostupno. Prvo kreirajte grupu Monitora.", - "Close": "Zatvori", - "Request Body": "Tijelo zahtjeva", - "wayToGetFlashDutyKey": "Možete otići na 'Channel' -> (Odaberite kanal) -> 'Integrations' -> 'Add a new integration' i odaberite 'Uptime Kuma' da biste dobili push adresu. Zatim kopirajte integracijski ključ u adresu. Za više informacija posjetite", - "FlashDuty Severity": "Stupanj ozbiljnosti", - "nostrRelays": "Nostr releji", - "nostrRelaysHelp": "Jedan URL releja po liniji", - "nostrSender": "Privatni ključ pošiljatelja (nsec)", - "nostrRecipients": "Javni ključevi primatelja (npub)", - "nostrRecipientsHelp": "U formatu npub, jedan ključ po liniji", - "showCertificateExpiry": "Pokaži istek certifikata", - "noOrBadCertificate": "Nepostojeći ili nevaljali certifikat", - "gamedigGuessPort": "Gamedig: Pogodi vrijednost porta", - "gamedigGuessPortDescription": "Port koji koristi Valve Server Query Protocol može se razlikovati od klijentskog porta. Pokušajte uključiti ovu opciju ako Monitor ne može uspostaviti vezu s vašim poslužiteljem.", - "Monitor Setting": "Postavka monitora korisnika {0}", - "Badge Generator": "Generator znački korisnika {0}", - "Bark API Version": "Verzija Bark API-ja", - "authInvalidToken": "Nevažeći token.", - "authIncorrectCreds": "Pogrešno korisničko ime ili lozinka.", - "2faAlreadyEnabled": "Dvofaktorska autentifikacija je već omogućena.", - "2faDisabled": "Dvofaktorska autentifikacija je onemogućena.", - "successAdded": "Uspješno dodano.", - "successPaused": "Uspješno pauzirano.", - "successEdited": "Uspješno uređeno.", - "successAuthChangePassword": "Lozinka je uspješno ažurirana.", - "successBackupRestored": "Sigurnosna kopija je uspješno vraćena.", - "successDisabled": "Uspješno onemogućeno.", - "successEnabled": "Uspješno omogućeno.", - "foundChromiumVersion": "Pronađen program Chromium ili Chrome. Inačica: {0}", - "pushViewCode": "Kako koristiti Monitor Push? (Prikaži kôd)", - "programmingLanguages": "Programski jezici", - "authUserInactiveOrDeleted": "Korisnik je neaktivan ili obrisan.", - "2faEnabled": "Dvofaktorska autentifikacija je omogućena.", - "successResumed": "Uspješno nastavljeno.", - "successDeleted": "Uspješno obrisano.", - "tagNotFound": "Oznaka nije pronađena.", - "pushOthers": "Ostali", - "Reset Token": "Poništi token", - "GrafanaOncallUrl": "URL za Grafana OnCall", - "liquidIntroduction": "Mogućnost korištenja predložaka postignuto je putem jezika Liquid. Pogledajte upute korištenja na {0}. Ovo su dostupne varijable:", - "templateLimitedToUpDownCertNotifications": "dostupno samo za obavijesti dostupnosti te isteka certifikata", - "emailCustomisableContent": "Prilagodljiv sadržaj", - "smtpLiquidIntroduction": "Sljedeća dva polja mogu se izraditi putem Liquid jezika za predloške. Upute za korištenje dostupne su na {0}. Ovo su dostupne varijable:", - "leave blank for default subject": "ostavite prazno za zadano polje predmeta", - "emailCustomBody": "Prilagođeno tijelo", - "leave blank for default body": "ostavite prazno za zadani sadržaj tijela", - "emailTemplateServiceName": "Naziv servisa", - "emailTemplateHostnameOrURL": "Naziv domaćina ili URL", - "emailTemplateStatus": "Status", - "emailTemplateMonitorJSON": "objekt koji opisuje Monitor", - "emailTemplateHeartbeatJSON": "objekt koji opisuje provjeru", - "emailTemplateMsg": "poruka obavijesti", - "emailTemplateLimitedToUpDownNotification": "dostupno samo za provjere dostupnosti, inače je null", - "templateMsg": "poruka obavijesti", - "templateHeartbeatJSON": "predmet koji opisuje provjeru", - "templateMonitorJSON": "objekt koji opisuje Monitor", - "templateLimitedToUpDownNotifications": "dostupno samo za obavijesti dostupnosti", - "noDockerHostMsg": "Nije dostupno. Morate postaviti Docker domaćina.", - "DockerHostRequired": "Postavite Docker domaćina za ovaj Monitor.", - "Browser Screenshot": "Snimka zaslona preglednika", - "successKeyword": "Ključna riječ za uspjeh", - "successKeywordExplanation": "MQTT ključna riječ koja označava uspješan odgovor", - "remoteBrowserToggle": "Chromium se pokreće unutar Uptime Kuma kontejnera. Možete koristiti udaljeni preglednik uključivanjem ove opcije.", - "deleteRemoteBrowserMessage": "Jeste li sigurni da želite ukloniti ovaj udaljeni preglednik za sve Monitore?", - "Remote Browsers": "Udaljeni preglednici", - "settingUpDatabaseMSG": "Postavljanje baze podatak u tijeku. Ovaj postupak može potrajati, budite strpljivi.", - "ntfyPriorityHelptextAllEvents": "Svi događaji šalju se s maksimalnim prioritetom", - "ntfyPriorityHelptextAllExceptDown": "Svi događaji šalju se ovim prioritetom, osim {0} događaja, koji imaju prioritet {1}", - "Search monitored sites": "Pretraži monitorirane stranice", - "statusPageSpecialSlugDesc": "Poseban slug {0}: ova stranica će se pokazati kada nijedan slug nije naveden", - "openModalTo": "Otvori modal do {0}", - "Add a domain": "Dodaj domenu", - "setup a new monitor group": "Postavljanje nove grupe Monitora", - "Remove domain": "Ukloni domenu '{0}'", - "Remote Browser": "Udaljeni preglednik", - "Add a Remote Browser": "Dodaj udaljeni preglednik", - "Remote Browser not found!": "Udaljeni preglednik nije pronađen!", - "remoteBrowsersDescription": "Udaljeni preglenici alternativa su lokalnom pokretanju Chromiuma. Postavite uslugu poput browserless.io ili spojite vlastiti preglednik", - "self-hosted container": "kontejner koji je self-hosted", - "useRemoteBrowser": "Korištenje udaljenog preglednika", - "Add a new expiry notification day": "Dodaj novi dan za istek obavijesti", - "Remove the expiry notification": "Ukloni dan za istek obavijesti", - "What is a Remote Browser?": "Što je udaljeni preglednik?", - "documentationOf": "{0} dokumentacija", - "wayToGetHeiiOnCallDetails": "Postupak pribavljanja identifikatora okidača i API ključeva objašnjeno je u {documentation}", - "gtxMessagingApiKeyHint": "Svoj API ključ možete pronaći odlaskom na postavku: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)", - "To Phone Number": "Telefonski broj primatelja", - "Originator type": "Izvorišni tip", - "Alphanumeric (recommended)": "Alfanumerički (preporučeno)", - "Destination": "Odredište", - "callMeBotGet": "Ovdje se može generirati krajnja točka za {0}, {1} i {2}. Imajte na umu da biste mogli biti ograničeni tarifom. Čini se da je trenutna tarifa: {3}", - "From Phone Number / Transmission Path Originating Address (TPOA)": "Telefonski broj pošiljatelja / Izvorišna adresa prijenosnog puta (TPOA)", - "whapiRecipient": "Broj telefona / Identifikator kontakta / Identifikator grupe", - "API URL": "URL API-ja", - "gtxMessagingToHint": "Međunarodni format, s početnim plusom (\"+\") ({e164}, {e212} ili {e214})", - "Telephone number": "Telefonski broj", - "cellsyntOriginatortypeAlphanumeric": "Alfanumerički niz znakova (maksimalne duljine 11). Primatelji ne mogu odgovoriti na poruku.", - "cellsyntOriginatortypeNumeric": "Brojčana vrijednost (maksimalno 15 znamenki) telefonskog broja u međunarodnom formatu bez \"00\" na početku (primjerice, broj iz UK-a 07920-110-000 trebao bi biti postavljen kao 447920110000). Primatelji mogu odgovoriti na poruku.", - "Originator": "Izvorište", - "Allow Long SMS": "Dozvoli dugačke SMS poruke", - "cellsyntSplitLongMessages": "Podijeli dugačke poruke na više dijelova, do maksimalnih 6. Maksimalan broj znakova tada je 153 x 6 = 918.", - "max 15 digits": "maks. 15 znamenki", - "max 11 alphanumeric characters": "maks. 11 alfanumeričkih znakova", - "wayToWriteWhapiRecipient": "Telefonski broj s međunarodnim prefiksom, ali bez znaka plus na početku ({0}), identifikatora kontakta ({1}) ili identifikatora grupe ({2}).", - "wayToGetWhapiUrlAndToken": "Moguće je pribaviti token te URL API-ja odlaskom na željeni kanal s {0}", - "gtxMessagingFromHint": "Na mobilnim telefonima, vaši primatelji vide TPOA prikazanu kao pošiljatelja poruke. Dopušteno je do 11 alfanumeričkih znakova, kratki kod, lokalni dugi kod ili međunarodni brojevi ({e164}, {e212} ili {e214})", - "cellsyntOriginator": "Vidljivo na mobilnom telefonu primatelja kao autor poruke. Dopuštene vrijednosti i funkcija ovise o vrsti izvorišta.", - "cellsyntDestination": "Telefonski broj primatelja u međunarodnom formatu s početnim 00 iza kojeg slijedi pozivni broj države (maksimalno 17 znamenki). Primjerice, za broj iz UK-a 07920-110-000 vrijednost mora biti 00447920110000 . Maksimalno 25.000 primatelja odvojenih zarezom po HTTP zahtjevu.", - "Channel access token (Long-lived)": "Pristupni token za kanal (dugovječni)", - "Your User ID": "Vaš korisnički identifikator", - "wayToGetSevenIOApiKey": "Posjetite nadzornu ploču odlaskom na app.seven.io > Developer > API Key i dodajte novi ključ koristeći zeleni gumb za dodavanje", - "Command": "Naredba", - "mongodbCommandDescription": "Pokreni MongoDB naredbu na bazi podataka. Za informacije o dostupnim naredbama posjetite {documentation}", - "Mentioning": "Spominjanje", - "Don't mention people": "Ne spominji ljude", - "Bitrix24 Webhook URL": "URL webhooka za Bitrix24", - "wayToGetBitrix24Webhook": "Možete napraviti webhook prateći upute na {0}", - "bitrix24SupportUserID": "Unesite svoj korisnički identifikator u Bitrix24. Možete ga dobiti iz URL-a odlaskom na vlastiti profil.", - "apiKeySevenIO": "SevenIO API ključ", - "Host URL": "URL domaćina", - "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Unesite adresu poslužitelja na koju se želite spojiti ili {localhost} ako planirate koristiti {local_mta}", - "Select message type": "Odaberite tip poruke", - "postToExistingThread": "Pošalji u postojeću temu / forumsku raspravu", - "Send to channel": "Slanje u kanal", - "Create new forum post": "Stvori novu forumsku objavu", - "whatHappensAtForumPost": "Stvori novu forumsku raspravu. Ova opcija ne dozvoljava objavu poruka u postojeću raspravu, za to je potrebno koristiti \"{option}\"", - "wayToGetDiscordThreadId": "Pronalaženje indentifikatora forumske rasprave ili objave slično je kao i za indentifikator kanala. Više o tome: {0}", - "Refresh Interval": "Interval osvježavanja", - "Refresh Interval Description": "Statusna stranica će napraviti cjelovito osvježavanje svake/ih {0} sekunde/i", - "locally configured mail transfer agent": "agent prijenosa e-pošte postavljen lokalno", - "ignoreTLSErrorGeneral": "Ignoriraj greške TLS-a/SSL-a prilikom spajanja", - "forumPostName": "Naziv forumske objave", - "e.g. {discordThreadID}": "npr. {discordThreadID}", - "threadForumPostID": "Identifikator forumske rasprave ili objave", - "Mention group": "Spomeni {group}", - "senderSevenIO": "Broj ili naziv pošiljatelja", - "receiverSevenIO": "Broj primatelja", - "receiverInfoSevenIO": "Ako broj primatelja nije registriran u Njemačkoj, potrebno je uključiti i pozivni broj države (primjerice, umjesto 023123123 potrebno je koristiti 36523123123 ako je riječ o hrvatskom broju)", - "threemaRecipient": "Primatelj", - "threemaRecipientType": "Tip pošiljatelja", - "threemaRecipientTypeIdentity": "Threema ID", - "threemaRecipientTypeIdentityFormat": "8 znakova", - "threemaRecipientTypeEmail": "Adresa e-pošte", - "threemaSenderIdentity": "ID pristupnika", - "threemaSenderIdentityFormat": "8 znakova, obično počinje znakom *", - "threemaApiAuthenticationSecret": "Tajna pristupnika", - "smspartnerApiurl": "Možete pronaći svoj API ključ na nadzornoj ploči: {0}", - "smspartnerPhoneNumber": "Broj(evi) telefona", - "smspartnerPhoneNumberHelptext": "Broj mora biti u međunarodnom formatu {0}, {1}. Višestruki unosi moraju biti odvojeni znakom {2}", - "smspartnerSenderName": "Naziv SMS pošiljatelja", - "apiKeysDisabledMsg": "API ključevi su onemogućeni jer je provjera autentičnosti onemogućena.", - "wayToGetThreemaGateway": "Možete se registrirati za uslugu Threema Gateway {0}.", - "threemaRecipientTypePhone": "Telefonski broj", - "threemaRecipientTypePhoneFormat": "E.164, bez vodećeg znaka +", - "threemaBasicModeInfo": "Napomena: Ova integracija koristi Threema Gateway u osnovnom načinu rada (enkripcija temeljena na poslužitelju). Dodatne pojedinosti možete pronaći na {0}.", - "smspartnerSenderNameInfo": "Mora biti između 3 i 11 znakova" -} +{ + "languageName": "Hrvatski", + "checkEverySecond": "Provjera svake {0} sekunde", + "retryCheckEverySecond": "Ponovni pokušaj svake {0} sekunde", + "retriesDescription": "Broj ponovnih pokušaja prije nego će se servis označiti kao nedostupan te poslati obavijest", + "ignoreTLSError": "Ignoriraj TLS/SSL pogreške za HTTPS web stranice", + "upsideDownModeDescription": "Preokreni logiku statusa. Ako se primi pozitivan odgovor, smatra se da je usluga nedostupna.", + "maxRedirectDescription": "Maksimalan broj preusmjeravanja. Postaviti na 0 kako bi se preusmjeravanja onemogućila.", + "acceptedStatusCodesDescription": "Odaberite statusne kodove koji se smatraju uspješnim odgovorom.", + "passwordNotMatchMsg": "Lozinke se ne poklapaju.", + "notificationDescription": "Obavijesti će funkcionirati samo ako su dodijeljene monitoru.", + "keywordDescription": "Ključna riječ za pretragu, u obliku običnog HTML-a ili u JSON formatu. Pretraga je osjetljiva na velika i mala slova.", + "deleteMonitorMsg": "Jeste li sigurni da želite izbrisati monitor?", + "deleteNotificationMsg": "Jeste li sigurni da želite izbrisati ovu obavijest za sve monitore?", + "resolverserverDescription": "Cloudflare je zadani DNS poslužitelj. Možete to promijeniti u bilo kojem trenutku.", + "rrtypeDescription": "Odaberite vrstu DNS zapisa o resursu kojeg želite pratiti", + "pauseMonitorMsg": "Jeste li sigurni da želite pauzirati?", + "enableDefaultNotificationDescription": "Ova će obavijesti biti omogućena za sve nove monitore. Možete ju ručno onemogućiti za pojedini monitor.", + "clearEventsMsg": "Jeste li sigurni da želite izbrisati sve zapise o događajima za ovaj monitor?", + "clearHeartbeatsMsg": "Jeste li sigurni da želite izbrisati sve zapise o provjerama za ovaj monitor?", + "confirmClearStatisticsMsg": "Jeste li sigurni da želite izbrisati SVE statistike?", + "importHandleDescription": "Odaberite opciju \"Preskoči postojeće\" ako želite preskočiti uvoz postojećih monitora i obavijesti ako dođe do poklapanja u imenu. Opcija \"Prepiši\" će izbrisati postojeće monitore i obavijesti.", + "confirmImportMsg": "Jeste li sigurni da želite pokrenuti uvoz? Provjerite jeste li odabrali ispravnu opciju uvoza.", + "twoFAVerifyLabel": "Unesite svoj 2FA token:", + "tokenValidSettingsMsg": "Token je važeći! Sada možete spremiti postavke dvofaktorske autentikacije.", + "confirmEnableTwoFAMsg": "Želite li omogućiti dvofaktorsku autentikaciju?", + "confirmDisableTwoFAMsg": "Jeste li sigurni da želite onemogućiti dvofaktorsku autentikaciju?", + "Settings": "Postavke", + "Dashboard": "Kontrolna ploča", + "New Update": "Novo ažuriranje", + "Language": "Jezik", + "Appearance": "Izgled", + "Theme": "Tema", + "General": "Općenito", + "Primary Base URL": "Osnovni URL", + "Version": "Inačica", + "Check Update On GitHub": "Provjeri dostupnost nove inačice na GitHubu", + "List": "Popis", + "Add": "Dodaj", + "Add New Monitor": "Dodaj novi Monitor", + "Quick Stats": "Statistika", + "Up": "Dostupno", + "Down": "Nedostupno", + "Pending": "U tijeku", + "Unknown": "Nepoznato", + "pauseDashboardHome": "Pauzirano", + "Name": "Naziv", + "Status": "Status", + "DateTime": "Vremenska oznaka", + "Message": "Izvještaj", + "No important events": "Nema važnih događaja", + "Pause": "Pauziraj", + "Resume": "Nastavi", + "Edit": "Uredi", + "Delete": "Obriši", + "Current": "Trenutno", + "Uptime": "Dostupnost", + "Cert Exp.": "Istek cert.", + "day": "dan | dana", + "-day": "-dnevno", + "hour": "sat", + "-hour": "-satno", + "Response": "Odgovor", + "Ping": "Odziv", + "Monitor Type": "Vrsta Monitora", + "Keyword": "Ključna riječ", + "Friendly Name": "Prilagođen naziv", + "URL": "URL", + "Hostname": "Domaćin", + "Port": "Port", + "Heartbeat Interval": "Interval provjere", + "Retries": "Broj ponovnih pokušaja", + "Heartbeat Retry Interval": "Interval ponovnih pokušaja", + "Advanced": "Napredne postavke", + "Upside Down Mode": "Obrnuti način", + "Max. Redirects": "Maksimalan broj preusmjeravanja", + "Accepted Status Codes": "Prihvaćeni statusni kodovi", + "Push URL": "Push URL", + "needPushEvery": "Potrebno je slati zahtjeve na URL svakih {0} sekundi.", + "pushOptionalParams": "Neobavezni parametri: {0}", + "Save": "Spremi", + "Notifications": "Obavijesti", + "Not available, please setup.": "Nije dostupno, potrebno je dodati novu stavku.", + "Setup Notification": "Dodaj obavijest", + "Light": "Svijetli način", + "Dark": "Tamni način", + "Auto": "Automatski", + "Theme - Heartbeat Bar": "Tema za traku dostupnosti", + "Normal": "Normalno", + "Bottom": "Ispod", + "None": "Isključeno", + "Timezone": "Vremenska zona", + "Search Engine Visibility": "Vidljivost tražilicama", + "Allow indexing": "Dopusti indeksiranje", + "Discourage search engines from indexing site": "Sprječavanje indeksiranja", + "Change Password": "Promjena lozinke", + "Current Password": "Trenutna lozinka", + "New Password": "Nova lozinka", + "Repeat New Password": "Potvrdite novu lozinku", + "Update Password": "Spremi novu lozinku", + "Disable Auth": "Onemogući autentikaciju", + "Enable Auth": "Omogući autentikaciju", + "disableauth.message1": "Jeste li sigurni da želite {disableAuth}?", + "disable authentication": "isključiti autentikaciju", + "disableauth.message2": "To je za {intendThirdPartyAuth} ispred Uptime Kume, poput usluge Cloudflare Access.", + "where you intend to implement third-party authentication": "korisnike koji imaju vanjsku autentikaciju stranice", + "Please use this option carefully!": "Pažljivo koristite ovu opciju!", + "Logout": "Odjava", + "Leave": "Poništi", + "I understand, please disable": "Razumijem, svejedno onemogući", + "Confirm": "Potvrda", + "Yes": "Da", + "No": "Ne", + "Username": "Korisničko ime", + "Password": "Lozinka", + "Remember me": "Zapamti me", + "Login": "Prijava", + "No Monitors, please": "Nema monitora,", + "add one": "dodaj jedan", + "Notification Type": "Tip obavijesti", + "Email": "E-pošta", + "Test": "Testiraj", + "Certificate Info": "Informacije o certifikatu", + "Resolver Server": "DNS poslužitelj", + "Resource Record Type": "Vrsta DNS zapisa", + "Last Result": "Posljednji rezultat", + "Create your admin account": "Stvori administratorski račun", + "Repeat Password": "Potvrda lozinke", + "Import Backup": "Uvoz sigurnosne kopije", + "Export Backup": "Izvoz sigurnosne kopije", + "Export": "Izvoz", + "Import": "Uvoz", + "respTime": "Vrijeme odgovora (ms)", + "notAvailableShort": "ne postoji", + "Default enabled": "Omogući za nove monitore", + "Apply on all existing monitors": "Primijeni na postojeće monitore", + "Create": "Kreiraj", + "Clear Data": "Obriši podatke", + "Events": "Događaji", + "Heartbeats": "Provjere", + "Auto Get": "Automatski dohvat", + "backupDescription": "Moguće je napraviti sigurnosnu kopiju svih monitora i obavijesti koja će biti spremljena kao JSON datoteka.", + "backupDescription2": "Napomena: povijest i podaci o događajima nisu uključeni u sigurnosnu kopiju.", + "backupDescription3": "Osjetljivi podaci poput tokena za obavijesti uključeni su u sigurnosnu kopiju. Zato je potrebno čuvati izvoz na sigurnom mjestu.", + "alertNoFile": "Datoteka za uvoz nije odabrana.", + "alertWrongFileType": "Datoteka za uvoz nije u JSON formatu.", + "Clear all statistics": "Obriši sve statistike", + "Skip existing": "Preskoči postojeće", + "Overwrite": "Prepiši", + "Options": "Opcije", + "Keep both": "Zadrži sve", + "Verify Token": "Provjeri Token", + "Setup 2FA": "Postavi dvofaktorsku autentikaciju", + "Enable 2FA": "Omogući dvofaktorsku autentikaciju", + "Disable 2FA": "Onemogući dvofaktorsku autentikaciju", + "2FA Settings": "Postavke 2FA", + "Two Factor Authentication": "Dvofaktorska autentikacija", + "Active": "Aktivna", + "Inactive": "Neaktivno", + "Token": "Token", + "Show URI": "Pokaži URI", + "Tags": "Oznake", + "Add New below or Select...": "Dodajte novu oznaku ispod ili odaberite…", + "Tag with this name already exist.": "Oznaka s tim nazivom već postoji.", + "Tag with this value already exist.": "Oznaka s tom vrijednošću već postoji.", + "color": "Boja", + "value (optional)": "Vrijednost (neobavezno)", + "Gray": "Siva", + "Red": "Crvena", + "Orange": "Narančasta", + "Green": "Zelena", + "Blue": "Plava", + "Indigo": "Indigo", + "Purple": "Ljubičasta", + "Pink": "Ružičasta", + "Search...": "Pretraga…", + "Avg. Ping": "Prosječni odziv", + "Avg. Response": "Prosječni odgovor", + "Entry Page": "Početna stranica", + "statusPageNothing": "Ovdje nema ničega, dodajte grupu ili monitor.", + "No Services": "Nema usluga", + "All Systems Operational": "Svi sustavi su operativni", + "Partially Degraded Service": "Usluga djelomično nedostupna", + "Degraded Service": "Usluga nedostupna", + "Add Group": "Dodaj grupu", + "Add a monitor": "Dodaj monitor", + "Edit Status Page": "Uredi Statusnu stranicu", + "Go to Dashboard": "Na Kontrolnu ploču", + "Status Page": "Statusna stranica", + "Status Pages": "Statusne stranice", + "defaultNotificationName": "Moja {number}. {notification} obavijest", + "here": "ovdje", + "Required": "Potrebno", + "telegram": "Telegram", + "Bot Token": "Token bota", + "wayToGetTelegramToken": "Token možete nabaviti preko {0}.", + "Chat ID": "ID razgovora", + "supportTelegramChatID": "Podržani su ID-jevi izravnih razgovora, grupa i kanala", + "wayToGetTelegramChatID": "ID razgovora možete saznati tako da botu pošaljete poruku te odete na ovaj URL:", + "YOUR BOT TOKEN HERE": "OVDJE IDE TOKEN BOTA", + "chatIDNotFound": "ID razgovora nije pronađen; prvo morate poslati poruku botu", + "webhook": "Webhook", + "Post URL": "URL Post zahtjeva", + "Content Type": "Tip sadržaja (Content Type)", + "webhookJsonDesc": "{0} je dobra opcija za moderne HTTP poslužitelje poput Express.js-a", + "webhookFormDataDesc": "{multipart} je moguća alternativa za PHP, samo je potrebno parsirati JSON koristeći {decodeFunction}", + "smtp": "E-mail (SMTP)", + "secureOptionNone": "Bez sigurnosti / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Ignoriraj greške TLS-a", + "From Email": "Adresa za \"From\" polje", + "emailCustomSubject": "Prilagođeno \"Subject\" polje", + "To Email": "Odredišne adrese e-pošte", + "smtpCC": "Cc", + "smtpBCC": "Bcc", + "discord": "Discord", + "Discord Webhook URL": "URL Discord webhooka", + "wayToGetDiscordURL": "Ovo možete dobiti tako da odete na Postavke servera -> Integracije -> Pogledaj webhookove -> Novi webhook", + "Bot Display Name": "Nadimak Bota unutar servera", + "Prefix Custom Message": "Prefiks prilagođene poruke", + "Hello @everyone is...": "Pozdrav {'@'}everyone…", + "teams": "Microsoft Teams", + "Webhook URL": "URL webhooka", + "wayToGetTeamsURL": "Više informacija o Teams webhookovima možete pročitati {0}.", + "signal": "Signal", + "Number": "Broj", + "Recipients": "Primatelji", + "needSignalAPI": "Potreban je klijent s REST sučeljem.", + "wayToCheckSignalURL": "Više informacija o postavljanju Signal klijenta:", + "signalImportant": "VAŽNO: Grupe i brojevi se ne mogu istovremeno koristiti kao primatelji!", + "gotify": "Gotify", + "Application Token": "Token Aplikacije", + "Server URL": "URL poslužitelja", + "Priority": "Prioritet", + "slack": "Slack", + "Icon Emoji": "Emotikon", + "Channel Name": "Naziv kanala", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Dodatne informacije o webhookovima su dostupne na: {0}", + "aboutChannelName": "Unesite ime {0} kanala u polju Naziv kanala ako želite zaobići webhook kanal. Primjerice: #neki-kanal", + "aboutKumaURL": "Ako je polje \"Uptime Kuma URL\" prazno, koristi se zadana vrijednost koja vodi na GitHub stranicu projekta.", + "emojiCheatSheet": "Popis emotikona: {0}", + "rocket.chat": "Rocket.Chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Podržava preko 50 usluga za obavijesti)", + "pushbullet": "Pushbullet", + "line": "LINE", + "mattermost": "Mattermost", + "User Key": "Korisnički ključ", + "Device": "Uređaji", + "Message Title": "Naslov poruke", + "Notification Sound": "Zvuk obavijesti", + "More info on:": "Više informacija na: {0}", + "pushoverDesc1": "Hitni prioritet (2) ima zadani istek vremena od 30 sekundi između ponovnih pokušaja te će isteći nakon 1 sata.", + "pushoverDesc2": "Ako želite slati obavijesti na više uređaja, ispunite polje \"Uređaji\".", + "SMS Type": "Tip SMS-a", + "octopushTypePremium": "Premium (Brzo - preporučeno za obavijesti)", + "octopushTypeLowCost": "Low Cost (Sporo - mobilni operateri ponekad blokiraju ove poruke)", + "checkPrice": "Provjerite {0} cijene:", + "apiCredentials": "Vjerodajnice za API", + "octopushLegacyHint": "Koristite li staru inačicu usluge Octopush (2011-2020) ili noviju inačicu?", + "Check octopush prices": "Provjerite cijene usluge Octopush {0}.", + "octopushPhoneNumber": "Telefonski broj (međunarodni format, primjerice: +38512345678) ", + "octopushSMSSender": "Naziv SMS pošiljatelja : 3-11 alfanumeričkih znakova i razmak (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea ID Uređaja", + "Apprise URL": "URL usluge Apprise", + "Example:": "Primjerice: {0}", + "Read more:": "Pročitajte više: {0}", + "Status:": "Status: {0}", + "Read more": "Pročitaj više", + "appriseInstalled": "Apprise je instaliran.", + "appriseNotInstalled": "Apprise nije instaliran. {0}", + "Access Token": "Pristupni token", + "Channel access token": "Token za pristup kanalu", + "Line Developers Console": "LINE razvojnoj konzoli", + "lineDevConsoleTo": "LINE razvojna konzola - {0}", + "Basic Settings": "Osnovne Postavke", + "User ID": "Korisnički ID", + "Messaging API": "API za razmjenu poruka", + "wayToGetLineChannelToken": "Prvo, pristupite {0}, kreirajte pružatelja usluga te kanal (API za razmjenu poruka), zatim možete dobiti token za pristup kanalu te korisnički ID za polja iznad.", + "Icon URL": "URL slike", + "aboutIconURL": "Možete postaviti poveznicu na sliku u polju \"URL slike\" kako biste spriječili korištenje zadane slike. Ovo se polje neće koristiti ako je postavljeno polje \"Emotikon\".", + "aboutMattermostChannelName": "Možete promijeniti kanal u kojeg webhook šalje tako da ispunite polje \"Naziv kanala\". Ta opcija mora biti omogućena unutar Mattermost postavki za webhook. Primjerice: #neki-kanal", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - jeftina, ali spora opcija koja je često preopterećena. Ograničeno samo na primatelje unutar Poljske.", + "promosmsTypeFlash": "SMS FLASH - Poruka se automatski pojavljuje na uređaju primatelja. Ograničeno samo na primatelje unutar Poljske.", + "promosmsTypeFull": "SMS FULL - Premium razina usluge, dozvoljava postavljanje naziva SMS pošiljatelja (Naziv mora biti registriran). Usluga pouzdana za obavijesti.", + "promosmsTypeSpeed": "SMS SPEED - Usluga najvećeg prioriteta. Brza i pouzdana, ali skupa (otprilike dvostruko skuplja od cijene usluge SMS FULL).", + "promosmsPhoneNumber": "Telefonski broj (za primatelje unutar Poljske nije potrebno navoditi pozivni broj države)", + "promosmsSMSSender": "Naziv SMS pošiljatelja: Registriran naziv ili jedan od zadanih: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu URL webhooka", + "matrixHomeserverURL": "URL Matrix homeservera (uključujući http(s):// te port, ako je potrebno)", + "Internal Room Id": "Interni ID sobe", + "matrixDesc1": "Interni ID sobe se može pronaći u naprednim postavkama sobe unutar Matrix klijenta. ID sobe nalikuje idućem zapisu: !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Preporučuje se stvaranje novog korisnika te suzdržavanje od korištenja pristupnog tokena vlastitog Matrix korisnika. Novog korisnika potrebno je dodati u sobe u kojima želite primati obavijesti. Pristupni token možete dobiti pokretanjem naredbe {0}", + "Method": "Metoda", + "Body": "Tijelo", + "Headers": "Zaglavlja", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "Zaglavlja nisu nije valjani JSON: ", + "BodyInvalidFormat": "Tijelo zahtjeva nije valjani JSON: ", + "Monitor History": "Povijest monitora", + "clearDataOlderThan": "Podaci o povijesti monitora čuvaju se {0} dana.", + "PasswordsDoNotMatch": "Lozinke se ne poklapaju.", + "records": "zapisa", + "One record": "Jedan zapis", + "Showing {from} to {to} of {count} records": "Prikaz zapisa {from}-{to} od sveukupno {count}", + "steamApiKeyDescription": "Za praćenje Steam poslužitelja za igru, potrebno je imati Steam Web-API ključ. Možete registrirati vlastiti ključ ovdje: ", + "Current User": "Trenutni korisnik", + "recent": "Nedavno", + "Done": "Gotovo", + "Info": "Informacije", + "Security": "Sigurnost", + "Shrink Database": "Smanji bazu podataka", + "Pick a RR-Type...": "Odaberite vrstu DNS zapisa od navedenih…", + "Pick Accepted Status Codes...": "Odaberite HTTP statusne kodove koji će biti prihvaćeni…", + "Steam API Key": "Steam API ključ", + "Default": "Zadano", + "HTTP Options": "HTTP Postavke", + "Create Incident": "Novi izvještaj o incidentu", + "Title": "Naslov", + "Content": "Sadržaj", + "Style": "Stil", + "info": "informacija", + "warning": "upozorenje", + "danger": "opasnost", + "primary": "primarno", + "light": "svijetlo", + "dark": "tamno", + "Post": "Objavi", + "Created": "Stvoreno", + "Last Updated": "Uređeno", + "Please input title and content": "Naslov i sadržaj ne mogu biti prazni", + "Unpin": "Ukloni", + "Switch to Light Theme": "Prebaci na svijetli način", + "Switch to Dark Theme": "Prebaci na tamni način", + "Show Tags": "Pokaži oznake", + "Hide Tags": "Sakrij oznake", + "Description": "Opis", + "No monitors available.": "Nema dostupnih monitora.", + "Add one": "Stvori jednog", + "No Monitors": "Bez monitora", + "Untitled Group": "Bezimena grupa", + "Services": "Usluge", + "Discard": "Odbaci", + "Cancel": "Otkaži", + "Powered by": "Pokreće", + "Saved.": "Spremljeno.", + "PushByTechulus": "Push by Techulus", + "GoogleChat": "Google Chat (preko platforme Google Workspace)", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API korisničko ime (uključujući webapi_ prefiks)", + "serwersmsAPIPassword": "API lozinka", + "serwersmsPhoneNumber": "Broj telefona", + "serwersmsSenderName": "Ime SMS pošiljatelja (registrirano preko korisničkog portala)", + "stackfield": "Stackfield", + "smtpDkimSettings": "DKIM postavke", + "smtpDkimDesc": "Za više informacija, postoji Nodemailer DKIM {0}.", + "documentation": "dokumentacija", + "smtpDkimDomain": "Domena", + "smtpDkimKeySelector": "Odabir ključa", + "smtpDkimPrivateKey": "Privatni ključ", + "smtpDkimHashAlgo": "Hash algoritam (neobavezno)", + "smtpDkimheaderFieldNames": "Ključevi zaglavlja za potpis (neobavezno)", + "smtpDkimskipFields": "Ključevi zaglavlja koji se neće potpisati (neobavezno)", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "Krajnja točka API-ja (Endpoint)", + "alertaEnvironment": "Okruženje (Environment)", + "alertaApiKey": "API ključ", + "alertaAlertState": "Stanje upozorenja", + "alertaRecoverState": "Stanje oporavka", + "deleteStatusPageMsg": "Sigurno želite obrisati ovu statusnu stranicu?", + "resendEveryXTimes": "Ponovno pošalji svakih {0} puta", + "resendDisabled": "Ponovno slanje je onemogućeno", + "dnsPortDescription": "Port DNS poslužitelja. Zadana vrijednost je 53. Moguće je promijeniti ga u svakom trenutku.", + "Resend Notification if Down X times consecutively": "Ponovno pošalji obavijest ako je usluga nedostupna više puta zaredom", + "topic": "Tema", + "topicExplanation": "MQTT tema koja će se monitorirati", + "successMessage": "Poruka o uspjehu", + "successMessageExplanation": "MQTT poruka koja se smatra uspješnom", + "error": "greška", + "critical": "kritično", + "Customize": "Prilagodi", + "Custom Footer": "Prilagođeno podnožje", + "Custom CSS": "Prilagođeni CSS", + "wayToGetPagerDutyKey": "Ključ možete dobiti odlaskom na \"Service -> Service Directory -> (Odabrani servis) -> Integrations -> Add integration\". Ovdje pretražite za \"Events API V2\". Više informacija {0}", + "Integration Key": "Ključ integracije", + "Integration URL": "URL integracije", + "Auto resolve or acknowledged": "Automatsko razrješavanje i priznavanje", + "do nothing": "Ne radi ništa", + "auto acknowledged": "Automatsko priznavanje", + "auto resolve": "Automatsko razrješavanje", + "Proxies": "Proxy poslužitelji", + "default": "Zadano", + "enabled": "Omogućeno", + "setAsDefault": "Postavi kao zadano", + "deleteProxyMsg": "Sigurno želite obrisati ovaj proxy za sve monitore?", + "proxyDescription": "Proxy poslužitelji moraju biti dodijeljni monitoru kako bi funkcionirali.", + "enableProxyDescription": "Onemogućeni proxy poslužitelj neće imati učinak na zahtjeve monitora. Možete privremeno onemogućiti proxy poslužitelja za sve monitore.", + "setAsDefaultProxyDescription": "Ovaj proxy poslužitelj bit će odmah omogućen za nove monitore. I dalje ga možete onemogućiti za svaki monitor zasebno.", + "Certificate Chain": "Lanac certifikata", + "Valid": "Važeći", + "Invalid": "Nevažeći", + "AccessKeyId": "AccessKey identifikator", + "SecretAccessKey": "AccessKey tajni ključ", + "PhoneNumbers": "Telefonski brojevi", + "TemplateCode": "Predložak koda", + "SignName": "Potpis", + "Sms template must contain parameters: ": "SMS predložak mora sadržavati parametre: ", + "Bark Endpoint": "Bark krajnja točka (endpoint)", + "Bark Group": "Bark grupa", + "Bark Sound": "Bark zvuk", + "WebHookUrl": "URL webhooka", + "SecretKey": "Tajni ključ", + "For safety, must use secret key": "Korištenje tajnog ključa je obavezno", + "Device Token": "Token uređaja", + "Platform": "Platforma", + "Huawei": "Huawei", + "High": "Visoko", + "Retry": "Ponovnih pokušaja", + "Topic": "Tema", + "WeCom Bot Key": "WeCom ključ Bota", + "Setup Proxy": "Dodaj proxy poslužitelj", + "Proxy Protocol": "Protokol", + "Proxy Server": "Proxy poslužitelj", + "Proxy server has authentication": "Proxy poslužitelj ima autentikaciju", + "User": "Korisnik", + "Installed": "Instalirano", + "Not installed": "Nije instalirano", + "Running": "Pokrenuto", + "Not running": "Nije pokrenuto", + "Remove Token": "Ukloni Token", + "Start": "Pokreni", + "Stop": "Zaustavi", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Dodaj novu statusnu stranicu", + "Slug": "Slug", + "Accept characters:": "Dozvoljeni znakovi:", + "startOrEndWithOnly": "Započinje ili završava znakovima {0}", + "No consecutive dashes": "Bez uzastopnih povlaka", + "Next": "Sljedeće", + "The slug is already taken. Please choose another slug.": "Slug je zauzet. Odaberite novi slug.", + "No Proxy": "Bez proxy poslužitelja", + "Authentication": "Autentikacija", + "HTTP Basic Auth": "HTTP \"Basic\" autentifikacija", + "New Status Page": "Dodaj statusnu stranicu", + "Page Not Found": "Stranica nije pronađena", + "Reverse Proxy": "Reverzni proxy", + "Backup": "Sigurnosno kopiranje", + "About": "O Uptime Kumi", + "wayToGetCloudflaredURL": "(Preuzmite cloudflared s {0})", + "cloudflareWebsite": "Cloudflare web stranice", + "Message:": "Poruka:", + "Don't know how to get the token? Please read the guide:": "Ne znate kako doći do tokena? Pročitajte vodič:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Trenutna veza možda bude prekinuta jer se koristi Cloudflare tuneliranje. Sigurno želite zaustaviti? Unesite lozinku za potvrdu.", + "HTTP Headers": "HTTP zaglavlja", + "Trust Proxy": "Vjeruj proxy poslužitelju", + "Other Software": "Ostali programi", + "For example: nginx, Apache and Traefik.": "Primjerice: nginx, Apache ili Traefik.", + "Please read": "Molimo pročitajte", + "Subject:": "Predmet:", + "Valid To:": "Valjano do:", + "Days Remaining:": "Preostalo dana:", + "Issuer:": "Izdavatelj:", + "Fingerprint:": "Fingerprint:", + "No status pages": "Nema statusnih stranica", + "Domain Name Expiry Notification": "Obavijest za istek domena", + "Proxy": "Proxy", + "Date Created": "Datum stvaranja", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "OneBot HTTP adresa", + "onebotMessageType": "OneBot tip poruke", + "onebotGroupMessage": "Grupna", + "onebotPrivateMessage": "Privatna", + "onebotUserOrGroupId": "ID korisnika/grupe", + "onebotSafetyTips": "Pristupni token mora biti postavljen", + "PushDeer Key": "PushDeer ključ", + "Footer Text": "Tekst podnožja", + "Show Powered By": "Pokaži natpis 'Pokreće...'", + "Domain Names": "Domene", + "signedInDisp": "Prijavljeni ste kao {0}", + "signedInDispDisabled": "Autentikacija onemogućena.", + "RadiusSecret": "Radius Tajna", + "RadiusSecretDescription": "Dijeljena Tajna između klijenta i poslužitelja", + "RadiusCalledStationId": "Called Station ID", + "RadiusCalledStationIdDescription": "Identifikator pozivne stanice", + "RadiusCallingStationId": "Calling Station ID", + "RadiusCallingStationIdDescription": "Identifikator pozivajuće stanice", + "Certificate Expiry Notification": "Obavijest za istek certifikata", + "API Username": "API korisničko ime", + "API Key": "API ključ", + "Recipient Number": "Broj primatelja", + "From Name/Number": "Naziv/broj pošiljatelja", + "Leave blank to use a shared sender number.": "Ostaviti prazno za korištenje dijeljenog broja pošiljatelja.", + "Octopush API Version": "Verzija Octopush API-ja", + "Legacy Octopush-DM": "Zastarijela Octopush-DM", + "endpoint": "krajnja točka (endpoint)", + "octopushAPIKey": "\"API ključ\" iz HTTP API postavki na upravljačkoj ploči", + "octopushLogin": "\"Korisničko ime\" iz HTTP API postavki", + "promosmsLogin": "API korisničko ime", + "promosmsPassword": "API lozinka", + "pushoversounds pushover": "Pushover (zadano)", + "pushoversounds bike": "Bicikl", + "pushoversounds bugle": "Truba", + "pushoversounds cashregister": "Blagajna", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Kozmički", + "pushoversounds falling": "Padanje", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Dolazno", + "pushoversounds intermission": "Intermisija", + "pushoversounds magic": "Čarolija", + "pushoversounds mechanical": "Mehanički", + "pushoversounds pianobar": "Bar s klavirom", + "pushoversounds siren": "Sirena", + "pushoversounds spacealarm": "Svemirski alarm", + "pushoversounds tugboat": "Remorker", + "pushoversounds alien": "Vanzemaljski alarm (dugačko)", + "pushoversounds climb": "Penjanje (dugačko)", + "pushoversounds persistent": "Uporno (dugačko)", + "pushoversounds echo": "Pushover jeka (dugačko)", + "pushoversounds updown": "Gore-dolje (dugačko)", + "pushoversounds vibrate": "Samo vibracija", + "pushoversounds none": "Utišano (bez zvuka)", + "pushyAPIKey": "Tajni API ključ", + "pushyToken": "Token uređaja", + "Show update if available": "Pokaži moguću nadogradnju", + "Also check beta release": "Provjeravaj i za beta izdanja", + "Using a Reverse Proxy?": "Koristi li se reverzni proxy?", + "Check how to config it for WebSocket": "Provjerite kako se konfigurira za WebSocket protokol", + "Steam Game Server": "Steam poslužitelj igre", + "Most likely causes:": "Najvjerojatniji uzroci:", + "The resource is no longer available.": "Resurs više nije dostupan.", + "There might be a typing error in the address.": "Možda je nastala greška pri upisu adrese.", + "What you can try:": "Što možete pokušati:", + "Retype the address.": "Ponovno napišite adresu.", + "Go back to the previous page.": "Vratite se na prethodnu stranicu.", + "Coming Soon": "Dolazi uskoro", + "wayToGetClickSendSMSToken": "Možete dobiti API korisničko ime i API ključ sa {0}.", + "Connection String": "Tekst veze", + "Query": "Upit", + "settingsCertificateExpiry": "TLS istek certifikata", + "certificationExpiryDescription": "HTTPS monitori će obavijesiti kada je istek TLS certifikata za:", + "Setup Docker Host": "Dodaj Docker domaćina", + "Connection Type": "Tip veze", + "Docker Daemon": "Docker daemon", + "deleteDockerHostMsg": "Sigurno želite izbrisati ovog Docker domaćina za sve monitore?", + "socket": "Docker socket", + "tcp": "TCP / HTTP", + "Docker Container": "Docker kontejner", + "Container Name / ID": "Naziv / ID kontejnera", + "Docker Host": "Docker domaćin", + "Docker Hosts": "Docker domaćini", + "ntfy Topic": "ntfy tema", + "Domain": "Domena", + "Workstation": "Radna stanica", + "disableCloudflaredNoAuthMsg": "Lozinka nije nužna dok je isključena autentikacija.", + "trustProxyDescription": "Vjeruj 'X-Forwarded-*' zaglavljima. Ako želite dobiti ispravnu IP adresu klijenta i Uptime Kuma je iza reverznog proxy poslužitelja, trebate omogućiti ovo.", + "wayToGetLineNotifyToken": "Možete dobiti pristupni token sa {0}", + "Examples": "Primjeri", + "Home Assistant URL": "URL Home Assistanta", + "Long-Lived Access Token": "Dugotrajni pristupni token", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Dugotrajni pristupni token može se kreirati klikom na korisničko ime (dolje lijevo) u Home Assistantu, pomicanjem do dna, te klikom na 'Create Token'. ", + "Notification Service": "Notification Service", + "default: notify all devices": "zadano ponašanje: obavijesti sve uređaje", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Popis servisa za obavijesti u Home Assistantu nalaze se pod \"Developer Tools > Services\" te pretražiti \"notification\".", + "Automations can optionally be triggered in Home Assistant:": "Automacije se mogu okinuti u Home Assistantu:", + "Trigger type:": "Tip triggera:", + "Event type:": "Tip eventa:", + "Event data:": "Podaci eventa:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Potrebno je i odabrati akciju za izvođenje na Home Assistantu.", + "Frontend Version": "Inačica sučelja", + "Frontend Version do not match backend version!": "Inačica sučelja ne odgovara poslužitelju!", + "monitorToastMessagesLabel": "Skočne obavijesti Monitora", + "toastSuccessTimeout": "Vrijeme isteka skočnih obavijesti o uspjehu", + "toastErrorTimeout": "Vrijeme isteka skočnih obavijesti o pogrešci", + "Enter the list of brokers": "Upišite popis brokera", + "Press Enter to add broker": "Pritisnite Enter za dodavanje brokera", + "Kafka Topic Name": "Naziv Kafka teme", + "Kafka Producer Message": "Poruka Kafka producera", + "Enable Kafka SSL": "Omogući SSL", + "Enable Kafka Producer Auto Topic Creation": "Omogući automatsku izradu teme za Kafka producera", + "Kafka SASL Options": "Kafka SASL opcije", + "Mechanism": "Mehanizam", + "Pick a SASL Mechanism...": "Odaberite SASL mehanizam…", + "AccessKey Id": "ID pristupnog ključa", + "Secret AccessKey": "Tajni pristupni ključ", + "Session Token": "Token sesije", + "Schedule maintenance": "Zakaži održavanje", + "Select status pages...": "Odaberi statusne stranice…", + "webhookAdditionalHeadersTitle": "Dodatna zaglavlja", + "webhookAdditionalHeadersDesc": "Postavlja dodatna polja zaglavlja koja se šalju s webhookom. Svako zaglavlje treba se definirati kao JSON par ključ-vrijednost.", + "Packet Size": "Veličina paketa", + "backupRecommend": "Umjesto toga napravite ručnu sigurnosnu kopiju cijelog volumena ili izravno direktorija s podacima (./data/).", + "No Maintenance": "Ne postoje zakazana održavanja", + "Server Timezone": "Vremenska zona poslužitelja", + "dnsCacheDescription": "Možda ne radi kako spada u nekim IPv6 okruženjima. Onemogućite ako naiđete na probleme.", + "Select": "Odaberi", + "tailscalePingWarning": "Kako biste koristili Tailscale Ping monitor, trebate instalirati Uptime Kuma bez Dockera te također instalirati Tailscale klijent na svoj poslužitelj.", + "telegramProtectContentDescription": "Ako je omogućeno, poruke bota će biti zaštićene od prosljeđivanja i spremanja.", + "enableNSCD": "Omogući NSCD (Name Service Cache Daemon) za sve DNS zahtjeve", + "chromeExecutableDescription": "Za korisnike Dockera, ako Chromium još nije instaliran, instalacija i prikaz rezultata testa može potrajati nekoliko minuta. Zauzima 1 GB prostora na disku.", + "grpcMethodDescription": "Naziv metode automatski se pretvara u camelCase format. Primjerice, \"say hello\" će se pretvoriti u \"sayHello\".", + "wayToGetKookBotToken": "Kreirajte aplikaciju i preuzmite token svog bota na {0}", + "wayToGetKookGuildID": "Uključite 'Developer Mode' za Kook u postavkama i desnom tipkom miša kliknite na guild kako biste dobili njegov ID", + "Lowcost": "Niskotarifni", + "SendKey": "Ključ za slanje (SendKey)", + "You can divide numbers with": "Možete odvojiti brojeve pomoću", + "goAlertInfo": "GoAlert je aplikacija otvorenog koda za zakazivanje poziva, automatiziranu eskalaciju i slanje obavijesti (poput SMS-a ili glasovnih poziva). Automatski obavijestite pravu osobu, na pravi način i u pravo vrijeme! {0}", + "smseagleTo": "Broj(evi) telefona", + "smseagleGroup": "Nazivi grupa telefonskog imenika", + "smseagleRecipient": "Primatelj(i) (višestruke vrijednosti moraju se odvojiti zarezom)", + "pushDeerServerDescription": "Ostavite prazno za korištenje službenog poslužitelja", + "Edit Tag": "Uredi oznaku", + "Expiry date": "Datum isteka", + "Schedule Maintenance": "Zakazivanje održavanja", + "Edit Maintenance": "Uređivanje održavanja", + "uninstall": "Deinstaliraj", + "uninstalling": "Deinstalacija", + "Badge Type": "Tip značke", + "apiKeyAddedMsg": "Vaš API ključ je dodan. Spremite ga sada jer se više neće prikazivati.", + "pagertreeDoNothing": "Ne čini ništa", + "wayToGetPagerTreeIntegrationURL": "Nakon što stvorite Uptime Kuma integraciju u aplikaciji PagerTree, kopirajte krajnju točku (endpoint). Pogledajte sve pojedinosti {0}", + "Show Clickable Link Description": "Ako je označeno, svi koji imaju pristup ovoj statusnoj stranici mogu imati pristup URL-u Monitora.", + "monitorToastMessagesDescription": "Skočne obavijesti za monitore nestaju nakon zadanog vremena u sekundama. Vrijednost od -1 onemogućuje vremensko ograničenje, 0 onemogućuje skočne obavijesti.", + "Authorization Identity": "Identitet autorizacije", + "weekdayShortThu": "Čet", + "setupDatabaseChooseDatabase": "Koju bazu podataka želite koristiti?", + "setupDatabaseEmbeddedMariaDB": "Ne morate ništa dodatno postavljati. Ovaj docker image ima ugrađenu i konfiguriranu MariaDB bazu podataka za Vas. Uptime Kuma će se spojiti na ovu bazu preko UNIX socketa.", + "setupDatabaseMariaDB": "Spojite vanjsku MariaDB bazu podataka. Morate unijeti informacije o konekciji prema bazi.", + "setupDatabaseSQLite": "Jednostavna datoteka s bazom podataka, preporuča se samo za manje implementacije. Prije inačice v2.0.0, Uptime Kuma je koristila SQLite kao zadanu bazu podataka.", + "dbName": "Naziv baze podataka", + "Start of maintenance": "Početak održavanja", + "All Status Pages": "Sve statusne stranice", + "Affected Monitors": "Zahvaćeni Monitori", + "Pick Affected Monitors...": "Odaberi zahvaćene Monitore…", + "filterActivePaused": "Pauzirano", + "Add New Tag": "Dodaj novu oznaku", + "statusPageRefreshIn": "Osvježavanje za: {0}", + "webhookCustomBodyDesc": "Prilagodite tijelo HTTP zahtjeva. Dozvoljene varijable predloška: {msg}, {heartbeat}, {monitor}.", + "webhookBodyPresetOption": "Unaprijed postavljeno - {0}", + "webhookBodyCustomOption": "Prilagođeno tijelo zahtjeva", + "selectedMonitorCount": "Odabrano: {0}", + "Check/Uncheck": "Označi/odznači", + "telegramMessageThreadID": "(Neobavezno) ID dretve poruka", + "telegramMessageThreadIDDescription": "Neobavezni jedinstveni identifikator za dretvu poruka (temu) foruma; samo za forumske supergrupe", + "telegramSendSilently": "Pošalji nečujno", + "telegramSendSilentlyDescription": "Šalje poruku nečujno. Primatelji će dobiti obavijest bez zvuka.", + "telegramProtectContent": "Zaštiti od prosljeđivanja i spremanja", + "Optional": "Neobavezno", + "or": "ili", + "weekdayShortTue": "Uto", + "weekdayShortWed": "Sri", + "weekdayShortFri": "Pet", + "weekdayShortSat": "Sub", + "dayOfWeek": "Dan u tjednu", + "dayOfMonth": "Dan u mjesecu", + "lastDay": "Posljednji dan", + "lastDay1": "Posljednji dan mjeseca", + "lastDay2": "Pretposljednji dan mjeseca", + "lastDay3": "Treći do posljednjeg dana u mjesecu", + "lastDay4": "Četvrti do posljednjeg dana u mjesecu", + "pauseMaintenanceMsg": "Jeste li sigurni da želite pauzirati?", + "maintenanceStatus-under-maintenance": "Održavanje u tijeku", + "maintenanceStatus-inactive": "Neaktivno", + "maintenanceStatus-scheduled": "Zakazano", + "maintenanceStatus-ended": "Završeno", + "maintenanceStatus-unknown": "Nepoznato", + "Display Timezone": "Prikaži vremensku zonu", + "statusPageMaintenanceEndDate": "Kraj", + "IconUrl": "URL ikone", + "Enable": "Omogući", + "Disable": "Onemogući", + "sameAsServerTimezone": "Ista kao i vremenska zona poslužitelja", + "chromeExecutable": "Izvršna datoteka za Chrome/Chromium", + "chromeExecutableAutoDetect": "Automatska detekcija", + "Single Maintenance Window": "Jednokratno održavanje", + "Maintenance Time Window of a Day": "Vrijeme održavanja u danu", + "Effective Date Range": "Efektivan raspon datuma (neobavezno)", + "Clone": "Kloniraj", + "dataRetentionTimeError": "Razdoblje zadržavanja mora biti 0 ili veće", + "infiniteRetention": "Postavite na 0 za beskonačno zadržavanje.", + "confirmDeleteTagMsg": "Jeste li sigurni da želite izbrisati ovu oznaku? Monitori povezani s ovom oznakom neće biti izbrisani.", + "enableGRPCTls": "Omogući sigurno slanje gRPC zahtjeva koristeći TLS", + "deleteMaintenanceMsg": "Jeste li sigurni da želite izbrisati ovo održavanje?", + "Guild ID": "ID za guild", + "pushoverMessageTtl": "Vrijeme isteka poruke (u sekundama)", + "Proto Method": "Metoda poziva", + "Proto Content": "Proto sadržaj", + "Economy": "Ekonomski", + "high": "visoko", + "SMSManager API Docs": "Dokumentacija SMSManager API-ja ", + "Gateway Type": "Tip poveznika (gateway)", + "Base URL": "Osnovni URL", + "goAlertIntegrationKeyInfo": "Nabavite generički integracijski API ključ za ovu uslugu u formatu \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\", koji je obično vrijednost token parametra kopiranog URL-a.", + "aboutNotifyChannel": "Ova opcija će poslati mobilnu ili desktop obavijest za sve članove kanala, bez obzira na to jesu li trenutno dostupni ili ne.", + "smseagleContact": "Nazivi kontakata telefonskog imenika", + "smseagleRecipientType": "Tip primatelja", + "smseagleToken": "Token za pristup API-ju", + "smseagleUrl": "URL Vašeg SMSEagle uređaja", + "smseagleEncoding": "Pošalji kao Unicode", + "smseaglePriority": "Prioritet poruke (0-9, zadana vrijednost je 0)", + "Server URL should not contain the nfty topic": "URL poslužitelja ne smije sadržavati temu nfty", + "PushDeer Server": "PushDeer poslužitelj", + "Custom Monitor Type": "Prilagođeni tip Monitora", + "Google Analytics ID": "Google Analytics identifikator", + "Server Address": "Adresa poslužitelja", + "Learn More": "Saznaj više", + "Body Encoding": "Vrsta sadržaja u tijelu zahtjeva", + "API Keys": "API ključevi", + "Expiry": "Istek", + "Don't expire": "Bez isteka", + "Continue": "Nastavi", + "Add Another": "Dodaj još jedan", + "Key Added": "Ključ dodan", + "Add API Key": "Dodaj API ključ", + "No API Keys": "Nema dodanih API ključeva", + "apiKey-active": "Aktivan", + "apiKey-expired": "Istekao", + "apiKey-inactive": "Neaktivan", + "Expires": "Ističe", + "disableAPIKeyMsg": "Jeste li sigurni da želite onemogućiti ovaj API ključ?", + "Generate": "Generiraj", + "pagertreeIntegrationUrl": "URL integracije", + "pagertreeUrgency": "Hitnost", + "pagertreeSilent": "Utišano", + "pagertreeLow": "Niska", + "pagertreeMedium": "Srednja", + "pagertreeHigh": "Visoka", + "pagertreeCritical": "Kritična", + "pagertreeResolve": "Automatsko rješavanje", + "lunaseaTarget": "Cilj", + "lunaseaDeviceID": "ID uređaja", + "lunaseaUserID": "Korisnički ID", + "ntfyAuthenticationMethod": "Metoda provjere autentičnosti", + "ntfyUsernameAndPassword": "Korisničko ime i lozinka", + "twilioAccountSID": "SID korisničkog računa", + "twilioAuthToken": "Token za autentifikaciju / tajni API ključ", + "twilioFromNumber": "Broj pošiljatelja", + "twilioToNumber": "Broj primatelja", + "Show Clickable Link": "Pokaži poveznicu", + "Open Badge Generator": "Otvori generator znački", + "Badge Duration (in hours)": "Trajanje značke (u satima)", + "Badge Prefix": "Prefiks vrijednosti značke", + "Badge Suffix": "Sufiks vrijednosti značke", + "Badge Label": "Natpis značke", + "Badge Label Color": "Boja natpisa značke", + "Badge Color": "Boja značke", + "Badge Label Prefix": "Prefiks natpisa značke", + "Badge Preview": "Pretpregled značke", + "Badge Label Suffix": "Sufiks natpisa značke", + "Badge Up Color": "Boja značke za dostupnost", + "Badge Down Color": "Boja značke za nedostupnost", + "Badge Pending Color": "Boja značke za monitore u tijeku", + "Badge Maintenance Color": "Boja značke za monitore u održavanju", + "Badge Warn Color": "Boja značke za upozorenje", + "Badge Warn Days": "Dani značke za upozorenje", + "Badge Down Days": "Dani značke za nedostupnost", + "Badge value (For Testing only.)": "Vrijednost značke (samo za testiranje)", + "Badge URL": "URL značke", + "Group": "Grupa", + "Monitor Group": "Grupa Monitora", + "Badge Style": "Stil značke", + "Custom": "Prilagođeno", + "styleElapsedTime": "Vremenske oznake ispod trake dostupnosti", + "styleElapsedTimeShowNoLine": "Pokaži (bez linije)", + "styleElapsedTimeShowWithLine": "Pokaži (s linijom)", + "recurringInterval": "Periodično", + "Recurring": "Ponavljajući", + "strategyManual": "Ručno aktivan/neaktivan", + "warningTimezone": "Koristi vremensku zonu poslužitelja", + "weekdayShortMon": "Pon", + "weekdayShortSun": "Ned", + "startDateTime": "Vrijeme početka", + "endDateTime": "Vrijeme završetka", + "cronExpression": "Cron izraz", + "cronSchedule": "Raspored: ", + "invalidCronExpression": "Nevaljali Cron izraz: {0}", + "Date and Time": "Datum i vrijeme", + "DateTime Range": "Vremenski raspon", + "loadingError": "Nije moguće dohvatiti podatke, pokušajte ponovno kasnije.", + "plugin": "Dodatak | Dodaci", + "install": "Instaliraj", + "installing": "Instaliranje", + "confirmUninstallPlugin": "Jeste li sigurni da želite deinstalirati ovaj dodatak?", + "notificationRegional": "Specifično za regiju", + "Clone Monitor": "Kloniraj Monitor", + "cloneOf": "Klon monitora {0}", + "wayToGetZohoCliqURL": "Možete naučiti kako kreirati URL za webhook {0}.", + "affectedMonitorsDescription": "Odaberite monitore koji će biti zahvaćeni održavanjem", + "recurringIntervalMessage": "Pokreni jednom svaki dan | Pokreni jednom svakih {0} dana", + "affectedStatusPages": "Prikazuje poruku o održavanju na odabranim statusnim stranicama", + "atLeastOneMonitor": "Odaberite barem jedan zahvaćeni Monitor", + "invertKeywordDescription": "Postavi da ključna riječ mora biti odsutna umjesto prisutna.", + "Strategy": "Strategija", + "Free Mobile User Identifier": "Besplatni mobilni korisnički identifikator", + "Free Mobile API Key": "Besplatni mobilni ključ za API", + "Enable TLS": "Omogući TLS", + "Proto Service Name": "Naziv servisa", + "promosmsAllowLongSMS": "Dozvoli dugačke SMS-ove", + "Notify Channel": "Obavijesti cijeli kanal", + "Request Timeout": "Vrijeme isteka zahtjeva", + "timeoutAfter": "Istek nakon {0} sekundi", + "backupOutdatedWarning": "Zastarjelo: Budući da je dodano puno značajki, a ova je pomalo neodržavana, ne može generirati niti vratiti potpunu sigurnosnu kopiju.", + "Enable DNS Cache": "(Zastarijelo) Omogući DNS privremenu memoriju (cache) za HTTP(s) monitore", + "Home": "Početna", + "deleteAPIKeyMsg": "Jeste li sigurni da želite obrisati ovaj API ključ?", + "twilioApiKey": "API ključ (neobavezno)", + "Kafka Brokers": "Kafka brokeri", + "Game": "Igra", + "Passive Monitor Type": "Pasivni tip Monitora", + "markdownSupported": "Podržana je Markdown sintaksa", + "statusMaintenance": "Održavanje", + "General Monitor Type": "Općeniti tip Monitora", + "Maintenance": "Održavanje", + "Specific Monitor Type": "Određeni tip Monitora", + "Monitor": "Monitor | Monitori", + "Invert Keyword": "Obrni ključnu riječ", + "filterActive": "Aktivnost", + "Cannot connect to the socket server": "Nije moguće spojiti se na socket poslužitelj", + "Reconnecting...": "Ponovno povezivanje...", + "Expected Value": "Očekivana vrijednost", + "Json Query": "JSON upit", + "Help": "Pomoć", + "noGroupMonitorMsg": "Nije dostupno. Prvo kreirajte grupu Monitora.", + "Close": "Zatvori", + "Request Body": "Tijelo zahtjeva", + "wayToGetFlashDutyKey": "Možete otići na 'Channel' -> (Odaberite kanal) -> 'Integrations' -> 'Add a new integration' i odaberite 'Uptime Kuma' da biste dobili push adresu. Zatim kopirajte integracijski ključ u adresu. Za više informacija posjetite", + "FlashDuty Severity": "Stupanj ozbiljnosti", + "nostrRelays": "Nostr releji", + "nostrRelaysHelp": "Jedan URL releja po liniji", + "nostrSender": "Privatni ključ pošiljatelja (nsec)", + "nostrRecipients": "Javni ključevi primatelja (npub)", + "nostrRecipientsHelp": "U formatu npub, jedan ključ po liniji", + "showCertificateExpiry": "Pokaži istek certifikata", + "noOrBadCertificate": "Nepostojeći ili nevaljali certifikat", + "gamedigGuessPort": "Gamedig: Pogodi vrijednost porta", + "gamedigGuessPortDescription": "Port koji koristi Valve Server Query Protocol može se razlikovati od klijentskog porta. Pokušajte uključiti ovu opciju ako Monitor ne može uspostaviti vezu s vašim poslužiteljem.", + "Monitor Setting": "Postavka monitora korisnika {0}", + "Badge Generator": "Generator znački korisnika {0}", + "Bark API Version": "Verzija Bark API-ja", + "authInvalidToken": "Nevažeći token.", + "authIncorrectCreds": "Pogrešno korisničko ime ili lozinka.", + "2faAlreadyEnabled": "Dvofaktorska autentifikacija je već omogućena.", + "2faDisabled": "Dvofaktorska autentifikacija je onemogućena.", + "successAdded": "Uspješno dodano.", + "successPaused": "Uspješno pauzirano.", + "successEdited": "Uspješno uređeno.", + "successAuthChangePassword": "Lozinka je uspješno ažurirana.", + "successBackupRestored": "Sigurnosna kopija je uspješno vraćena.", + "successDisabled": "Uspješno onemogućeno.", + "successEnabled": "Uspješno omogućeno.", + "foundChromiumVersion": "Pronađen program Chromium ili Chrome. Inačica: {0}", + "pushViewCode": "Kako koristiti Monitor Push? (Prikaži kôd)", + "programmingLanguages": "Programski jezici", + "authUserInactiveOrDeleted": "Korisnik je neaktivan ili obrisan.", + "2faEnabled": "Dvofaktorska autentifikacija je omogućena.", + "successResumed": "Uspješno nastavljeno.", + "successDeleted": "Uspješno obrisano.", + "tagNotFound": "Oznaka nije pronađena.", + "pushOthers": "Ostali", + "Reset Token": "Poništi token", + "GrafanaOncallUrl": "URL za Grafana OnCall", + "liquidIntroduction": "Mogućnost korištenja predložaka postignuto je putem jezika Liquid. Pogledajte upute korištenja na {0}. Ovo su dostupne varijable:", + "templateLimitedToUpDownCertNotifications": "dostupno samo za obavijesti dostupnosti te isteka certifikata", + "emailCustomisableContent": "Prilagodljiv sadržaj", + "smtpLiquidIntroduction": "Sljedeća dva polja mogu se izraditi putem Liquid jezika za predloške. Upute za korištenje dostupne su na {0}. Ovo su dostupne varijable:", + "leave blank for default subject": "ostavite prazno za zadano polje predmeta", + "emailCustomBody": "Prilagođeno tijelo", + "leave blank for default body": "ostavite prazno za zadani sadržaj tijela", + "emailTemplateServiceName": "Naziv servisa", + "emailTemplateHostnameOrURL": "Naziv domaćina ili URL", + "emailTemplateStatus": "Status", + "emailTemplateMonitorJSON": "objekt koji opisuje Monitor", + "emailTemplateHeartbeatJSON": "objekt koji opisuje provjeru", + "emailTemplateMsg": "poruka obavijesti", + "emailTemplateLimitedToUpDownNotification": "dostupno samo za provjere dostupnosti, inače je null", + "templateMsg": "poruka obavijesti", + "templateHeartbeatJSON": "predmet koji opisuje provjeru", + "templateMonitorJSON": "objekt koji opisuje Monitor", + "templateLimitedToUpDownNotifications": "dostupno samo za obavijesti dostupnosti", + "noDockerHostMsg": "Nije dostupno. Morate postaviti Docker domaćina.", + "DockerHostRequired": "Postavite Docker domaćina za ovaj Monitor.", + "Browser Screenshot": "Snimka zaslona preglednika", + "successKeyword": "Ključna riječ za uspjeh", + "successKeywordExplanation": "MQTT ključna riječ koja označava uspješan odgovor", + "remoteBrowserToggle": "Chromium se pokreće unutar Uptime Kuma kontejnera. Možete koristiti udaljeni preglednik uključivanjem ove opcije.", + "deleteRemoteBrowserMessage": "Jeste li sigurni da želite ukloniti ovaj udaljeni preglednik za sve Monitore?", + "Remote Browsers": "Udaljeni preglednici", + "settingUpDatabaseMSG": "Postavljanje baze podatak u tijeku. Ovaj postupak može potrajati, budite strpljivi.", + "ntfyPriorityHelptextAllEvents": "Svi događaji šalju se s maksimalnim prioritetom", + "ntfyPriorityHelptextAllExceptDown": "Svi događaji šalju se ovim prioritetom, osim {0} događaja, koji imaju prioritet {1}", + "Search monitored sites": "Pretraži monitorirane stranice", + "statusPageSpecialSlugDesc": "Poseban slug {0}: ova stranica će se pokazati kada nijedan slug nije naveden", + "openModalTo": "Otvori modal do {0}", + "Add a domain": "Dodaj domenu", + "setup a new monitor group": "Postavljanje nove grupe Monitora", + "Remove domain": "Ukloni domenu '{0}'", + "Remote Browser": "Udaljeni preglednik", + "Add a Remote Browser": "Dodaj udaljeni preglednik", + "Remote Browser not found!": "Udaljeni preglednik nije pronađen!", + "remoteBrowsersDescription": "Udaljeni preglenici alternativa su lokalnom pokretanju Chromiuma. Postavite uslugu poput browserless.io ili spojite vlastiti preglednik", + "self-hosted container": "kontejner koji je self-hosted", + "useRemoteBrowser": "Korištenje udaljenog preglednika", + "Add a new expiry notification day": "Dodaj novi dan za istek obavijesti", + "Remove the expiry notification": "Ukloni dan za istek obavijesti", + "What is a Remote Browser?": "Što je udaljeni preglednik?", + "documentationOf": "{0} dokumentacija", + "wayToGetHeiiOnCallDetails": "Postupak pribavljanja identifikatora okidača i API ključeva objašnjeno je u {documentation}", + "gtxMessagingApiKeyHint": "Svoj API ključ možete pronaći odlaskom na postavku: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)", + "To Phone Number": "Telefonski broj primatelja", + "Originator type": "Izvorišni tip", + "Alphanumeric (recommended)": "Alfanumerički (preporučeno)", + "Destination": "Odredište", + "callMeBotGet": "Ovdje se može generirati krajnja točka za {0}, {1} i {2}. Imajte na umu da biste mogli biti ograničeni tarifom. Čini se da je trenutna tarifa: {3}", + "From Phone Number / Transmission Path Originating Address (TPOA)": "Telefonski broj pošiljatelja / Izvorišna adresa prijenosnog puta (TPOA)", + "whapiRecipient": "Broj telefona / Identifikator kontakta / Identifikator grupe", + "API URL": "URL API-ja", + "gtxMessagingToHint": "Međunarodni format, s početnim plusom (\"+\") ({e164}, {e212} ili {e214})", + "Telephone number": "Telefonski broj", + "cellsyntOriginatortypeAlphanumeric": "Alfanumerički niz znakova (maksimalne duljine 11). Primatelji ne mogu odgovoriti na poruku.", + "cellsyntOriginatortypeNumeric": "Brojčana vrijednost (maksimalno 15 znamenki) telefonskog broja u međunarodnom formatu bez \"00\" na početku (primjerice, broj iz UK-a 07920-110-000 trebao bi biti postavljen kao 447920110000). Primatelji mogu odgovoriti na poruku.", + "Originator": "Izvorište", + "Allow Long SMS": "Dozvoli dugačke SMS poruke", + "cellsyntSplitLongMessages": "Podijeli dugačke poruke na više dijelova, do maksimalnih 6. Maksimalan broj znakova tada je 153 x 6 = 918.", + "max 15 digits": "maks. 15 znamenki", + "max 11 alphanumeric characters": "maks. 11 alfanumeričkih znakova", + "wayToWriteWhapiRecipient": "Telefonski broj s međunarodnim prefiksom, ali bez znaka plus na početku ({0}), identifikatora kontakta ({1}) ili identifikatora grupe ({2}).", + "wayToGetWhapiUrlAndToken": "Moguće je pribaviti token te URL API-ja odlaskom na željeni kanal s {0}", + "gtxMessagingFromHint": "Na mobilnim telefonima, vaši primatelji vide TPOA prikazanu kao pošiljatelja poruke. Dopušteno je do 11 alfanumeričkih znakova, kratki kod, lokalni dugi kod ili međunarodni brojevi ({e164}, {e212} ili {e214})", + "cellsyntOriginator": "Vidljivo na mobilnom telefonu primatelja kao autor poruke. Dopuštene vrijednosti i funkcija ovise o vrsti izvorišta.", + "cellsyntDestination": "Telefonski broj primatelja u međunarodnom formatu s početnim 00 iza kojeg slijedi pozivni broj države (maksimalno 17 znamenki). Primjerice, za broj iz UK-a 07920-110-000 vrijednost mora biti 00447920110000 . Maksimalno 25.000 primatelja odvojenih zarezom po HTTP zahtjevu.", + "Channel access token (Long-lived)": "Pristupni token za kanal (dugovječni)", + "Your User ID": "Vaš korisnički identifikator", + "wayToGetSevenIOApiKey": "Posjetite nadzornu ploču odlaskom na app.seven.io > Developer > API Key i dodajte novi ključ koristeći zeleni gumb za dodavanje", + "Command": "Naredba", + "mongodbCommandDescription": "Pokreni MongoDB naredbu na bazi podataka. Za informacije o dostupnim naredbama posjetite {documentation}", + "Mentioning": "Spominjanje", + "Don't mention people": "Ne spominji ljude", + "Bitrix24 Webhook URL": "URL webhooka za Bitrix24", + "wayToGetBitrix24Webhook": "Možete napraviti webhook prateći upute na {0}", + "bitrix24SupportUserID": "Unesite svoj korisnički identifikator u Bitrix24. Možete ga dobiti iz URL-a odlaskom na vlastiti profil.", + "apiKeySevenIO": "SevenIO API ključ", + "Host URL": "URL domaćina", + "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Unesite adresu poslužitelja na koju se želite spojiti ili {localhost} ako planirate koristiti {local_mta}", + "Select message type": "Odaberite tip poruke", + "postToExistingThread": "Pošalji u postojeću temu / forumsku raspravu", + "Send to channel": "Slanje u kanal", + "Create new forum post": "Stvori novu forumsku objavu", + "whatHappensAtForumPost": "Stvori novu forumsku raspravu. Ova opcija ne dozvoljava objavu poruka u postojeću raspravu, za to je potrebno koristiti \"{option}\"", + "wayToGetDiscordThreadId": "Pronalaženje indentifikatora forumske rasprave ili objave slično je kao i za indentifikator kanala. Više o tome: {0}", + "Refresh Interval": "Interval osvježavanja", + "Refresh Interval Description": "Statusna stranica će napraviti cjelovito osvježavanje svake/ih {0} sekunde/i", + "locally configured mail transfer agent": "agent prijenosa e-pošte postavljen lokalno", + "ignoreTLSErrorGeneral": "Ignoriraj greške TLS-a/SSL-a prilikom spajanja", + "forumPostName": "Naziv forumske objave", + "e.g. {discordThreadID}": "npr. {discordThreadID}", + "threadForumPostID": "Identifikator forumske rasprave ili objave", + "Mention group": "Spomeni {group}", + "senderSevenIO": "Broj ili naziv pošiljatelja", + "receiverSevenIO": "Broj primatelja", + "receiverInfoSevenIO": "Ako broj primatelja nije registriran u Njemačkoj, potrebno je uključiti i pozivni broj države (primjerice, umjesto 023123123 potrebno je koristiti 36523123123 ako je riječ o hrvatskom broju)", + "threemaRecipient": "Primatelj", + "threemaRecipientType": "Tip pošiljatelja", + "threemaRecipientTypeIdentity": "Threema ID", + "threemaRecipientTypeIdentityFormat": "8 znakova", + "threemaRecipientTypeEmail": "Adresa e-pošte", + "threemaSenderIdentity": "ID pristupnika", + "threemaSenderIdentityFormat": "8 znakova, obično počinje znakom *", + "threemaApiAuthenticationSecret": "Tajna pristupnika", + "smspartnerApiurl": "Možete pronaći svoj API ključ na nadzornoj ploči: {0}", + "smspartnerPhoneNumber": "Broj(evi) telefona", + "smspartnerPhoneNumberHelptext": "Broj mora biti u međunarodnom formatu {0}, {1}. Višestruki unosi moraju biti odvojeni znakom {2}", + "smspartnerSenderName": "Naziv SMS pošiljatelja", + "apiKeysDisabledMsg": "API ključevi su onemogućeni jer je provjera autentičnosti onemogućena.", + "wayToGetThreemaGateway": "Možete se registrirati za uslugu Threema Gateway {0}.", + "threemaRecipientTypePhone": "Telefonski broj", + "threemaRecipientTypePhoneFormat": "E.164, bez vodećeg znaka +", + "threemaBasicModeInfo": "Napomena: Ova integracija koristi Threema Gateway u osnovnom načinu rada (enkripcija temeljena na poslužitelju). Dodatne pojedinosti možete pronaći na {0}.", + "smspartnerSenderNameInfo": "Mora biti između 3 i 11 znakova" +} diff --git a/src/lang/id-ID.json b/src/lang/id-ID.json index a6963e345..a7f476de2 100644 --- a/src/lang/id-ID.json +++ b/src/lang/id-ID.json @@ -1,1050 +1,1050 @@ -{ - "languageName": "Bahasa Indonesia (Indonesian)", - "checkEverySecond": "Cek Setiap {0} detik", - "retryCheckEverySecond": "Coba lagi setiap {0} detik", - "resendEveryXTimes": "Kirim ulang setiap {0} kali", - "resendDisabled": "Kirim ulang dinonaktifkan", - "retriesDescription": "Percobaan ulang maksimum sebelum layanan dinyatakan tidak aktif dan notifikasi dikirim", - "ignoreTLSError": "Abaikan kesalahan TLS/SSL untuk situs web HTTPS", - "upsideDownModeDescription": "Balikkan statusnya. Jika layanan dapat dijangkau, TIDAK AKTIF.", - "maxRedirectDescription": "Jumlah maksimum pengalihan untuk diikuti. Setel ke 0 untuk menonaktifkan pengalihan.", - "acceptedStatusCodesDescription": "Pilih kode status yang dianggap sebagai tanggapan yang berhasil.", - "passwordNotMatchMsg": "Kata sandi kedua tidak cocok.", - "notificationDescription": "Harap atur notifikasi ke monitor agar berfungsi.", - "keywordDescription": "Kata kunci pencarian dalam HTML biasa atau respons JSON. Pencarian bersifat peka terhadap huruf besar/kecil.", - "pauseDashboardHome": "Dijeda", - "deleteMonitorMsg": "Apakah Anda mau menghapus monitor ini?", - "deleteNotificationMsg": "Apakah Anda mau menghapus notifikasi untuk semua monitor?", - "dnsPortDescription": "Port server DNS. Bawaan menggunakan 53. Anda dapat mengubah port kapan saja.", - "resolverserverDescription": "Cloudflare adalah server bawaan, Anda dapat mengubah server resolver kapan saja.", - "rrtypeDescription": "Pilih RR Type yang mau Anda monitor", - "pauseMonitorMsg": "Apakah Anda yakin mau menjeda?", - "enableDefaultNotificationDescription": "Untuk setiap monitor baru, notifikasi ini akan diaktifkan secara bawaan. Anda masih dapat menonaktifkan notifikasi secara terpisah untuk setiap monitor.", - "clearEventsMsg": "Apakah Anda yakin mau menghapus semua event di monitor ini?", - "clearHeartbeatsMsg": "Apakah Anda yakin mau menghapus semua heartbeats di monitor ini?", - "confirmClearStatisticsMsg": "Apakah Anda yakin mau menghapus semua statistik?", - "importHandleDescription": "Pilih 'Lewati yang ada' jika Anda ingin melewati setiap monitor atau notifikasi dengan nama yang sama. 'Timpa' akan menghapus setiap monitor dan notifikasi yang ada.", - "confirmImportMsg": "Apakah Anda yakin untuk mengimpor cadangan? Pastikan Anda telah memilih opsi impor yang tepat.", - "twoFAVerifyLabel": "Masukkan token Anda untuk memverifikasi 2FA:", - "tokenValidSettingsMsg": "Token benar! Anda sekarang dapat menyimpan pengaturan 2FA.", - "confirmEnableTwoFAMsg": "Apakah Anda yakin ingin mengaktifkan 2FA?", - "confirmDisableTwoFAMsg": "Apakah Anda yakin ingin menonaktifkan 2FA?", - "Settings": "Pengaturan", - "Dashboard": "Dasbor", - "New Update": "Pembaruan Baru", - "Language": "Bahasa", - "Appearance": "Tampilan", - "Theme": "Tema", - "General": "Umum", - "Primary Base URL": "URL Dasar Utama", - "Version": "Versi", - "Check Update On GitHub": "Cek Pembaruan di GitHub", - "List": "Daftar", - "Add": "Tambah", - "Add New Monitor": "Tambah Monitor Baru", - "Quick Stats": "Statistik", - "Up": "Aktif", - "Down": "Tidak Aktif", - "Pending": "Tertunda", - "Unknown": "Tidak diketahui", - "Pause": "Dijeda", - "Name": "Nama", - "Status": "Status", - "DateTime": "Tanggal Waktu", - "Message": "Pesan", - "No important events": "Tidak ada peristiwa penting", - "Resume": "Lanjut", - "Edit": "Ubah", - "Delete": "Hapus", - "Current": "Saat ini", - "Uptime": "Waktu aktif", - "Cert Exp.": "Sertifikat Kedaluwarsa.", - "day": "hari | hari-hari", - "-day": "-hari", - "hour": "Jam", - "-hour": "-Jam", - "Response": "Tanggapan", - "Ping": "Ping", - "Monitor Type": "Tipe Monitor", - "Keyword": "Kata Kunci", - "Friendly Name": "Nama yang Ramah", - "URL": "URL", - "Hostname": "Nama Host", - "Port": "Port", - "Heartbeat Interval": "Jeda Waktu Heartbeat", - "Retries": "Coba lagi", - "Heartbeat Retry Interval": "Jeda Pengulangan Heartbeat", - "Resend Notification if Down X times consecutively": "Kirim Ulang Notifikasi jika Tidak Aktif X kali", - "Advanced": "Tingkat Lanjut", - "Upside Down Mode": "Mode Terbalik", - "Max. Redirects": "Maksimal Pengalihan", - "Accepted Status Codes": "Kode Status yang Diterima", - "Push URL": "Push URL", - "needPushEvery": "Anda harus memanggil URL berikut setiap {0} detik..", - "pushOptionalParams": "Parameter tambahan: {0}", - "Save": "Simpan", - "Notifications": "Notifikasi", - "Not available, please setup.": "Tidak tersedia, silakan atur.", - "Setup Notification": "Setelan Notifikasi", - "Light": "Terang", - "Dark": "Gelap", - "Auto": "Otomatis", - "Theme - Heartbeat Bar": "Tema - Heartbeat Bar", - "Normal": "Normal", - "Bottom": "Bawah", - "None": "Tidak ada", - "Timezone": "Zona Waktu", - "Search Engine Visibility": "Visibilitas Mesin Pencari", - "Allow indexing": "Mengizinkan untuk diindex", - "Discourage search engines from indexing site": "Mencegah mesin pencari untuk mengindex situs", - "Change Password": "Ganti Sandi", - "Current Password": "Sandi Lama", - "New Password": "Sandi Baru", - "Repeat New Password": "Ulangi Sandi Baru", - "Update Password": "Perbarui Kata Sandi", - "Disable Auth": "Matikan Autentikasi", - "Enable Auth": "Aktifkan Autentikasi", - "disableauth.message1": "Apakah Anda yakin ingin {disableAuth}?", - "disable authentication": "menonaktifkan autentikasi", - "disableauth.message2": "Ini untuk {intendThirdPartyAuth} diletakkan di depan Uptime Kuma, misalnya akses Cloudflare.", - "where you intend to implement third-party authentication": "mereka yang memiliki autentikasi pihak ketiga", - "Please use this option carefully!": "Gunakan pilihan ini dengan hati-hati!", - "Logout": "Keluar", - "Leave": "Pergi", - "I understand, please disable": "Saya mengerti, silakan dinonaktifkan", - "Confirm": "Konfirmasi", - "Yes": "Ya", - "No": "Tidak", - "Username": "Nama Pengguna", - "Password": "Sandi", - "Remember me": "Ingat saya", - "Login": "Masuk", - "No Monitors, please": "Tolong, jangan ada Monitor", - "add one": "tambahkan satu", - "Notification Type": "Tipe Notifikasi", - "Email": "Surel", - "Test": "Tes", - "Certificate Info": "Info Sertifikasi", - "Resolver Server": "Server Penjawab", - "Resource Record Type": "Jenis Rekam Sumber Daya", - "Last Result": "Hasil Terakhir", - "Create your admin account": "Buat akun admin Anda", - "Repeat Password": "Ulangi Sandi", - "Import Backup": "Impor Cadangan", - "Export Backup": "Ekspor Cadangan", - "Export": "Ekspor", - "Import": "Impor", - "respTime": "Tanggapan. Waktu (milidetik)", - "notAvailableShort": "N/A", - "Default enabled": "Bawaan diaktifkan", - "Apply on all existing monitors": "Terapkan pada semua monitor yang ada", - "Create": "Buat", - "Clear Data": "Bersihkan Data", - "Events": "Peristiwa", - "Heartbeats": "Heartbeat", - "Auto Get": "Ambil Otomatis", - "backupDescription": "Anda dapat mencadangkan semua monitor dan semua notifikasi ke dalam berkas JSON.", - "backupDescription2": "Catatan: Data sejarah dan peristiwa tidak disertakan.", - "backupDescription3": "Data sensitif seperti notifikasi token disertakan dalam berkas ekspor, harap simpan dengan hati-hati.", - "alertNoFile": "Silakan pilih berkas untuk diimpor.", - "alertWrongFileType": "Silakan pilih berkas JSON.", - "Clear all statistics": "Hapus semua statistik", - "Skip existing": "Lewati yang ada", - "Overwrite": "Timpa", - "Options": "Opsi", - "Keep both": "Simpan keduanya", - "Verify Token": "Verifikasi Token", - "Setup 2FA": "Pengaturan 2FA", - "Enable 2FA": "Aktifkan 2FA", - "Disable 2FA": "Nonaktifkan 2FA", - "2FA Settings": "Pengaturan 2FA", - "Two Factor Authentication": "Autentikasi Dua Faktor", - "Active": "Aktif", - "Inactive": "Tidak Aktif", - "Token": "Token", - "Show URI": "Lihat URI", - "Tags": "Tanda", - "Add New below or Select...": "Tambahkan Baru di bawah atau Pilih…", - "Tag with this name already exist.": "Tanda dengan nama ini sudah ada.", - "Tag with this value already exist.": "Tanda dengan nilai ini sudah ada.", - "color": "warna", - "value (optional)": "nilai (tidak harus diisi)", - "Gray": "Abu-abu", - "Red": "Merah", - "Orange": "Jingga", - "Green": "Hijau", - "Blue": "Biru", - "Indigo": "Biru Tua", - "Purple": "Ungu", - "Pink": "Merah Muda", - "Search...": "Cari…", - "Avg. Ping": "Rata-rata Ping", - "Avg. Response": "Rata-rata Tanggapan", - "Entry Page": "Beranda", - "statusPageNothing": "Tidak ada di sini, silakan tambahkan grup atau monitor.", - "No Services": "Tidak ada Layanan", - "All Systems Operational": "Semua Sistem Berfungsi", - "Partially Degraded Service": "Layanan Terdegradasi Sebagian", - "Degraded Service": "Layanan Terdegradasi", - "Add Group": "Tambah Grup", - "Add a monitor": "Tambah monitor", - "Edit Status Page": "Edit Halaman Status", - "Go to Dashboard": "Pergi ke Dasbor", - "Status Page": "Halaman Status", - "Status Pages": "Halaman Status", - "defaultNotificationName": "{notification} saya Peringatan ({number})", - "here": "di sini", - "Required": "Wajib", - "telegram": "Telegram", - "Bot Token": "Token Bot", - "wayToGetTelegramToken": "Anda dapat mendapatkan token dari {0}.", - "Chat ID": "Chat ID", - "supportTelegramChatID": "Mendukung Obrolan Langsung / Grup / Channel Chat ID", - "wayToGetTelegramChatID": "Anda bisa mendapatkan chat id Anda dengan mengirim pesan ke bot dan pergi ke url ini untuk melihat chat_id:", - "YOUR BOT TOKEN HERE": "BOT TOKEN ANDA DI SINI", - "chatIDNotFound": "Chat ID tidak ditemukan, tolong kirim pesan ke bot ini dulu", - "webhook": "Webhook", - "Post URL": "Post URL", - "Content Type": "Tipe konten", - "webhookJsonDesc": "{0} bagus untuk peladen http modern seperti express.js", - "webhookFormDataDesc": "{multipart} bagus untuk PHP, Anda hanya perlu mengurai json dengan {decodeFunction}", - "smtp": "Surel (SMTP)", - "secureOptionNone": "None / STARTTLS (25, 587)", - "secureOptionTLS": "TLS (465)", - "Ignore TLS Error": "Abaikan Kesalahan TLS", - "From Email": "Dari Email", - "emailCustomSubject": "Subjek", - "To Email": "Ke Email", - "smtpCC": "CC", - "smtpBCC": "BCC", - "discord": "Discord", - "Discord Webhook URL": "URL Webhook Discord", - "wayToGetDiscordURL": "Anda bisa mendapatkan ini dengan pergi ke Server Pengaturan -> Integrasi -> Lihat Webhooks -> Buat Webhook", - "Bot Display Name": "Nama Bot", - "Prefix Custom Message": "Awalan Pesan", - "Hello @everyone is...": "Halo {'@'}everyone is…", - "teams": "Microsoft Teams", - "Webhook URL": "URL Webhook", - "wayToGetTeamsURL": "Anda dapat mempelajari cara membuat url webhook {0}.", - "signal": "Sinyal", - "Number": "Nomer", - "Recipients": "Penerima", - "needSignalAPI": "Anda harus memiliki klien sinyal dengan REST API.", - "wayToCheckSignalURL": "Anda dapat memeriksa url ini untuk melihat cara menyiapkannya:", - "signalImportant": "PENTING: Anda tidak dapat mencampur grup dan nomor di penerima!", - "gotify": "Gotify", - "Application Token": "Token Aplikasi", - "Server URL": "URL Server", - "Priority": "Prioritas", - "slack": "Slack", - "Icon Emoji": "Ikon Emoji", - "Channel Name": "Nama Saluran", - "Uptime Kuma URL": "Uptime Kuma URL", - "aboutWebhooks": "Info lain tentang webhook: {0}", - "aboutChannelName": "Masukan nama saluran di {0} Kolom Nama Saluran jika Anda ingin melewati saluran webhook. Contoh: #saluran-lain", - "aboutKumaURL": "Jika Anda membiarkan bidang URL Uptime Kuma kosong, itu akan menjadi bawaan ke halaman Proyek Github.", - "emojiCheatSheet": "Lembar contekan emoji: {0}", - "rocket.chat": "Rocket.chat", - "pushover": "Pushover", - "pushy": "Pushy", - "PushByTechulus": "Push by Techulus", - "octopush": "Octopush", - "promosms": "PromoSMS", - "clicksendsms": "ClickSend SMS", - "lunasea": "LunaSea", - "apprise": "Apprise (Mendukung 50+ layanan notifikasi)", - "GoogleChat": "Google Chat (hanya Google Workspace)", - "pushbullet": "Pushbullet", - "line": "Line Messenger", - "mattermost": "Mattermost", - "User Key": "Kunci pengguna", - "Device": "Perangkat", - "Message Title": "Judul Pesan", - "Notification Sound": "Suara Nofifikasi", - "More info on:": "Info lebih lanjut tentang: {0}", - "pushoverDesc1": "Prioritas darurat (2) memiliki batas waktu bawaan 30 detik antara percobaan ulang dan akan kadaluwarsa setelah 1 jam.", - "pushoverDesc2": "Jika Anda ingin mengirim pemberitahuan ke perangkat yang berbeda, isi kolom Perangkat.", - "SMS Type": "Tipe SMS", - "octopushTypePremium": "Premium (Cepat - direkomendasikan untuk mengingatkan)", - "octopushTypeLowCost": "Low Cost (Lambat, terkadang diblokir oleh operator)", - "checkPrice": "Cek harga {0}:", - "apiCredentials": "Kredensial API", - "octopushLegacyHint": "Apakah Anda menggunakan Octopush versi lama (2011-2020) atau versi baru?", - "Check octopush prices": "Cek harga octopush {0}.", - "octopushPhoneNumber": "Nomer Telpon/HP (format internasional, contoh : +33612345678) ", - "octopushSMSSender": "Nama Pengirim SMS : 3-11 karakter alfanumerik dan spasi (a-zA-Z0-9)", - "LunaSea Device ID": "ID Perangkat LunaSea", - "Apprise URL": "Apprise URL", - "Example:": "Contoh: {0}", - "Read more:": "Baca lebih lanjut: {0}", - "Status:": "Status: {0}", - "Read more": "Baca lebih lanjut", - "appriseInstalled": "Apprise diinstall.", - "appriseNotInstalled": "Apprise tidak diinstall. {0}", - "Access Token": "Token Akses", - "Channel access token": "Token akses saluran", - "Line Developers Console": "Konsol Pengembang Line", - "lineDevConsoleTo": "Konsol Pengembang Line - {0}", - "Basic Settings": "Pengaturan Dasar", - "User ID": "ID User", - "Messaging API": "API Messaging", - "wayToGetLineChannelToken": "Pertama akses {0}, buat penyedia dan saluran (Messaging API), lalu Anda bisa mendapatkan token akses saluran dan id pengguna dari item menu yang disebutkan di atas.", - "Icon URL": "Icon URL", - "aboutIconURL": "Anda dapat memberikan tautan ke gambar di \"Icon URL\" untuk mengganti gambar profil bawaan. Tidak akan digunakan jika Ikon Emoji diset.", - "aboutMattermostChannelName": "Anda dapat mengganti saluran bawaan tujuan posting webhook dengan memasukkan nama saluran ke dalam Kolom \"Channel Name\". Ini perlu diaktifkan di pengaturan webhook Mattermost. contoh: #other-channel", - "matrix": "Matrix", - "promosmsTypeEco": "SMS ECO - murah tapi lambat dan sering kelebihan beban. Terbatas hanya untuk penerima Polandia.", - "promosmsTypeFlash": "SMS FLASH - Pesan akan otomatis muncul di perangkat penerima. Terbatas hanya untuk penerima Polandia.", - "promosmsTypeFull": "SMS FULL - Tingkat Premium SMS, Anda dapat menggunakan Nama Pengirim Anda (Nama Anda harus didaftarkan terlebih dahulu). Dapat diandalkan untuk peringatan.", - "promosmsTypeSpeed": "SMS SPEED - Prioritas tertinggi dalam sistem. Sangat cepat dan dapat diandalkan tetapi mahal (sekitar dua kali lipat dari harga SMS FULL).", - "promosmsPhoneNumber": "Nomor telepon (untuk penerima Polandia Anda dapat melewati kode area)", - "promosmsSMSSender": "Nama Pengirim SMS : Nama pra-registrasi atau salah satu bawaan: InfoSMS, Info SMS, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookUrl", - "matrixHomeserverURL": "Homeserver URL (dengan http(s):// dan port tambahan)", - "Internal Room Id": "ID Ruang Internal", - "matrixDesc1": "Kamu dapat menemukan Internal Room ID dengan melihat di bagian konfigurasi ruang di Matrix. Seharusnya berbentuk seperti !QMdRCpUIfLwsfjxye6:home.server.", - "matrixDesc2": "Sangat direkomendasikan kepada Anda untuk membuat akun baru dan jangan menggunakan token atas akun terkini yang memiliki token akses secara penuh terhadap akun dan seluruh ruang yang terdaftar. Alih - alih, buat akun baru dan undang akun tsb ke ruang tempat anda ingin menerima notifikasi. Untuk mendapatkan token akses anda dapat menjalankan {0}", - "Method": "Metode", - "Body": "Body", - "Headers": "Headers", - "PushUrl": "Push URL", - "HeadersInvalidFormat": "Request Headers memiliki format JSON yang tidak sesuai: ", - "BodyInvalidFormat": "Request Body memiliki format JSON yang tidak sesuai: ", - "Monitor History": "Riyawat Monitor", - "clearDataOlderThan": "Simpan data riwayat monitoring selama {0} hari.", - "PasswordsDoNotMatch": "Password tidak sama.", - "records": "catatan", - "One record": "Satu catatan", - "steamApiKeyDescription": "Untuk monitoring Steam Game Server Anda membutuhkan kunci Steam Web-API. Anda dapat mendaftarkan Kunci API Anda melalui: ", - "Current User": "Pengguna Saat Ini", - "topic": "topik", - "topicExplanation": "MQTT topik untuk dimonitor", - "successMessage": "Pesan Berhasil", - "successMessageExplanation": "Pesan MQTT yang akan dianggap berhasil", - "recent": "Baru saja", - "Done": "Selesai", - "Info": "Info", - "Security": "Keamanan", - "Steam API Key": "Kunci API Steam", - "Shrink Database": "Kecilkan Database", - "Pick a RR-Type...": "Pilih RR-Type…", - "Pick Accepted Status Codes...": "Pilih Kode Status yang Diterima…", - "Default": "Default", - "HTTP Options": "Opsi HTTP", - "Create Incident": "Buat Incident", - "Title": "Judul", - "Content": "Konten", - "Style": "Gaya", - "info": "info", - "warning": "peringatan", - "danger": "bahaya", - "error": "kesalahan", - "critical": "kritis", - "primary": "utama", - "light": "terang", - "dark": "gelap", - "Post": "Post", - "Please input title and content": "Masukkan judul dan konten", - "Created": "Dibuat", - "Last Updated": "Terakhir Diperbarui", - "Unpin": "Lepaskan Semat", - "Switch to Light Theme": "Ubah ke Tema Terang", - "Switch to Dark Theme": "Ubah ke Tema Gelap", - "Show Tags": "Tampilkan Tags", - "Hide Tags": "Sembunyikan Tags", - "Description": "Deskripsi", - "No monitors available.": "Tidak ada monitor yang tersedia.", - "Add one": "Tambahkan", - "No Monitors": "Tidak ada monitor", - "Untitled Group": "Group Tanpa Judul", - "Services": "Layanan", - "Discard": "Buang", - "Cancel": "Batal", - "Powered by": "Dipersembahkan oleh", - "serwersms": "SerwerSMS.pl", - "serwersmsAPIUser": "Nama Pengguna API ( termamsuk awalan webapi_ )", - "serwersmsAPIPassword": "Kata Sandi API", - "serwersmsPhoneNumber": "Nomor Telepon", - "serwersmsSenderName": "Nama Pengirim SMS (didaftarkan melalui portal pelanggan)", - "stackfield": "Stackfield", - "Customize": "Kustomisasi", - "Custom Footer": "Tambahan Footer", - "Custom CSS": "Tambahan CSS", - "smtpDkimSettings": "Pengaturan DKIM", - "smtpDkimDesc": "Silakan merujuk ke Nodemailer DKIM {0} untuk penggunaan.", - "documentation": "dokumentasi", - "smtpDkimDomain": "Nama Domain", - "smtpDkimKeySelector": "Selektor Kunci", - "smtpDkimPrivateKey": "Kunci Pribadi", - "smtpDkimHashAlgo": "Algoritma Hash (Opsional)", - "smtpDkimheaderFieldNames": "Header Keys untuk ditambahkan (Optional)", - "smtpDkimskipFields": "Header Keys not untuk ditambahkan (Optional)", - "wayToGetPagerDutyKey": "Anda dapat menambahkan melalui Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Lalu Anda dapat menjadi dengan kata kunci \"Events API V2\". Informasi tambahan {0}", - "Integration Key": "Kunci Integrasi", - "Integration URL": "URL Integrasi", - "Auto resolve or acknowledged": "Penyelesaian otomatis atau diakui", - "do nothing": "tidak melakukan apapun", - "auto acknowledged": "otomatis diakui", - "auto resolve": "otomatis terselesaikan", - "gorush": "Gorush", - "alerta": "Alerta", - "alertaApiEndpoint": "API Endpoint", - "alertaEnvironment": "Lingkungan", - "alertaApiKey": "Kunci API", - "alertaAlertState": "Status Siaga", - "alertaRecoverState": "Status Pemulihan", - "deleteStatusPageMsg": "Apakah Anda yakin untuk menghapus halaman status berikut?", - "Proxies": "Proxy", - "default": "Bawaan", - "enabled": "Diaktifkan", - "setAsDefault": "Tetapkan sebagai bawaan", - "deleteProxyMsg": "Apakah Anda yakin ingin menghapus proxy berikut untuk seluruh monitor?", - "proxyDescription": "Proxy harus ditambahkan ke monitor agar berfungsi.", - "enableProxyDescription": "Proxy berikut tidak akan berdampak ke monitor hingga diaktifkan. Anda dapat mengontrol menonaktifkan sementara proxy dari semua monitor dengan status aktivasi.", - "setAsDefaultProxyDescription": "Proxy berikut akan diaktifkan sebagai bawaan untuk monitor baru. Anda masih dapat menonaktifkan proxy secara terpisah untuk setiap monitor.", - "Certificate Chain": "Rangkaian Sertifikat", - "Valid": "Berlaku", - "Invalid": "Tidak Valid", - "AccessKeyId": "AccessKey ID", - "SecretAccessKey": "AccessKey Secret", - "PhoneNumbers": "Nomor Telepon", - "TemplateCode": "Kode Template", - "SignName": "Nama Tanda", - "Sms template must contain parameters: ": "Template SMS harus berisi parameter: ", - "Bark Endpoint": "Bark Endpoint", - "Bark Group": "Grup Bark", - "Bark Sound": "Suara Bark", - "WebHookUrl": "WebHookUrl", - "SecretKey": "SecretKey", - "For safety, must use secret key": "Untuk keamaan Anda harus menggunakan kunci rahasia", - "Device Token": "Token Perangkat", - "Platform": "Platform", - "Huawei": "Huawei", - "High": "Tinggi", - "Retry": "Ulang", - "Topic": "Topik", - "WeCom Bot Key": "Kunci WeCom Bot", - "Setup Proxy": "Siapkan Proxy", - "Proxy Protocol": "Protokol Proxy", - "Proxy Server": "Server Proxy", - "Proxy server has authentication": "Server Proxy memiliki autentikasi", - "User": "Pengguna", - "Installed": "Terpasang", - "Not installed": "Tidak terpasang", - "Running": "Berjalan", - "Not running": "Tidak berjalan", - "Remove Token": "Hapus Token", - "Start": "Mulai", - "Stop": "Berhenti", - "Uptime Kuma": "Uptime Kuma", - "Add New Status Page": "Tambahkan Halaman Status Baru", - "Slug": "Slug", - "Accept characters:": "Terima karakter:", - "startOrEndWithOnly": "Mulai atau akhiri hanya dengan {0}", - "No consecutive dashes": "Tanda hubung tidak berurutan", - "Next": "Selanjutnya", - "The slug is already taken. Please choose another slug.": "Slug telah digunakan. Silakan pilih slug lain.", - "No Proxy": "Tidak ada Proxy", - "Authentication": "Autentikasi", - "HTTP Basic Auth": "Autentikasi Dasar HTTP", - "New Status Page": "Halaman Status Baru", - "Page Not Found": "Halaman Tidak Ditemukan", - "Reverse Proxy": "Proxy Terbalik", - "Backup": "Cadangan", - "About": "Tentang", - "wayToGetCloudflaredURL": "(Unduh cloudflared dari {0})", - "cloudflareWebsite": "Situs Cloudflare", - "Message:": "Pesan:", - "Don't know how to get the token? Please read the guide:": "Tidak tahu cara mendapatkan token? Silakan baca panduannya:", - "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Koneksi saat ini mungkin hilang jika Anda saat ini terhubung melalui Cloudflare Tunel. Apakah Anda yakin ingin menghentikannya? Ketik kata sandi Anda saat ini untuk mengonfirmasinya.", - "HTTP Headers": "Header HTTP", - "Trust Proxy": "Proxy Terpercaya", - "Other Software": "Perangkat Lunak lainnya", - "For example: nginx, Apache and Traefik.": "Sebagai contoh: nginx, Apache and Traefik.", - "Please read": "Harap dibaca", - "Subject:": "Subjek:", - "Valid To:": "Berlaku Untuk:", - "Days Remaining:": "Hari Tersisa:", - "Issuer:": "Penerbit:", - "Fingerprint:": "Sidik jari:", - "No status pages": "Tidak ada halaman status", - "Domain Name Expiry Notification": "Pemberitahuan Kedaluwarsa Nama Domain", - "Proxy": "Proxy", - "Date Created": "Tanggal Dibuat", - "HomeAssistant": "Home Assistant", - "onebotHttpAddress": "Alamat HTTP OneBot", - "onebotMessageType": "Jenis Pesan OneBot", - "onebotGroupMessage": "Grup", - "onebotPrivateMessage": "Pribadi", - "onebotUserOrGroupId": "Grup/Pengguna ID", - "onebotSafetyTips": "Untuk keamanan, harus mengatur token akses", - "PushDeer Key": "Kunci PushDeer", - "Footer Text": "Tulisan Footer", - "Show Powered By": "Tampilkan Dipersembahkan oleh", - "Domain Names": "Nama Domain", - "signedInDisp": "Masuk sebagai {0}", - "signedInDispDisabled": "Autentikasi dinonaktifkan.", - "RadiusSecret": "Radius Secret", - "RadiusSecretDescription": "Shared Secret antara klien dan server", - "RadiusCalledStationId": "Called Station Id", - "RadiusCalledStationIdDescription": "Pengenal perangkat yang dipanggil", - "RadiusCallingStationId": "Memanggil Station Id", - "RadiusCallingStationIdDescription": "Pengenal perangkat panggilan", - "Certificate Expiry Notification": "Pemberitahuan Kedaluwarsa Sertifikat", - "API Username": "Nama Pengguna API", - "API Key": "Kunci API", - "Recipient Number": "Nomor Penerima", - "From Name/Number": "Dari Nama/Nomor", - "Leave blank to use a shared sender number.": "Biarkan kosong untuk menggunakan nomor pengirim bersama.", - "Octopush API Version": "Versi API Octopush", - "Legacy Octopush-DM": "Legacy Octopush-DM", - "endpoint": "endpoint", - "octopushAPIKey": "\"API key\" dari kredensial HTTP API di panel kontrol", - "octopushLogin": "\"Login\" dari kredensial HTTP API di panel kontrol", - "promosmsLogin": "Nama Masuk API", - "promosmsPassword": "Kata Sandi API", - "pushoversounds pushover": "Pushover (bawaan)", - "pushoversounds bike": "Sepeda", - "pushoversounds bugle": "Terompet", - "pushoversounds cashregister": "Mesin Uang", - "pushoversounds classical": "Classical", - "pushoversounds cosmic": "Kosmik", - "pushoversounds falling": "Reruntuhan", - "pushoversounds gamelan": "Gamelan", - "pushoversounds incoming": "Masuk", - "pushoversounds intermission": "Jeda", - "pushoversounds magic": "Magic", - "pushoversounds mechanical": "Mekanik", - "pushoversounds pianobar": "Bilah Piano", - "pushoversounds siren": "Sirene", - "pushoversounds spacealarm": "Luar Angkasa", - "pushoversounds tugboat": "Kapal Tunda", - "pushoversounds alien": "Alien Alarm (panjang)", - "pushoversounds climb": "Mendaki (long)", - "pushoversounds persistent": "Terus menerus (panjang)", - "pushoversounds echo": "Pushover Echo (panjang)", - "pushoversounds updown": "Up Down (panjang)", - "pushoversounds vibrate": "Hanya bergetar", - "pushoversounds none": "Tidak ada (hening)", - "pushyAPIKey": "Kunci Secret API", - "pushyToken": "Token Perangkat", - "Show update if available": "Tampilkan pembaruan jika tersedia", - "Also check beta release": "Periksa juga rilis beta", - "Using a Reverse Proxy?": "Menggunakan Proxy Terbalik?", - "Check how to config it for WebSocket": "Periksa cara mengonfigurasinya untuk A WebSocket", - "Steam Game Server": "Server Game Steam", - "Most likely causes:": "Kemungkinan besar penyebabnya:", - "The resource is no longer available.": "Sumber daya tidak lagi tersedia.", - "There might be a typing error in the address.": "Mungkin ada kesalahan pengetikan di alamat.", - "What you can try:": "Apa yang dapat kamu coba:", - "Retype the address.": "Ketik ulang alamat.", - "Go back to the previous page.": "Kembali ke halaman sebelumnya.", - "Coming Soon": "Segera", - "wayToGetClickSendSMSToken": "Anda bisa mendapatkan Nama Pengguna API dan Kunci API dari {0} .", - "Connection String": "String Koneksi", - "Query": "Query", - "settingsCertificateExpiry": "Sertifikat TLS Kadaluarsa", - "certificationExpiryDescription": "Monitor HTTPS memicu pemberitahuan saat sertifikat TLS kedaluwarsa dalam:", - "Setup Docker Host": "Siapkan Host Docker", - "Connection Type": "Jenis Koneksi", - "Docker Daemon": "Docker Daemon", - "deleteDockerHostMsg": "Apakah Anda yakin ingin menghapus host docker berikut untuk semua monitor?", - "socket": "Socket", - "tcp": "TCP / HTTP", - "Docker Container": "Kontainer Docker", - "Container Name / ID": "Nama / ID Container", - "Docker Host": "Host Docker", - "Docker Hosts": "Hosts Docker", - "ntfy Topic": "Topik ntfy", - "Domain": "Domain", - "Workstation": "Workstation", - "disableCloudflaredNoAuthMsg": "Anda berada dalam mode Tanpa Autentikasi, kata sandi tidak diperlukan.", - "trustProxyDescription": "Trust 'X-Forwarded-*' headers. Jika Anda ingin mendapatkan IP klien yang benar dan Uptime Kuma Anda dibalik proxy seperti Nginx or Apache, Anda harus mengaktifkan ini.", - "wayToGetLineNotifyToken": "Anda bisa mendapatkan token akses dari {0}", - "Examples": "Contoh", - "Home Assistant URL": "URL Home Asisten", - "Long-Lived Access Token": "Token Akses Berumur Panjang", - "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Token Akses Berumur Panjang dapat dibuat dengan mengklik nama profil Anda (kiri bawah) dan menggulir ke bawah lalu klik Buat Token. ", - "Notification Service": "Layanan Pemberitahuan", - "default: notify all devices": "bawaan: notifikasi seluruh perangkat", - "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Daftar Layanan Pemberitahuan dapat ditemukan di Home Assistant pada \"Developer Tools > Services\" cari \"notification\" lalu cari nama perangkat Anda.", - "Automations can optionally be triggered in Home Assistant:": "Otomatisasi dapat dipicu secara opsional di Home Assistant:", - "Trigger type:": "Tipe Trigger/Pemicu:", - "Event type:": "Tipe event:", - "Event data:": "Data event:", - "Then choose an action, for example switch the scene to where an RGB light is red.": "Kemudian pilih tindakan, misalnya alihkan ke tempat dimana lampu RGB berwarna merah.", - "Frontend Version": "Versi Frontend", - "Frontend Version do not match backend version!": "Versi Frontend tidak sama dengan versi backend!", - "Base URL": "URL Dasar", - "goAlertInfo": "GoAlert adalah aplikasi open source untuk penjadwalan panggilan, eskalasi otomatis dan pemberitahuan (seperti SMS atau panggilan suara). Secara otomatis melibatkan orang yang tepat, dengan cara yang benar, dan pada waktu yang tepat! {0}", - "goAlertIntegrationKeyInfo": "Dapatkan kunci integrasi API generik untuk layanan dalam format ini \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" biasanya nilai parameter token dari URL yang disalin.", - "goAlert": "GoAlert", - "backupOutdatedWarning": "Tidak digunakan lagi: Karena banyak fitur ditambahkan dan fitur pencadangan ini agak tidak terpelihara, fitur ini tidak dapat menghasilkan atau memulihkan cadangan lengkap.", - "backupRecommend": "Silahkan backup volume atau folder (./data/) secara langsung.", - "Help": "Bantuan", - "Game": "Permainan", - "markdownSupported": "Dukungan sintaks markdown", - "statusMaintenance": "Pemeliharaan", - "Maintenance": "Tidak Ada Pemeliharaan", - "General Monitor Type": "Tipe Monitor Umum", - "Passive Monitor Type": "Tipe Monitor Pasif", - "Specific Monitor Type": "Tipe Monitor Spesifik", - "Monitor": "Monitor", - "Guild ID": "ID Guild", - "twilioAccountSID": "SID akun", - "twilioAuthToken": "Token Autentikasi (API Key)", - "ntfyAuthenticationMethod": "Metode Autentikasi", - "ntfyUsernameAndPassword": "Nama pengguna dan kata sandi", - "Add Another": "Tambah Lainnya", - "Key Added": "Kunci Ditambahkan", - "Google Analytics ID": "ID Google Analytics", - "pagertreeIntegrationUrl": "URL integrasi", - "pagertreeUrgency": "Darurat", - "Home": "Beranda", - "startDateTime": "Tanggal/Waktu Mulai", - "Recurring": "Berulang", - "strategyManual": "Aktif/TidakAktif Secara Manual", - "infiniteRetention": "Setel ke 0 untuk retensi tak terbatas.", - "enableGRPCTls": "Izinkan untuk mengirim permintaan gRPC dengan koneksi TLS", - "grpcMethodDescription": "Nama metode dikonversi ke format camelCase seperti sayHello, check, dll.", - "deleteMaintenanceMsg": "Apakah Anda yakin ingin menghapus pemeliharaan ini?", - "Free Mobile API Key": "Kunci API Seluler Gratis", - "Enable TLS": "Aktifkan TLS", - "Proto Method": "Metode Proto", - "Proto Content": "Konten Proto", - "Economy": "Ekonomi", - "Free Mobile User Identifier": "Pengidentifikasi Pengguna Seluler", - "Proto Service Name": "Nama Layanan Proto", - "SMSManager API Docs": "Dokumen API SMSManager ", - "Expiry date": "Tanggal kadaluarsa", - "No API Keys": "Tidak ada Kunci API", - "Expires": "Berakhir", - "pagertreeCritical": "Penting", - "pagertreeResolve": "Penyelesaian Otomatis", - "lunaseaDeviceID": "ID perangkat", - "lunaseaUserID": "ID Pengguna", - "twilioFromNumber": "Dari Nomor", - "twilioToNumber": "Ke Nomor", - "Badge Generator": "Pembuat Lencana {0}", - "Badge Duration": "Durasi Lencana", - "Badge Label": "Label Lencana", - "Badge Prefix": "Prefiks Lencana", - "Badge Suffix": "Suffix Lencana", - "Badge Label Color": "Warna Label Lencana", - "Badge Color": "Warna Lencana", - "Badge Label Prefix": "Prefiks Label Lencana", - "telegramSendSilently": "Kirim Secara Senyap", - "Invert Keyword": "Balikkan Kata Kunci", - "Pick Affected Monitors...": "Pilih Monitor yang Terkena Dampak…", - "Badge Label Suffix": "Suffix Label Lencana", - "statusPageMaintenanceEndDate": "berakhir", - "Add API Key": "Tambahkan Kunci API", - "apiKey-expired": "Kedaluwarsa", - "apiKey-active": "Aktif", - "apiKey-inactive": "Tidak aktif", - "Monitor Setting": "Pengaturan Pemantauan {0}", - "Show Clickable Link": "Tampilkan Tautan yang Dapat Diklik", - "Badge Type": "Tipe lencana", - "confirmDeleteTagMsg": "Yakin ingin menghapus tag ini? Monitor yang terkait dengan tag ini tidak akan dihapus.", - "Gateway Type": "tipe Gateway", - "Don't expire": "Jangan sampai kadaluarsa", - "apiKeyAddedMsg": "Kunci API Anda telah ditambahkan. Mohon dicatat karena tidak akan ditampilkan lagi.", - "disableAPIKeyMsg": "Yakin ingin menonaktifkan kunci API ini?", - "pagertreeSilent": "Bisu", - "pagertreeLow": "Rendah", - "pagertreeDoNothing": "Jangan Lakukan Apa-apa", - "wayToGetPagerTreeIntegrationURL": "Setelah membuat integrasi Uptime Kuma di PagerTree, salin Endpoint. Lihat detail lengkap {0}", - "lunaseaTarget": "Sasaran", - "Show Clickable Link Description": "Jika dicentang, setiap orang yang memiliki akses ke halaman status ini dapat memiliki akses ke URL monitor.", - "Open Badge Generator": "Buka Pembuat Lencana", - "Cannot connect to the socket server": "Tidak dapat terhubung ke server soket", - "Reconnecting...": "Menghubungkan ulang...", - "deleteAPIKeyMsg": "Apakah Anda yakin ingin menghapus kunci API ini?", - "Generate": "Hasilkan", - "pagertreeMedium": "Sedang", - "pagertreeHigh": "Tinggi", - "Group": "Grup", - "Body Encoding": "Body Encoding", - "Add New Tag": "Tambahkan Tanda Baru", - "chromeExecutableDescription": "Untuk pengguna Docker, jika Chromium belum diinstal, mungkin perlu waktu beberapa menit untuk menginstal dan menampilkan hasil pengujian. Dibutuhkan 1GB ruang penyimpanan.", - "recurringIntervalMessage": "Jalankan sekali setiap hari | Jalankan sekali setiap {0} hari", - "wayToGetKookBotToken": "Buat aplikasi dan dapatkan token bot Anda di {0}", - "Custom Monitor Type": "Tipe Monitor Khusus", - "API Keys": "Kunci API", - "Expiry": "Kadaluarsa", - "noGroupMonitorMsg": "Tidak tersedia. Buat Monitor Grup Terlebih Dahulu.", - "Close": "Tutup", - "telegramMessageThreadID": "(Opsional) ID Pesan", - "Date and Time": "Tanggal dan waktu", - "Single Maintenance Window": "Jendela Pemeliharaan Tunggal", - "wayToGetZohoCliqURL": "Anda dapat mempelajari cara membuat URL webhook {0}.", - "dayOfWeek": "Hari dalam seminggu", - "dayOfMonth": "Hari dalam Bulan", - "lastDay": "Hari terakhir", - "Clone Monitor": "Klon Monitor", - "Clone": "Klon", - "Server Address": "Alamat server", - "Edit Tag": "Sunting Tag", - "smseagleTo": "Nomor telepon", - "maintenanceStatus-under-maintenance": "Dalam perbaikan", - "webhookAdditionalHeadersDesc": "Menetapkan header tambahan yang dikirim dengan webhook. Setiap header harus didefinisikan sebagai kunci/nilai JSON.", - "webhookCustomBodyDesc": "Tentukan Body HTTP khusus untuk permintaan tersebut. Variabel template {msg}, {heartbeat}, {monitor} yang diterima.", - "webhookBodyPresetOption": "Prasetel - {0}", - "webhookBodyCustomOption": "Body Kustom", - "Packet Size": "Ukuran Paket", - "telegramMessageThreadIDDescription": "Pengidentifikasi unik Opsional untuk pesan target (topik) forum; untuk forum supergrup saja", - "telegramProtectContent": "Lindungi Forwarding/Saving", - "or": "atau", - "sameAsServerTimezone": "Sama seperti Zona Waktu Server", - "endDateTime": "Tanggal/Waktu Berakhir", - "cronExpression": "Ekspresi Cron", - "cronSchedule": "Jadwal: ", - "invalidCronExpression": "Ekspresi Cron Tidak Valid: {0}", - "recurringInterval": "Selang waktu", - "warningTimezone": "Itu menggunakan zona waktu server", - "weekdayShortMon": "Senin", - "weekdayShortTue": "Selasa", - "weekdayShortWed": "Rabu", - "weekdayShortThu": "Kamis", - "weekdayShortFri": "Jum'at", - "weekdayShortSat": "Sabtu", - "weekdayShortSun": "Minggu", - "lastDay1": "Hari Terakhir dalam Sebulan", - "lastDay2": "2 Hari Terakhir Bulan Ini", - "lastDay3": "3 Hari Terakhir Bulan Ini", - "lastDay4": "4 Hari Terakhir Bulan Ini", - "No Maintenance": "Tidak Ada Pemeliharaan", - "pauseMaintenanceMsg": "Anda yakin ingin menjeda?", - "maintenanceStatus-inactive": "Tidak aktif", - "Display Timezone": "Zona Waktu Tampilan", - "IconUrl": "URL ikon", - "Enable DNS Cache": "(Tidak berlaku lagi) Aktifkan Cache DNS untuk monitor HTTP(s)", - "Enable": "Aktifkan", - "Disable": "Nonaktifkan", - "affectedStatusPages": "Tampilkan pesan pemeliharaan ini pada halaman status yang dipilih", - "invertKeywordDescription": "Carilah kata kunci untuk menjadi tidak ada daripada hadir.", - "wayToGetKookGuildID": "Aktifkan 'Mode Pengembang' di pengaturan Kook, dan klik kanan guild untuk mendapatkan ID-nya", - "Strategy": "Strategi", - "high": "tinggi", - "SendKey": "SendKey", - "Lowcost": "rendah", - "smseagleContact": "nama kontak buku telepon", - "smseagleRecipient": "Penerima (jika banyak harus dipisahkan dengan koma)", - "smseagleEncoding": "Kirim sebagai Unicode", - "smseaglePriority": "Prioritas pesan (0-9, default = 0)", - "Learn More": "Pelajari lebih lanjut", - "Badge Up Color": "Warna atas Lencana", - "Badge Maintenance Color": "Warna Lencana Pemeliharaan", - "Badge Warn Color": "Warna Lencana Peringatan", - "Request Body": "Permintaan Body", - "uninstalling": "Menghapus instalan", - "notificationRegional": "Daerah", - "atLeastOneMonitor": "Pilih setidaknya satu monitor yang terpengaruh", - "pushoverMessageTtl": "TTL pesan (Detik)", - "smseagleGroup": "Nama grup buku telepon", - "smseagleRecipientType": "Tipe Penerima", - "smseagleToken": "Token Akses API", - "smseagleUrl": "URL perangkat SMSEagle Anda", - "Schedule maintenance": "Perbaikan Terjadwal", - "Affected Monitors": "Monitor yang Terpengaruh", - "Start of maintenance": "Mulai pemeliharaan", - "All Status Pages": "Semua Halaman Status", - "Select status pages...": "Pilih halaman status…", - "Custom": "Khusus", - "Optional": "Opsional", - "dnsCacheDescription": "Ini mungkin tidak berfungsi di beberapa lingkungan IPv6, nonaktifkan jika Anda mengalami masalah.", - "Maintenance Time Window of a Day": "Jendela Waktu Perawatan dalam Sehari", - "Effective Date Range": "Rentang Tanggal Efektif (Opsional)", - "Schedule Maintenance": "Jadwal Pemeliharaan", - "Badge Down Color": "Warna bawah Lencana", - "Badge Warn Days": "Hari Lencana Peringatan", - "statusPageRefreshIn": "Muat ulang dalam: {0}", - "webhookAdditionalHeadersTitle": "Header Tambahan", - "maintenanceStatus-unknown": "Tidak dikenal", - "Server Timezone": "Zona Waktu Server", - "maintenanceStatus-scheduled": "Dijadwalkan", - "maintenanceStatus-ended": "Berakhir", - "dataRetentionTimeError": "Periode retensi harus 0 atau lebih besar", - "chromeExecutable": "Chrome/Chromium yang Dapat di Eksekusi", - "chromeExecutableAutoDetect": "Deteksi otomatis", - "Edit Maintenance": "Sunting Pemeliharaan", - "DateTime Range": "Rentang Tanggal dan Waktu", - "loadingError": "Tidak dapat mengambil data, harap coba lagi nanti.", - "installing": "Memasang", - "uninstall": "Copot pemasangan", - "confirmUninstallPlugin": "Anda yakin ingin mencopot pemasangan plugin ini?", - "cloneOf": "Klon dari {0}", - "affectedMonitorsDescription": "Pilih monitor yang terpengaruh oleh pemeliharaan saat ini", - "You can divide numbers with": "Anda dapat membagi angka dengan", - "Continue": "Lanjutkan", - "Badge Style": "Gaya Lencana", - "Badge value (For Testing only.)": "Nilai lencana (Hanya untuk Pengujian.)", - "Badge URL": "URL lencana", - "Badge Down Days": "Hari Penghentian Lencana", - "telegramSendSilentlyDescription": "Mengirim pesan secara senyap. Pengguna akan menerima notifikasi tanpa suara.", - "telegramProtectContentDescription": "Jika diaktifkan, pesan bot di Telegram akan dilindungi dari forwarding dan saving.", - "plugin": "Pengaya | Plugin", - "install": "Pasang", - "promosmsAllowLongSMS": "Izinkan SMS panjang", - "Badge Pending Color": "Warna Lencana Tertunda", - "Monitor Group": "Monitor Grup", - "Expected Value": "Parameter yang diharapkan", - "Json Query": "Kueri JSON", - "setupDatabaseSQLite": "File database sederhana, direkomendasikan untuk penerapan skala kecil. Sebelum v2.0.0, Uptime Kuma menggunakan SQLite sebagai database default.", - "setupDatabaseMariaDB": "Hubungkan ke database MariaDB eksternal. Anda perlu mengatur informasi koneksi database.", - "setupDatabaseEmbeddedMariaDB": "Anda tidak perlu mengatur apa pun. Docker Image ini telah menyematkan dan mengonfigurasi MariaDB untuk Anda secara otomatis. Uptime Kuma akan terhubung ke database ini melalui soket unix.", - "setupDatabaseChooseDatabase": "Database mana yang ingin Anda gunakan?", - "dbName": "Nama Database", - "pushViewCode": "Bagaimana cara menggunakan Push monitor? (Lihat Kode)", - "monitorToastMessagesLabel": "Pantau notifikasi Toast", - "toastErrorTimeout": "Batas Waktu untuk Pemberitahuan Kesalahan", - "filterActive": "Aktif", - "Select": "Pilih", - "tailscalePingWarning": "Untuk menggunakan monitor Tailscale Ping, Anda perlu menginstal Uptime Kuma tanpa Docker dan juga menginstal klien Tailscale di server Anda.", - "emailTemplateLimitedToUpDownNotification": "hanya tersedia untuk detak jantung ATAS/BAWAH, jika tidak, null", - "aboutNotifyChannel": "Beritahu saluran akan memicu pemberitahuan desktop atau seluler untuk semua anggota saluran, baik ketersediaannya diatur ke aktif atau tidak.", - "monitorToastMessagesDescription": "Notifikasi Toast untuk monitor hilang setelah waktu tertentu dalam hitungan detik. Setel ke -1 akan menonaktifkan batas waktu. Setel ke 0 akan menonaktifkan notifikasi Toast.", - "wayToGetFlashDutyKey": "Anda dapat membuka Saluran -> (Pilih Saluran) -> Integrasi -> Tambahkan halaman integrasi baru, tambahkan 'Uptime Kuma' untuk mendapatkan alamat push, salin Kunci Integrasi di alamat tersebut. Untuk informasi lebih lanjut, silakan kunjungi", - "Saved.": "Tersimpan.", - "authUserInactiveOrDeleted": "Pengguna tidak aktif atau dihapus.", - "authInvalidToken": "Token Tidak Valid.", - "authIncorrectCreds": "Username atau kata sandi salah.", - "2faAlreadyEnabled": "2FA sudah diaktifkan.", - "2faEnabled": "2FA Diaktifkan.", - "2faDisabled": "2FA Dinonaktifkan.", - "successResumed": "Berhasil Dilanjutkan.", - "successPaused": "Berhasil Dijeda.", - "successDeleted": "Berhasil Dihapus.", - "successEdited": "Berhasil Diedit.", - "successAuthChangePassword": "Kata sandi telah berhasil diperbarui.", - "successBackupRestored": "Cadangan berhasil dipulihkan.", - "successDisabled": "Berhasil Dinonaktifkan.", - "successEnabled": "Berhasil Diaktifkan.", - "GrafanaOncallUrl": "URL Oncall Grafana", - "emailCustomisableContent": "Konten yang dapat disesuaikan", - "leave blank for default subject": "biarkan kosong untuk subjek bawaan", - "Bark API Version": "Versi Bark API", - "Reset Token": "Setel Ulang Token", - "noDockerHostMsg": "Tidak Tersedia. Siapkan Host Docker Terlebih Dahulu.", - "DockerHostRequired": "Silakan atur Docker Host untuk monitor ini.", - "enableNSCD": "Aktifkan NSCD (Name Service Cache Daemon) untuk menyimpan semua permintaan DNS", - "smtpLiquidIntroduction": "Dua bidang berikut dapat dibuat templatnya melalui Bahasa templating Liquid. Silakan lihat {0} untuk petunjuk penggunaan. Berikut ini adalah variabel yang tersedia:", - "leave blank for default body": "biarkan kosong untuk isi bawaan", - "emailTemplateServiceName": "Nama Layanan", - "emailTemplateHostnameOrURL": "Nama host atau URL", - "emailTemplateStatus": "Status", - "emailTemplateMonitorJSON": "objek yang menggambarkan monitor", - "emailTemplateHeartbeatJSON": "objek yang menggambarkan heartbeat", - "emailTemplateMsg": "pesan pemberitahuan", - "emailCustomBody": "Kustomisasi Body", - "Notify Channel": "Beritahu Saluran", - "Server URL should not contain the nfty topic": "URL server tidak boleh berisi topik nfty", - "PushDeer Server": "Server PushDeer", - "pushDeerServerDescription": "Biarkan kosong untuk menggunakan server resmi", - "twilioApiKey": "Kunci API (opsional)", - "Badge Duration (in hours)": "Durasi Badge (dalam jam)", - "Badge Preview": "Pratinjau Lencana", - "toastSuccessTimeout": "Batas Waktu untuk Pemberitahuan Sukses", - "Kafka Brokers": "Kafka Broker", - "Enter the list of brokers": "Masukkan daftar broker", - "Press Enter to add broker": "Tekan Enter untuk menambahkan broker", - "Kafka Topic Name": "Nama Topik Kafka", - "Kafka Producer Message": "Pesan Produser Kafka", - "Enable Kafka SSL": "Aktifkan SSL Kafka", - "Enable Kafka Producer Auto Topic Creation": "Aktifkan Pembuatan Topik Otomatis Produser Kafka", - "Mechanism": "Mekanisme", - "FlashDuty Severity": "Severity", - "nostrRelaysHelp": "Satu URL relai per baris", - "nostrSender": "Kunci Pribadi Pengirim (ndetik)", - "nostrRecipients": "Kunci Publik Penerima (npub)", - "nostrRecipientsHelp": "format npub, satu per baris", - "showCertificateExpiry": "Tampilkan Sertifikat Kedaluwarsa", - "noOrBadCertificate": "Tidak Ada/Sertifikat Salah", - "gamedigGuessPort": "Gamedig: Guess Port", - "nostrRelays": "Relai nostr", - "gamedigGuessPortDescription": "Port yang digunakan oleh Valve Server Query Protocol mungkin berbeda dari port klien. Coba ini jika monitor tidak dapat terhubung ke server Anda.", - "successAdded": "Berhasil Ditambahkan.", - "tagNotFound": "Tag tidak ditemukan.", - "foundChromiumVersion": "Ditemukan Chromium/Chrome. Versi: {0}", - "Kafka SASL Options": "Opsi Kafka SASL", - "Pick a SASL Mechanism...": "Pilih Mekanisme SASL…", - "AccessKey Id": "Id AccessKey", - "Secret AccessKey": "Secret AccessKey", - "Session Token": "Sesi Token", - "pushOthers": "Lainnya", - "programmingLanguages": "Bahasa Pemrograman", - "filterActivePaused": "Berhenti", - "templateMsg": "pesan pemberitahuan", - "templateHeartbeatJSON": "objek yang menggambarkan heartbeat", - "templateMonitorJSON": "objek yang menggambarkan monitor", - "templateLimitedToUpDownCertNotifications": "hanya tersedia untuk notifikasi AKTIF/TIDAK AKTIF/Sertifikat yang kedaluwarsa", - "templateLimitedToUpDownNotifications": "hanya tersedia untuk notifikasi AKTIF/TIDAK AKTIF", - "liquidIntroduction": "Kemampuan templat dicapai melalui bahasa templating Liquid. Silakan lihat {0} untuk petunjuk penggunaan. Ini adalah variabel yang tersedia:", - "selectedMonitorCount": "Terpilih: {0}", - "Check/Uncheck": "Centang/Hapus centang", - "Authorization Identity": "Identitas Otorisasi", - "styleElapsedTime": "Waktu yang berlalu pada bilah heartbeat", - "styleElapsedTimeShowNoLine": "Tampilkan (Tanpa Garis)", - "styleElapsedTimeShowWithLine": "Tampilkan (Dengan Garis)", - "Request Timeout": "Batas Waktu Habis", - "timeoutAfter": "Waktu habis setelah {0} detik", - "successKeywordExplanation": "Kata Kunci MQTT yang akan dianggap sukses", - "Remove the expiry notification": "Hapus hari pemberitahuan kedaluwarsa", - "Browser Screenshot": "Tangkapan Layar Browser", - "Remote Browsers": "Peramban Jarak Jauh", - "Remote Browser": "Peramban Jarak Jauh", - "Add a Remote Browser": "Tambahkan Remote Browser", - "Remote Browser not found!": "Remote Browser tidak ditemukan!", - "remoteBrowsersDescription": "Remote Browsers adalah cara alternatif untuk menjalankan Chromium secara lokal. Siapkan dengan layanan seperti browserless.io atau sambungkan ke layanan Anda sendiri", - "self-hosted container": "kontainer self-hosted", - "remoteBrowserToggle": "Secara default, Chromium berjalan di dalam kontainer Uptime Kuma. Anda dapat menggunakan remote browser dengan menekan tombol ini.", - "useRemoteBrowser": "Gunakan Remote Browser", - "deleteRemoteBrowserMessage": "Apakah Anda yakin ingin menghapus Remote Browser ini untuk semua monitor?", - "Add a new expiry notification day": "Tambahkan hari pemberitahuan kedaluwarsa baru", - "setup a new monitor group": "menyiapkan grup monitor baru", - "openModalTo": "buka modal ke {0}", - "Add a domain": "Tambahkan domain", - "Remove domain": "Hapus domain '{0}'", - "successKeyword": "Kata Kunci Sukses", - "ntfyPriorityHelptextAllExceptDown": "Semua peristiwa dikirim dengan prioritas ini, kecuali peristiwa {0}, yang memiliki prioritas {1}", - "statusPageSpecialSlugDesc": "Tanda khusus {0}: halaman ini akan ditampilkan jika tidak ada tanda khusus yang disediakan", - "settingUpDatabaseMSG": "Menyiapkan basis data. Mungkin perlu waktu beberapa saat, harap bersabar.", - "Search monitored sites": "Mencari situs yang dipantau", - "ntfyPriorityHelptextAllEvents": "Semua peristiwa dikirim dengan prioritas maksimum", - "What is a Remote Browser?": "Apa itu Remote Browser?", - "wayToGetHeiiOnCallDetails": "Cara mendapatkan ID Pemicu dan Kunci API dijelaskan di {documentation}", - "From Phone Number / Transmission Path Originating Address (TPOA)": "Dari Nomor Telepon / Transmission Path Originating Address (TPOA)", - "gtxMessagingFromHint": "Penerima pesan akan melihat TPOA yang ditampilkan sebagai pengirim pesan. Diperbolehkan maksimal 11 karakter alfanumerik, kode pendek, kode panjang lokal atau internasional ({e164}, {e212} or {e214})", - "To Phone Number": "Untuk Nomor Telepon", - "gtxMessagingToHint": "Format internasional, dimulai dengan tanda plus \"+\" ({e164}, {e212} or {e214})", - "gtxMessagingApiKeyHint": "Anda dapat menemukan Kunci API Anda di: Perutean Akun Saya > Lihat Informasi Akun > Kredensial API > REST API (v2.x)", - "Originator type": "Tipe Originator", - "Alphanumeric (recommended)": "Alfanumerik (direkomendasikan)", - "Telephone number": "Nomor telepon", - "cellsyntOriginatortypeAlphanumeric": "String alfanumerik (maks 11 karakter). Penerima tidak dapat membalas pesan tersebut.", - "cellsyntOriginatortypeNumeric": "Nilai numerik (maks 15 digit) dengan nomor telepon dalam format internasional tanpa awalan 00 (contoh nomor Inggris 07920 110 000 harus diisi sebagai 447920110000). Penerima dapat membalas pesan tersebut.", - "cellsyntDestination": "Nomor telepon penerima dalam format internasional yang diawali angka 00, diikuti dengan kode negara, contoh : 00447920110000 untuk nomor Inggris 07920 110 000 (maks total 17 digit). Maksimum 25.000 penerima yang dipisahkan dengan tanda koma per permintaan HTTP.", - "Allow Long SMS": "Izinkan SMS Panjang", - "max 15 digits": "Maksimal 15 digit", - "callMeBotGet": "Anda dapat membuat endpoint untuk {0}, {1} dan {2}. Ingatlah bahwa Anda mungkin akan terkena batas tarif. Batas tarif saat ini adalah: {3}", - "Originator": "Originator", - "cellsyntOriginator": "Terlihat di ponsel penerima sebagai pencetus pesan. Nilai dan fungsi yang diizinkan bergantung pada parameter tipe pencetus.", - "Destination": "Tujuan", - "wayToGetWhapiUrlAndToken": "Anda dapat menggunakan URL API dan token dengan bergabung ke saluran yang Anda inginkan dari {0}", - "whapiRecipient": "Nomor Telepon / Kontak ID / Grup ID", - "API URL": "URL API", - "cellsyntSplitLongMessages": "Pisahkan pesan panjang ke dalam 6 bagian. 153 x 6 = 918 karakter.", - "max 11 alphanumeric characters": "maksimal 11 karakter alfanumerik", - "wayToWriteWhapiRecipient": "Nomor telepon dalam format internasional, tanpa tanda tambah ({0}), Kontak ID ({1}) atau Grup ID ({2}).", - "documentationOf": "{0} Dokumentasi", - "Channel access token (Long-lived)": "Token akses saluran (durasi panjang)", - "Your User ID": "User ID Anda", - "mongodbCommandDescription": "Jalankan perintah MongoDB terhadap database. Untuk informasi tentang perintah yang tersedia, lihat {documentation}", - "Command": "Perintah", - "threemaRecipient": "Penerima", - "threemaRecipientType": "Tipe Penerima", - "threemaRecipientTypeIdentity": "Threem-ID", - "threemaRecipientTypeIdentityFormat": "8 karakter", - "threemaRecipientTypePhone": "Nomor Telepon", - "threemaRecipientTypePhoneFormat": "E.164, tanpa awalan +", - "threemaRecipientTypeEmail": "Alamat Email", - "threemaSenderIdentity": "Gateway-ID", - "threemaApiAuthenticationSecret": "Gateway-ID Secret", - "smspartnerPhoneNumber": "Nomor telepon", - "smspartnerSenderName": "Nama Pengirim SMS", - "Mentioning": "Menyebut", - "Don't mention people": "Jangan menyebut orang", - "bitrix24SupportUserID": "Masukkan ID pengguna Anda di Bitrix24. Anda dapat mengetahui ID dari tautan dengan membuka profil pengguna.", - "Bitrix24 Webhook URL": "Bitrix24 Webhook URL", - "wayToGetBitrix24Webhook": "Anda dapat membuat webhook dengan mengikuti langkah-langkah di {0}", - "receiverSevenIO": "Menerima nomor", - "receiverInfoSevenIO": "Jika nomor penerima tidak berlokasi di Jerman, Anda harus menambahkan kode negara di depan nomor tersebut (misalnya untuk kode negara 1 dari AS gunakan 117612121212, bukan 017612121212)", - "Host URL": "Host URL", - "senderSevenIO": "Mengirim nomor atau nama", - "apiKeysDisabledMsg": "Kunci API dinonaktifkan karena autentikasi dinonaktifkan.", - "forumPostName": "Nama postingan forum", - "threadForumPostID": "Thread / ID postingan Forum", - "e.g. {discordThreadID}": "misalnya {discordThreadID}", - "Select message type": "Pilih jenis pesan", - "Send to channel": "Kirim ke saluran", - "Create new forum post": "Buat postingan forum baru", - "postToExistingThread": "Posting ke thread/postingan forum yang ada", - "whatHappensAtForumPost": "Buat postingan forum baru. Ini TIDAK mempublikasikan pesan di postingan yang sudah ada. Untuk mempublikasikan di postingan yang sudah ada gunakan '{option}'", - "smspartnerApiurl": "Anda dapat menemukan kunci API di dasbor Anda di {0}", - "smspartnerPhoneNumberHelptext": "Nomor harus dalam format internasional {0}, {1}. Beberapa angka harus dipisahkan dengan {2}", - "smspartnerSenderNameInfo": "Harus di antara 3..=11 karakter biasa", - "wayToGetSevenIOApiKey": "Kunjungi dasbor di bawah app.seven.io > pengembang > api key > tombol yang berwarna hijau", - "wayToGetThreemaGateway": "Anda dapat mendaftar ke Threema Gateway {0}.", - "threemaSenderIdentityFormat": "8 karakter, biasanya diawali dengan *", - "threemaBasicModeInfo": "Catatan: Integrasi ini menggunakan Threema Gateway dalam mode dasar (enkripsi berbasis server). Detail lebih lanjut dapat ditemukan {0}.", - "wayToGetDiscordThreadId": "Mendapatkan id postingan thread/forum mirip dengan mendapatkan id saluran. Baca selengkapnya tentang cara mendapatkan ID {0}", - "Mention group": "Sebutkan {grup}", - "Refresh Interval Description": "Laman status akan melakukan penyegaran situs secara penuh setiap {0} detik", - "Refresh Interval": "Interval muat ulang", - "apiKeySevenIO": "Kunci API SevenIO", - "locally configured mail transfer agent": "transfer email agent yang dikonfigurasi secara lokal", - "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Masukkan nama host server yang ingin Anda sambungkan atau {localhost} jika Anda ingin menggunakan {local_mta}", - "ignoreTLSErrorGeneral": "Abaikan kesalahan TLS/SSL untuk koneksi", - "jsonQueryDescription": "Mengurai dan mengekstrak data spesifik dari respons JSON server menggunakan query JSON atau menggunakan “$” untuk respons mentah, jika tidak menginginkan JSON. Hasilnya kemudian dibandingkan dengan nilai yang diharapkan, sebagai string. Lihat {0} untuk dokumentasi dan gunakan {1} untuk bereksperimen dengan query.", - "now": "sekarang", - "time ago": "{0} yang lalu", - "-year": "-tahun", - "Json Query Expression": "Ekspresi Kueri Json", - "and": "dan", - "cacheBusterParam": "Tambahkan parameter {0}", - "cacheBusterParamDescription": "Parameter yang dihasilkan secara acak untuk melewati cache.", - "Community String": "Community String", - "snmpCommunityStringHelptext": "String ini berfungsi sebagai kata sandi untuk autentikasi dan mengontrol akses ke perangkat SNMP. Cocokkan dengan konfigurasi perangkat SNMP Anda.", - "OID (Object Identifier)": "OID (Object Identifier)", - "snmpOIDHelptext": "Masukkan OID untuk sensor atau status yang ingin Anda pantau. Gunakan alat manajemen jaringan seperti browser MIB atau perangkat lunak SNMP jika Anda tidak yakin tentang OID.", - "signl4Docs": "Anda dapat menemukan informasi selengkapnya tentang cara mengonfigurasi SIGNL4 dan cara mendapatkan URL webhook SIGNL4 di {0}.", - "greater than or equal to": "lebih dari atau sama dengan", - "wayToGetOnesenderUrlandToken": "Anda bisa mendapatkan URL dan Token dengan mengunjungi situs Onesender. Informasi lebih lanjut {0}", - "Condition": "Kondisi", - "SNMP Version": "Versi SNMP", - "Please enter a valid OID.": "Silakan masukkan OID yang tepat.", - "Host Onesender": "Host Onesender", - "Token Onesender": "Token Onesender", - "Recipient Type": "Tipe Penerima", - "Private Number": "Nomor Pribadi", - "privateOnesenderDesc": "Pastikan nomor telepon valid. Untuk mengirim pesan ke nomor telepon pribadi, contoh: 628123456789", - "Authorization Header": "Authorization Header", - "Form Data Body": "Form Data Body", - "OAuth Token URL": "OAuth Token URL", - "Client ID": "ID Klien", - "Client Secret": "Client Secret", - "OAuth Scope": "OAuth Scope", - "Optional: Space separated list of scopes": "Opsional: Daftar cakupan yang dipisahkan spasi", - "Go back to home page.": "Kembali ke halaman beranda.", - "No tags found.": "Tidak ada tag yang ditemukan.", - "Lost connection to the socket server.": "Kehilangan koneksi ke server soket.", - "Cannot connect to the socket server.": "Tidak dapat terhubung ke server soket.", - "SIGNL4": "SIGNL4", - "SIGNL4 Webhook URL": "SIGNL4 Webhook URL", - "Conditions": "Kondisi", - "conditionAdd": "Tambahkan Kondisi", - "conditionDelete": "Menghapus Kondisi", - "conditionAddGroup": "Tambahkan Grup", - "conditionDeleteGroup": "Menghapus Grup", - "conditionValuePlaceholder": "Nilai", - "equals": "sama dengan", - "not equals": "tidak sama dengan", - "contains": "berisi", - "not contains": "tidak berisi", - "starts with": "dimulai dengan", - "not starts with": "tidak dimulai dengan", - "ends with": "diakhiri dengan", - "not ends with": "tidak diakhiri dengan", - "less than": "kurang dari", - "greater than": "lebih dari", - "less than or equal to": "kurang dari atau sama dengan", - "record": "rekaman", - "groupOnesenderDesc": "Pastikan GroupIDnya valid. Untuk mengirim pesan ke Grup, misal: 628123456789-342345", - "Group ID": "ID Grup", - "Add Remote Browser": "Tambahkan Remote Browser", - "New Group": "Grup Baru", - "Group Name": "Nama Grup", - "OAuth2: Client Credentials": "OAuth2: Kredensial Klien", - "Authentication Method": "Metode Autentikasi", - "shrinkDatabaseDescriptionSqlite": "Memicu pangkalan data {vacuum} untuk SQLite. {auto_vacuum} sudah diaktifkan, tetapi tidak mendefragmentasi pangkalan data atau mengemas ulang halaman individual dari pangkalan data seperti yang dilakukan oleh perintah {vacuum}." -} +{ + "languageName": "Bahasa Indonesia (Indonesian)", + "checkEverySecond": "Cek Setiap {0} detik", + "retryCheckEverySecond": "Coba lagi setiap {0} detik", + "resendEveryXTimes": "Kirim ulang setiap {0} kali", + "resendDisabled": "Kirim ulang dinonaktifkan", + "retriesDescription": "Percobaan ulang maksimum sebelum layanan dinyatakan tidak aktif dan notifikasi dikirim", + "ignoreTLSError": "Abaikan kesalahan TLS/SSL untuk situs web HTTPS", + "upsideDownModeDescription": "Balikkan statusnya. Jika layanan dapat dijangkau, TIDAK AKTIF.", + "maxRedirectDescription": "Jumlah maksimum pengalihan untuk diikuti. Setel ke 0 untuk menonaktifkan pengalihan.", + "acceptedStatusCodesDescription": "Pilih kode status yang dianggap sebagai tanggapan yang berhasil.", + "passwordNotMatchMsg": "Kata sandi kedua tidak cocok.", + "notificationDescription": "Harap atur notifikasi ke monitor agar berfungsi.", + "keywordDescription": "Kata kunci pencarian dalam HTML biasa atau respons JSON. Pencarian bersifat peka terhadap huruf besar/kecil.", + "pauseDashboardHome": "Dijeda", + "deleteMonitorMsg": "Apakah Anda mau menghapus monitor ini?", + "deleteNotificationMsg": "Apakah Anda mau menghapus notifikasi untuk semua monitor?", + "dnsPortDescription": "Port server DNS. Bawaan menggunakan 53. Anda dapat mengubah port kapan saja.", + "resolverserverDescription": "Cloudflare adalah server bawaan, Anda dapat mengubah server resolver kapan saja.", + "rrtypeDescription": "Pilih RR Type yang mau Anda monitor", + "pauseMonitorMsg": "Apakah Anda yakin mau menjeda?", + "enableDefaultNotificationDescription": "Untuk setiap monitor baru, notifikasi ini akan diaktifkan secara bawaan. Anda masih dapat menonaktifkan notifikasi secara terpisah untuk setiap monitor.", + "clearEventsMsg": "Apakah Anda yakin mau menghapus semua event di monitor ini?", + "clearHeartbeatsMsg": "Apakah Anda yakin mau menghapus semua heartbeats di monitor ini?", + "confirmClearStatisticsMsg": "Apakah Anda yakin mau menghapus semua statistik?", + "importHandleDescription": "Pilih 'Lewati yang ada' jika Anda ingin melewati setiap monitor atau notifikasi dengan nama yang sama. 'Timpa' akan menghapus setiap monitor dan notifikasi yang ada.", + "confirmImportMsg": "Apakah Anda yakin untuk mengimpor cadangan? Pastikan Anda telah memilih opsi impor yang tepat.", + "twoFAVerifyLabel": "Masukkan token Anda untuk memverifikasi 2FA:", + "tokenValidSettingsMsg": "Token benar! Anda sekarang dapat menyimpan pengaturan 2FA.", + "confirmEnableTwoFAMsg": "Apakah Anda yakin ingin mengaktifkan 2FA?", + "confirmDisableTwoFAMsg": "Apakah Anda yakin ingin menonaktifkan 2FA?", + "Settings": "Pengaturan", + "Dashboard": "Dasbor", + "New Update": "Pembaruan Baru", + "Language": "Bahasa", + "Appearance": "Tampilan", + "Theme": "Tema", + "General": "Umum", + "Primary Base URL": "URL Dasar Utama", + "Version": "Versi", + "Check Update On GitHub": "Cek Pembaruan di GitHub", + "List": "Daftar", + "Add": "Tambah", + "Add New Monitor": "Tambah Monitor Baru", + "Quick Stats": "Statistik", + "Up": "Aktif", + "Down": "Tidak Aktif", + "Pending": "Tertunda", + "Unknown": "Tidak diketahui", + "Pause": "Dijeda", + "Name": "Nama", + "Status": "Status", + "DateTime": "Tanggal Waktu", + "Message": "Pesan", + "No important events": "Tidak ada peristiwa penting", + "Resume": "Lanjut", + "Edit": "Ubah", + "Delete": "Hapus", + "Current": "Saat ini", + "Uptime": "Waktu aktif", + "Cert Exp.": "Sertifikat Kedaluwarsa.", + "day": "hari | hari-hari", + "-day": "-hari", + "hour": "Jam", + "-hour": "-Jam", + "Response": "Tanggapan", + "Ping": "Ping", + "Monitor Type": "Tipe Monitor", + "Keyword": "Kata Kunci", + "Friendly Name": "Nama yang Ramah", + "URL": "URL", + "Hostname": "Nama Host", + "Port": "Port", + "Heartbeat Interval": "Jeda Waktu Heartbeat", + "Retries": "Coba lagi", + "Heartbeat Retry Interval": "Jeda Pengulangan Heartbeat", + "Resend Notification if Down X times consecutively": "Kirim Ulang Notifikasi jika Tidak Aktif X kali", + "Advanced": "Tingkat Lanjut", + "Upside Down Mode": "Mode Terbalik", + "Max. Redirects": "Maksimal Pengalihan", + "Accepted Status Codes": "Kode Status yang Diterima", + "Push URL": "Push URL", + "needPushEvery": "Anda harus memanggil URL berikut setiap {0} detik..", + "pushOptionalParams": "Parameter tambahan: {0}", + "Save": "Simpan", + "Notifications": "Notifikasi", + "Not available, please setup.": "Tidak tersedia, silakan atur.", + "Setup Notification": "Setelan Notifikasi", + "Light": "Terang", + "Dark": "Gelap", + "Auto": "Otomatis", + "Theme - Heartbeat Bar": "Tema - Heartbeat Bar", + "Normal": "Normal", + "Bottom": "Bawah", + "None": "Tidak ada", + "Timezone": "Zona Waktu", + "Search Engine Visibility": "Visibilitas Mesin Pencari", + "Allow indexing": "Mengizinkan untuk diindex", + "Discourage search engines from indexing site": "Mencegah mesin pencari untuk mengindex situs", + "Change Password": "Ganti Sandi", + "Current Password": "Sandi Lama", + "New Password": "Sandi Baru", + "Repeat New Password": "Ulangi Sandi Baru", + "Update Password": "Perbarui Kata Sandi", + "Disable Auth": "Matikan Autentikasi", + "Enable Auth": "Aktifkan Autentikasi", + "disableauth.message1": "Apakah Anda yakin ingin {disableAuth}?", + "disable authentication": "menonaktifkan autentikasi", + "disableauth.message2": "Ini untuk {intendThirdPartyAuth} diletakkan di depan Uptime Kuma, misalnya akses Cloudflare.", + "where you intend to implement third-party authentication": "mereka yang memiliki autentikasi pihak ketiga", + "Please use this option carefully!": "Gunakan pilihan ini dengan hati-hati!", + "Logout": "Keluar", + "Leave": "Pergi", + "I understand, please disable": "Saya mengerti, silakan dinonaktifkan", + "Confirm": "Konfirmasi", + "Yes": "Ya", + "No": "Tidak", + "Username": "Nama Pengguna", + "Password": "Sandi", + "Remember me": "Ingat saya", + "Login": "Masuk", + "No Monitors, please": "Tolong, jangan ada Monitor", + "add one": "tambahkan satu", + "Notification Type": "Tipe Notifikasi", + "Email": "Surel", + "Test": "Tes", + "Certificate Info": "Info Sertifikasi", + "Resolver Server": "Server Penjawab", + "Resource Record Type": "Jenis Rekam Sumber Daya", + "Last Result": "Hasil Terakhir", + "Create your admin account": "Buat akun admin Anda", + "Repeat Password": "Ulangi Sandi", + "Import Backup": "Impor Cadangan", + "Export Backup": "Ekspor Cadangan", + "Export": "Ekspor", + "Import": "Impor", + "respTime": "Tanggapan. Waktu (milidetik)", + "notAvailableShort": "N/A", + "Default enabled": "Bawaan diaktifkan", + "Apply on all existing monitors": "Terapkan pada semua monitor yang ada", + "Create": "Buat", + "Clear Data": "Bersihkan Data", + "Events": "Peristiwa", + "Heartbeats": "Heartbeat", + "Auto Get": "Ambil Otomatis", + "backupDescription": "Anda dapat mencadangkan semua monitor dan semua notifikasi ke dalam berkas JSON.", + "backupDescription2": "Catatan: Data sejarah dan peristiwa tidak disertakan.", + "backupDescription3": "Data sensitif seperti notifikasi token disertakan dalam berkas ekspor, harap simpan dengan hati-hati.", + "alertNoFile": "Silakan pilih berkas untuk diimpor.", + "alertWrongFileType": "Silakan pilih berkas JSON.", + "Clear all statistics": "Hapus semua statistik", + "Skip existing": "Lewati yang ada", + "Overwrite": "Timpa", + "Options": "Opsi", + "Keep both": "Simpan keduanya", + "Verify Token": "Verifikasi Token", + "Setup 2FA": "Pengaturan 2FA", + "Enable 2FA": "Aktifkan 2FA", + "Disable 2FA": "Nonaktifkan 2FA", + "2FA Settings": "Pengaturan 2FA", + "Two Factor Authentication": "Autentikasi Dua Faktor", + "Active": "Aktif", + "Inactive": "Tidak Aktif", + "Token": "Token", + "Show URI": "Lihat URI", + "Tags": "Tanda", + "Add New below or Select...": "Tambahkan Baru di bawah atau Pilih…", + "Tag with this name already exist.": "Tanda dengan nama ini sudah ada.", + "Tag with this value already exist.": "Tanda dengan nilai ini sudah ada.", + "color": "warna", + "value (optional)": "nilai (tidak harus diisi)", + "Gray": "Abu-abu", + "Red": "Merah", + "Orange": "Jingga", + "Green": "Hijau", + "Blue": "Biru", + "Indigo": "Biru Tua", + "Purple": "Ungu", + "Pink": "Merah Muda", + "Search...": "Cari…", + "Avg. Ping": "Rata-rata Ping", + "Avg. Response": "Rata-rata Tanggapan", + "Entry Page": "Beranda", + "statusPageNothing": "Tidak ada di sini, silakan tambahkan grup atau monitor.", + "No Services": "Tidak ada Layanan", + "All Systems Operational": "Semua Sistem Berfungsi", + "Partially Degraded Service": "Layanan Terdegradasi Sebagian", + "Degraded Service": "Layanan Terdegradasi", + "Add Group": "Tambah Grup", + "Add a monitor": "Tambah monitor", + "Edit Status Page": "Edit Halaman Status", + "Go to Dashboard": "Pergi ke Dasbor", + "Status Page": "Halaman Status", + "Status Pages": "Halaman Status", + "defaultNotificationName": "{notification} saya Peringatan ({number})", + "here": "di sini", + "Required": "Wajib", + "telegram": "Telegram", + "Bot Token": "Token Bot", + "wayToGetTelegramToken": "Anda dapat mendapatkan token dari {0}.", + "Chat ID": "Chat ID", + "supportTelegramChatID": "Mendukung Obrolan Langsung / Grup / Channel Chat ID", + "wayToGetTelegramChatID": "Anda bisa mendapatkan chat id Anda dengan mengirim pesan ke bot dan pergi ke url ini untuk melihat chat_id:", + "YOUR BOT TOKEN HERE": "BOT TOKEN ANDA DI SINI", + "chatIDNotFound": "Chat ID tidak ditemukan, tolong kirim pesan ke bot ini dulu", + "webhook": "Webhook", + "Post URL": "Post URL", + "Content Type": "Tipe konten", + "webhookJsonDesc": "{0} bagus untuk peladen http modern seperti express.js", + "webhookFormDataDesc": "{multipart} bagus untuk PHP, Anda hanya perlu mengurai json dengan {decodeFunction}", + "smtp": "Surel (SMTP)", + "secureOptionNone": "None / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Abaikan Kesalahan TLS", + "From Email": "Dari Email", + "emailCustomSubject": "Subjek", + "To Email": "Ke Email", + "smtpCC": "CC", + "smtpBCC": "BCC", + "discord": "Discord", + "Discord Webhook URL": "URL Webhook Discord", + "wayToGetDiscordURL": "Anda bisa mendapatkan ini dengan pergi ke Server Pengaturan -> Integrasi -> Lihat Webhooks -> Buat Webhook", + "Bot Display Name": "Nama Bot", + "Prefix Custom Message": "Awalan Pesan", + "Hello @everyone is...": "Halo {'@'}everyone is…", + "teams": "Microsoft Teams", + "Webhook URL": "URL Webhook", + "wayToGetTeamsURL": "Anda dapat mempelajari cara membuat url webhook {0}.", + "signal": "Sinyal", + "Number": "Nomer", + "Recipients": "Penerima", + "needSignalAPI": "Anda harus memiliki klien sinyal dengan REST API.", + "wayToCheckSignalURL": "Anda dapat memeriksa url ini untuk melihat cara menyiapkannya:", + "signalImportant": "PENTING: Anda tidak dapat mencampur grup dan nomor di penerima!", + "gotify": "Gotify", + "Application Token": "Token Aplikasi", + "Server URL": "URL Server", + "Priority": "Prioritas", + "slack": "Slack", + "Icon Emoji": "Ikon Emoji", + "Channel Name": "Nama Saluran", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Info lain tentang webhook: {0}", + "aboutChannelName": "Masukan nama saluran di {0} Kolom Nama Saluran jika Anda ingin melewati saluran webhook. Contoh: #saluran-lain", + "aboutKumaURL": "Jika Anda membiarkan bidang URL Uptime Kuma kosong, itu akan menjadi bawaan ke halaman Proyek Github.", + "emojiCheatSheet": "Lembar contekan emoji: {0}", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "Push by Techulus", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Mendukung 50+ layanan notifikasi)", + "GoogleChat": "Google Chat (hanya Google Workspace)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "Kunci pengguna", + "Device": "Perangkat", + "Message Title": "Judul Pesan", + "Notification Sound": "Suara Nofifikasi", + "More info on:": "Info lebih lanjut tentang: {0}", + "pushoverDesc1": "Prioritas darurat (2) memiliki batas waktu bawaan 30 detik antara percobaan ulang dan akan kadaluwarsa setelah 1 jam.", + "pushoverDesc2": "Jika Anda ingin mengirim pemberitahuan ke perangkat yang berbeda, isi kolom Perangkat.", + "SMS Type": "Tipe SMS", + "octopushTypePremium": "Premium (Cepat - direkomendasikan untuk mengingatkan)", + "octopushTypeLowCost": "Low Cost (Lambat, terkadang diblokir oleh operator)", + "checkPrice": "Cek harga {0}:", + "apiCredentials": "Kredensial API", + "octopushLegacyHint": "Apakah Anda menggunakan Octopush versi lama (2011-2020) atau versi baru?", + "Check octopush prices": "Cek harga octopush {0}.", + "octopushPhoneNumber": "Nomer Telpon/HP (format internasional, contoh : +33612345678) ", + "octopushSMSSender": "Nama Pengirim SMS : 3-11 karakter alfanumerik dan spasi (a-zA-Z0-9)", + "LunaSea Device ID": "ID Perangkat LunaSea", + "Apprise URL": "Apprise URL", + "Example:": "Contoh: {0}", + "Read more:": "Baca lebih lanjut: {0}", + "Status:": "Status: {0}", + "Read more": "Baca lebih lanjut", + "appriseInstalled": "Apprise diinstall.", + "appriseNotInstalled": "Apprise tidak diinstall. {0}", + "Access Token": "Token Akses", + "Channel access token": "Token akses saluran", + "Line Developers Console": "Konsol Pengembang Line", + "lineDevConsoleTo": "Konsol Pengembang Line - {0}", + "Basic Settings": "Pengaturan Dasar", + "User ID": "ID User", + "Messaging API": "API Messaging", + "wayToGetLineChannelToken": "Pertama akses {0}, buat penyedia dan saluran (Messaging API), lalu Anda bisa mendapatkan token akses saluran dan id pengguna dari item menu yang disebutkan di atas.", + "Icon URL": "Icon URL", + "aboutIconURL": "Anda dapat memberikan tautan ke gambar di \"Icon URL\" untuk mengganti gambar profil bawaan. Tidak akan digunakan jika Ikon Emoji diset.", + "aboutMattermostChannelName": "Anda dapat mengganti saluran bawaan tujuan posting webhook dengan memasukkan nama saluran ke dalam Kolom \"Channel Name\". Ini perlu diaktifkan di pengaturan webhook Mattermost. contoh: #other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - murah tapi lambat dan sering kelebihan beban. Terbatas hanya untuk penerima Polandia.", + "promosmsTypeFlash": "SMS FLASH - Pesan akan otomatis muncul di perangkat penerima. Terbatas hanya untuk penerima Polandia.", + "promosmsTypeFull": "SMS FULL - Tingkat Premium SMS, Anda dapat menggunakan Nama Pengirim Anda (Nama Anda harus didaftarkan terlebih dahulu). Dapat diandalkan untuk peringatan.", + "promosmsTypeSpeed": "SMS SPEED - Prioritas tertinggi dalam sistem. Sangat cepat dan dapat diandalkan tetapi mahal (sekitar dua kali lipat dari harga SMS FULL).", + "promosmsPhoneNumber": "Nomor telepon (untuk penerima Polandia Anda dapat melewati kode area)", + "promosmsSMSSender": "Nama Pengirim SMS : Nama pra-registrasi atau salah satu bawaan: InfoSMS, Info SMS, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookUrl", + "matrixHomeserverURL": "Homeserver URL (dengan http(s):// dan port tambahan)", + "Internal Room Id": "ID Ruang Internal", + "matrixDesc1": "Kamu dapat menemukan Internal Room ID dengan melihat di bagian konfigurasi ruang di Matrix. Seharusnya berbentuk seperti !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Sangat direkomendasikan kepada Anda untuk membuat akun baru dan jangan menggunakan token atas akun terkini yang memiliki token akses secara penuh terhadap akun dan seluruh ruang yang terdaftar. Alih - alih, buat akun baru dan undang akun tsb ke ruang tempat anda ingin menerima notifikasi. Untuk mendapatkan token akses anda dapat menjalankan {0}", + "Method": "Metode", + "Body": "Body", + "Headers": "Headers", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "Request Headers memiliki format JSON yang tidak sesuai: ", + "BodyInvalidFormat": "Request Body memiliki format JSON yang tidak sesuai: ", + "Monitor History": "Riyawat Monitor", + "clearDataOlderThan": "Simpan data riwayat monitoring selama {0} hari.", + "PasswordsDoNotMatch": "Password tidak sama.", + "records": "catatan", + "One record": "Satu catatan", + "steamApiKeyDescription": "Untuk monitoring Steam Game Server Anda membutuhkan kunci Steam Web-API. Anda dapat mendaftarkan Kunci API Anda melalui: ", + "Current User": "Pengguna Saat Ini", + "topic": "topik", + "topicExplanation": "MQTT topik untuk dimonitor", + "successMessage": "Pesan Berhasil", + "successMessageExplanation": "Pesan MQTT yang akan dianggap berhasil", + "recent": "Baru saja", + "Done": "Selesai", + "Info": "Info", + "Security": "Keamanan", + "Steam API Key": "Kunci API Steam", + "Shrink Database": "Kecilkan Database", + "Pick a RR-Type...": "Pilih RR-Type…", + "Pick Accepted Status Codes...": "Pilih Kode Status yang Diterima…", + "Default": "Default", + "HTTP Options": "Opsi HTTP", + "Create Incident": "Buat Incident", + "Title": "Judul", + "Content": "Konten", + "Style": "Gaya", + "info": "info", + "warning": "peringatan", + "danger": "bahaya", + "error": "kesalahan", + "critical": "kritis", + "primary": "utama", + "light": "terang", + "dark": "gelap", + "Post": "Post", + "Please input title and content": "Masukkan judul dan konten", + "Created": "Dibuat", + "Last Updated": "Terakhir Diperbarui", + "Unpin": "Lepaskan Semat", + "Switch to Light Theme": "Ubah ke Tema Terang", + "Switch to Dark Theme": "Ubah ke Tema Gelap", + "Show Tags": "Tampilkan Tags", + "Hide Tags": "Sembunyikan Tags", + "Description": "Deskripsi", + "No monitors available.": "Tidak ada monitor yang tersedia.", + "Add one": "Tambahkan", + "No Monitors": "Tidak ada monitor", + "Untitled Group": "Group Tanpa Judul", + "Services": "Layanan", + "Discard": "Buang", + "Cancel": "Batal", + "Powered by": "Dipersembahkan oleh", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "Nama Pengguna API ( termamsuk awalan webapi_ )", + "serwersmsAPIPassword": "Kata Sandi API", + "serwersmsPhoneNumber": "Nomor Telepon", + "serwersmsSenderName": "Nama Pengirim SMS (didaftarkan melalui portal pelanggan)", + "stackfield": "Stackfield", + "Customize": "Kustomisasi", + "Custom Footer": "Tambahan Footer", + "Custom CSS": "Tambahan CSS", + "smtpDkimSettings": "Pengaturan DKIM", + "smtpDkimDesc": "Silakan merujuk ke Nodemailer DKIM {0} untuk penggunaan.", + "documentation": "dokumentasi", + "smtpDkimDomain": "Nama Domain", + "smtpDkimKeySelector": "Selektor Kunci", + "smtpDkimPrivateKey": "Kunci Pribadi", + "smtpDkimHashAlgo": "Algoritma Hash (Opsional)", + "smtpDkimheaderFieldNames": "Header Keys untuk ditambahkan (Optional)", + "smtpDkimskipFields": "Header Keys not untuk ditambahkan (Optional)", + "wayToGetPagerDutyKey": "Anda dapat menambahkan melalui Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Lalu Anda dapat menjadi dengan kata kunci \"Events API V2\". Informasi tambahan {0}", + "Integration Key": "Kunci Integrasi", + "Integration URL": "URL Integrasi", + "Auto resolve or acknowledged": "Penyelesaian otomatis atau diakui", + "do nothing": "tidak melakukan apapun", + "auto acknowledged": "otomatis diakui", + "auto resolve": "otomatis terselesaikan", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpoint", + "alertaEnvironment": "Lingkungan", + "alertaApiKey": "Kunci API", + "alertaAlertState": "Status Siaga", + "alertaRecoverState": "Status Pemulihan", + "deleteStatusPageMsg": "Apakah Anda yakin untuk menghapus halaman status berikut?", + "Proxies": "Proxy", + "default": "Bawaan", + "enabled": "Diaktifkan", + "setAsDefault": "Tetapkan sebagai bawaan", + "deleteProxyMsg": "Apakah Anda yakin ingin menghapus proxy berikut untuk seluruh monitor?", + "proxyDescription": "Proxy harus ditambahkan ke monitor agar berfungsi.", + "enableProxyDescription": "Proxy berikut tidak akan berdampak ke monitor hingga diaktifkan. Anda dapat mengontrol menonaktifkan sementara proxy dari semua monitor dengan status aktivasi.", + "setAsDefaultProxyDescription": "Proxy berikut akan diaktifkan sebagai bawaan untuk monitor baru. Anda masih dapat menonaktifkan proxy secara terpisah untuk setiap monitor.", + "Certificate Chain": "Rangkaian Sertifikat", + "Valid": "Berlaku", + "Invalid": "Tidak Valid", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Secret", + "PhoneNumbers": "Nomor Telepon", + "TemplateCode": "Kode Template", + "SignName": "Nama Tanda", + "Sms template must contain parameters: ": "Template SMS harus berisi parameter: ", + "Bark Endpoint": "Bark Endpoint", + "Bark Group": "Grup Bark", + "Bark Sound": "Suara Bark", + "WebHookUrl": "WebHookUrl", + "SecretKey": "SecretKey", + "For safety, must use secret key": "Untuk keamaan Anda harus menggunakan kunci rahasia", + "Device Token": "Token Perangkat", + "Platform": "Platform", + "Huawei": "Huawei", + "High": "Tinggi", + "Retry": "Ulang", + "Topic": "Topik", + "WeCom Bot Key": "Kunci WeCom Bot", + "Setup Proxy": "Siapkan Proxy", + "Proxy Protocol": "Protokol Proxy", + "Proxy Server": "Server Proxy", + "Proxy server has authentication": "Server Proxy memiliki autentikasi", + "User": "Pengguna", + "Installed": "Terpasang", + "Not installed": "Tidak terpasang", + "Running": "Berjalan", + "Not running": "Tidak berjalan", + "Remove Token": "Hapus Token", + "Start": "Mulai", + "Stop": "Berhenti", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Tambahkan Halaman Status Baru", + "Slug": "Slug", + "Accept characters:": "Terima karakter:", + "startOrEndWithOnly": "Mulai atau akhiri hanya dengan {0}", + "No consecutive dashes": "Tanda hubung tidak berurutan", + "Next": "Selanjutnya", + "The slug is already taken. Please choose another slug.": "Slug telah digunakan. Silakan pilih slug lain.", + "No Proxy": "Tidak ada Proxy", + "Authentication": "Autentikasi", + "HTTP Basic Auth": "Autentikasi Dasar HTTP", + "New Status Page": "Halaman Status Baru", + "Page Not Found": "Halaman Tidak Ditemukan", + "Reverse Proxy": "Proxy Terbalik", + "Backup": "Cadangan", + "About": "Tentang", + "wayToGetCloudflaredURL": "(Unduh cloudflared dari {0})", + "cloudflareWebsite": "Situs Cloudflare", + "Message:": "Pesan:", + "Don't know how to get the token? Please read the guide:": "Tidak tahu cara mendapatkan token? Silakan baca panduannya:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Koneksi saat ini mungkin hilang jika Anda saat ini terhubung melalui Cloudflare Tunel. Apakah Anda yakin ingin menghentikannya? Ketik kata sandi Anda saat ini untuk mengonfirmasinya.", + "HTTP Headers": "Header HTTP", + "Trust Proxy": "Proxy Terpercaya", + "Other Software": "Perangkat Lunak lainnya", + "For example: nginx, Apache and Traefik.": "Sebagai contoh: nginx, Apache and Traefik.", + "Please read": "Harap dibaca", + "Subject:": "Subjek:", + "Valid To:": "Berlaku Untuk:", + "Days Remaining:": "Hari Tersisa:", + "Issuer:": "Penerbit:", + "Fingerprint:": "Sidik jari:", + "No status pages": "Tidak ada halaman status", + "Domain Name Expiry Notification": "Pemberitahuan Kedaluwarsa Nama Domain", + "Proxy": "Proxy", + "Date Created": "Tanggal Dibuat", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "Alamat HTTP OneBot", + "onebotMessageType": "Jenis Pesan OneBot", + "onebotGroupMessage": "Grup", + "onebotPrivateMessage": "Pribadi", + "onebotUserOrGroupId": "Grup/Pengguna ID", + "onebotSafetyTips": "Untuk keamanan, harus mengatur token akses", + "PushDeer Key": "Kunci PushDeer", + "Footer Text": "Tulisan Footer", + "Show Powered By": "Tampilkan Dipersembahkan oleh", + "Domain Names": "Nama Domain", + "signedInDisp": "Masuk sebagai {0}", + "signedInDispDisabled": "Autentikasi dinonaktifkan.", + "RadiusSecret": "Radius Secret", + "RadiusSecretDescription": "Shared Secret antara klien dan server", + "RadiusCalledStationId": "Called Station Id", + "RadiusCalledStationIdDescription": "Pengenal perangkat yang dipanggil", + "RadiusCallingStationId": "Memanggil Station Id", + "RadiusCallingStationIdDescription": "Pengenal perangkat panggilan", + "Certificate Expiry Notification": "Pemberitahuan Kedaluwarsa Sertifikat", + "API Username": "Nama Pengguna API", + "API Key": "Kunci API", + "Recipient Number": "Nomor Penerima", + "From Name/Number": "Dari Nama/Nomor", + "Leave blank to use a shared sender number.": "Biarkan kosong untuk menggunakan nomor pengirim bersama.", + "Octopush API Version": "Versi API Octopush", + "Legacy Octopush-DM": "Legacy Octopush-DM", + "endpoint": "endpoint", + "octopushAPIKey": "\"API key\" dari kredensial HTTP API di panel kontrol", + "octopushLogin": "\"Login\" dari kredensial HTTP API di panel kontrol", + "promosmsLogin": "Nama Masuk API", + "promosmsPassword": "Kata Sandi API", + "pushoversounds pushover": "Pushover (bawaan)", + "pushoversounds bike": "Sepeda", + "pushoversounds bugle": "Terompet", + "pushoversounds cashregister": "Mesin Uang", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Kosmik", + "pushoversounds falling": "Reruntuhan", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Masuk", + "pushoversounds intermission": "Jeda", + "pushoversounds magic": "Magic", + "pushoversounds mechanical": "Mekanik", + "pushoversounds pianobar": "Bilah Piano", + "pushoversounds siren": "Sirene", + "pushoversounds spacealarm": "Luar Angkasa", + "pushoversounds tugboat": "Kapal Tunda", + "pushoversounds alien": "Alien Alarm (panjang)", + "pushoversounds climb": "Mendaki (long)", + "pushoversounds persistent": "Terus menerus (panjang)", + "pushoversounds echo": "Pushover Echo (panjang)", + "pushoversounds updown": "Up Down (panjang)", + "pushoversounds vibrate": "Hanya bergetar", + "pushoversounds none": "Tidak ada (hening)", + "pushyAPIKey": "Kunci Secret API", + "pushyToken": "Token Perangkat", + "Show update if available": "Tampilkan pembaruan jika tersedia", + "Also check beta release": "Periksa juga rilis beta", + "Using a Reverse Proxy?": "Menggunakan Proxy Terbalik?", + "Check how to config it for WebSocket": "Periksa cara mengonfigurasinya untuk A WebSocket", + "Steam Game Server": "Server Game Steam", + "Most likely causes:": "Kemungkinan besar penyebabnya:", + "The resource is no longer available.": "Sumber daya tidak lagi tersedia.", + "There might be a typing error in the address.": "Mungkin ada kesalahan pengetikan di alamat.", + "What you can try:": "Apa yang dapat kamu coba:", + "Retype the address.": "Ketik ulang alamat.", + "Go back to the previous page.": "Kembali ke halaman sebelumnya.", + "Coming Soon": "Segera", + "wayToGetClickSendSMSToken": "Anda bisa mendapatkan Nama Pengguna API dan Kunci API dari {0} .", + "Connection String": "String Koneksi", + "Query": "Query", + "settingsCertificateExpiry": "Sertifikat TLS Kadaluarsa", + "certificationExpiryDescription": "Monitor HTTPS memicu pemberitahuan saat sertifikat TLS kedaluwarsa dalam:", + "Setup Docker Host": "Siapkan Host Docker", + "Connection Type": "Jenis Koneksi", + "Docker Daemon": "Docker Daemon", + "deleteDockerHostMsg": "Apakah Anda yakin ingin menghapus host docker berikut untuk semua monitor?", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "Kontainer Docker", + "Container Name / ID": "Nama / ID Container", + "Docker Host": "Host Docker", + "Docker Hosts": "Hosts Docker", + "ntfy Topic": "Topik ntfy", + "Domain": "Domain", + "Workstation": "Workstation", + "disableCloudflaredNoAuthMsg": "Anda berada dalam mode Tanpa Autentikasi, kata sandi tidak diperlukan.", + "trustProxyDescription": "Trust 'X-Forwarded-*' headers. Jika Anda ingin mendapatkan IP klien yang benar dan Uptime Kuma Anda dibalik proxy seperti Nginx or Apache, Anda harus mengaktifkan ini.", + "wayToGetLineNotifyToken": "Anda bisa mendapatkan token akses dari {0}", + "Examples": "Contoh", + "Home Assistant URL": "URL Home Asisten", + "Long-Lived Access Token": "Token Akses Berumur Panjang", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Token Akses Berumur Panjang dapat dibuat dengan mengklik nama profil Anda (kiri bawah) dan menggulir ke bawah lalu klik Buat Token. ", + "Notification Service": "Layanan Pemberitahuan", + "default: notify all devices": "bawaan: notifikasi seluruh perangkat", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Daftar Layanan Pemberitahuan dapat ditemukan di Home Assistant pada \"Developer Tools > Services\" cari \"notification\" lalu cari nama perangkat Anda.", + "Automations can optionally be triggered in Home Assistant:": "Otomatisasi dapat dipicu secara opsional di Home Assistant:", + "Trigger type:": "Tipe Trigger/Pemicu:", + "Event type:": "Tipe event:", + "Event data:": "Data event:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Kemudian pilih tindakan, misalnya alihkan ke tempat dimana lampu RGB berwarna merah.", + "Frontend Version": "Versi Frontend", + "Frontend Version do not match backend version!": "Versi Frontend tidak sama dengan versi backend!", + "Base URL": "URL Dasar", + "goAlertInfo": "GoAlert adalah aplikasi open source untuk penjadwalan panggilan, eskalasi otomatis dan pemberitahuan (seperti SMS atau panggilan suara). Secara otomatis melibatkan orang yang tepat, dengan cara yang benar, dan pada waktu yang tepat! {0}", + "goAlertIntegrationKeyInfo": "Dapatkan kunci integrasi API generik untuk layanan dalam format ini \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" biasanya nilai parameter token dari URL yang disalin.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Tidak digunakan lagi: Karena banyak fitur ditambahkan dan fitur pencadangan ini agak tidak terpelihara, fitur ini tidak dapat menghasilkan atau memulihkan cadangan lengkap.", + "backupRecommend": "Silahkan backup volume atau folder (./data/) secara langsung.", + "Help": "Bantuan", + "Game": "Permainan", + "markdownSupported": "Dukungan sintaks markdown", + "statusMaintenance": "Pemeliharaan", + "Maintenance": "Tidak Ada Pemeliharaan", + "General Monitor Type": "Tipe Monitor Umum", + "Passive Monitor Type": "Tipe Monitor Pasif", + "Specific Monitor Type": "Tipe Monitor Spesifik", + "Monitor": "Monitor", + "Guild ID": "ID Guild", + "twilioAccountSID": "SID akun", + "twilioAuthToken": "Token Autentikasi (API Key)", + "ntfyAuthenticationMethod": "Metode Autentikasi", + "ntfyUsernameAndPassword": "Nama pengguna dan kata sandi", + "Add Another": "Tambah Lainnya", + "Key Added": "Kunci Ditambahkan", + "Google Analytics ID": "ID Google Analytics", + "pagertreeIntegrationUrl": "URL integrasi", + "pagertreeUrgency": "Darurat", + "Home": "Beranda", + "startDateTime": "Tanggal/Waktu Mulai", + "Recurring": "Berulang", + "strategyManual": "Aktif/TidakAktif Secara Manual", + "infiniteRetention": "Setel ke 0 untuk retensi tak terbatas.", + "enableGRPCTls": "Izinkan untuk mengirim permintaan gRPC dengan koneksi TLS", + "grpcMethodDescription": "Nama metode dikonversi ke format camelCase seperti sayHello, check, dll.", + "deleteMaintenanceMsg": "Apakah Anda yakin ingin menghapus pemeliharaan ini?", + "Free Mobile API Key": "Kunci API Seluler Gratis", + "Enable TLS": "Aktifkan TLS", + "Proto Method": "Metode Proto", + "Proto Content": "Konten Proto", + "Economy": "Ekonomi", + "Free Mobile User Identifier": "Pengidentifikasi Pengguna Seluler", + "Proto Service Name": "Nama Layanan Proto", + "SMSManager API Docs": "Dokumen API SMSManager ", + "Expiry date": "Tanggal kadaluarsa", + "No API Keys": "Tidak ada Kunci API", + "Expires": "Berakhir", + "pagertreeCritical": "Penting", + "pagertreeResolve": "Penyelesaian Otomatis", + "lunaseaDeviceID": "ID perangkat", + "lunaseaUserID": "ID Pengguna", + "twilioFromNumber": "Dari Nomor", + "twilioToNumber": "Ke Nomor", + "Badge Generator": "Pembuat Lencana {0}", + "Badge Duration": "Durasi Lencana", + "Badge Label": "Label Lencana", + "Badge Prefix": "Prefiks Lencana", + "Badge Suffix": "Suffix Lencana", + "Badge Label Color": "Warna Label Lencana", + "Badge Color": "Warna Lencana", + "Badge Label Prefix": "Prefiks Label Lencana", + "telegramSendSilently": "Kirim Secara Senyap", + "Invert Keyword": "Balikkan Kata Kunci", + "Pick Affected Monitors...": "Pilih Monitor yang Terkena Dampak…", + "Badge Label Suffix": "Suffix Label Lencana", + "statusPageMaintenanceEndDate": "berakhir", + "Add API Key": "Tambahkan Kunci API", + "apiKey-expired": "Kedaluwarsa", + "apiKey-active": "Aktif", + "apiKey-inactive": "Tidak aktif", + "Monitor Setting": "Pengaturan Pemantauan {0}", + "Show Clickable Link": "Tampilkan Tautan yang Dapat Diklik", + "Badge Type": "Tipe lencana", + "confirmDeleteTagMsg": "Yakin ingin menghapus tag ini? Monitor yang terkait dengan tag ini tidak akan dihapus.", + "Gateway Type": "tipe Gateway", + "Don't expire": "Jangan sampai kadaluarsa", + "apiKeyAddedMsg": "Kunci API Anda telah ditambahkan. Mohon dicatat karena tidak akan ditampilkan lagi.", + "disableAPIKeyMsg": "Yakin ingin menonaktifkan kunci API ini?", + "pagertreeSilent": "Bisu", + "pagertreeLow": "Rendah", + "pagertreeDoNothing": "Jangan Lakukan Apa-apa", + "wayToGetPagerTreeIntegrationURL": "Setelah membuat integrasi Uptime Kuma di PagerTree, salin Endpoint. Lihat detail lengkap {0}", + "lunaseaTarget": "Sasaran", + "Show Clickable Link Description": "Jika dicentang, setiap orang yang memiliki akses ke halaman status ini dapat memiliki akses ke URL monitor.", + "Open Badge Generator": "Buka Pembuat Lencana", + "Cannot connect to the socket server": "Tidak dapat terhubung ke server soket", + "Reconnecting...": "Menghubungkan ulang...", + "deleteAPIKeyMsg": "Apakah Anda yakin ingin menghapus kunci API ini?", + "Generate": "Hasilkan", + "pagertreeMedium": "Sedang", + "pagertreeHigh": "Tinggi", + "Group": "Grup", + "Body Encoding": "Body Encoding", + "Add New Tag": "Tambahkan Tanda Baru", + "chromeExecutableDescription": "Untuk pengguna Docker, jika Chromium belum diinstal, mungkin perlu waktu beberapa menit untuk menginstal dan menampilkan hasil pengujian. Dibutuhkan 1GB ruang penyimpanan.", + "recurringIntervalMessage": "Jalankan sekali setiap hari | Jalankan sekali setiap {0} hari", + "wayToGetKookBotToken": "Buat aplikasi dan dapatkan token bot Anda di {0}", + "Custom Monitor Type": "Tipe Monitor Khusus", + "API Keys": "Kunci API", + "Expiry": "Kadaluarsa", + "noGroupMonitorMsg": "Tidak tersedia. Buat Monitor Grup Terlebih Dahulu.", + "Close": "Tutup", + "telegramMessageThreadID": "(Opsional) ID Pesan", + "Date and Time": "Tanggal dan waktu", + "Single Maintenance Window": "Jendela Pemeliharaan Tunggal", + "wayToGetZohoCliqURL": "Anda dapat mempelajari cara membuat URL webhook {0}.", + "dayOfWeek": "Hari dalam seminggu", + "dayOfMonth": "Hari dalam Bulan", + "lastDay": "Hari terakhir", + "Clone Monitor": "Klon Monitor", + "Clone": "Klon", + "Server Address": "Alamat server", + "Edit Tag": "Sunting Tag", + "smseagleTo": "Nomor telepon", + "maintenanceStatus-under-maintenance": "Dalam perbaikan", + "webhookAdditionalHeadersDesc": "Menetapkan header tambahan yang dikirim dengan webhook. Setiap header harus didefinisikan sebagai kunci/nilai JSON.", + "webhookCustomBodyDesc": "Tentukan Body HTTP khusus untuk permintaan tersebut. Variabel template {msg}, {heartbeat}, {monitor} yang diterima.", + "webhookBodyPresetOption": "Prasetel - {0}", + "webhookBodyCustomOption": "Body Kustom", + "Packet Size": "Ukuran Paket", + "telegramMessageThreadIDDescription": "Pengidentifikasi unik Opsional untuk pesan target (topik) forum; untuk forum supergrup saja", + "telegramProtectContent": "Lindungi Forwarding/Saving", + "or": "atau", + "sameAsServerTimezone": "Sama seperti Zona Waktu Server", + "endDateTime": "Tanggal/Waktu Berakhir", + "cronExpression": "Ekspresi Cron", + "cronSchedule": "Jadwal: ", + "invalidCronExpression": "Ekspresi Cron Tidak Valid: {0}", + "recurringInterval": "Selang waktu", + "warningTimezone": "Itu menggunakan zona waktu server", + "weekdayShortMon": "Senin", + "weekdayShortTue": "Selasa", + "weekdayShortWed": "Rabu", + "weekdayShortThu": "Kamis", + "weekdayShortFri": "Jum'at", + "weekdayShortSat": "Sabtu", + "weekdayShortSun": "Minggu", + "lastDay1": "Hari Terakhir dalam Sebulan", + "lastDay2": "2 Hari Terakhir Bulan Ini", + "lastDay3": "3 Hari Terakhir Bulan Ini", + "lastDay4": "4 Hari Terakhir Bulan Ini", + "No Maintenance": "Tidak Ada Pemeliharaan", + "pauseMaintenanceMsg": "Anda yakin ingin menjeda?", + "maintenanceStatus-inactive": "Tidak aktif", + "Display Timezone": "Zona Waktu Tampilan", + "IconUrl": "URL ikon", + "Enable DNS Cache": "(Tidak berlaku lagi) Aktifkan Cache DNS untuk monitor HTTP(s)", + "Enable": "Aktifkan", + "Disable": "Nonaktifkan", + "affectedStatusPages": "Tampilkan pesan pemeliharaan ini pada halaman status yang dipilih", + "invertKeywordDescription": "Carilah kata kunci untuk menjadi tidak ada daripada hadir.", + "wayToGetKookGuildID": "Aktifkan 'Mode Pengembang' di pengaturan Kook, dan klik kanan guild untuk mendapatkan ID-nya", + "Strategy": "Strategi", + "high": "tinggi", + "SendKey": "SendKey", + "Lowcost": "rendah", + "smseagleContact": "nama kontak buku telepon", + "smseagleRecipient": "Penerima (jika banyak harus dipisahkan dengan koma)", + "smseagleEncoding": "Kirim sebagai Unicode", + "smseaglePriority": "Prioritas pesan (0-9, default = 0)", + "Learn More": "Pelajari lebih lanjut", + "Badge Up Color": "Warna atas Lencana", + "Badge Maintenance Color": "Warna Lencana Pemeliharaan", + "Badge Warn Color": "Warna Lencana Peringatan", + "Request Body": "Permintaan Body", + "uninstalling": "Menghapus instalan", + "notificationRegional": "Daerah", + "atLeastOneMonitor": "Pilih setidaknya satu monitor yang terpengaruh", + "pushoverMessageTtl": "TTL pesan (Detik)", + "smseagleGroup": "Nama grup buku telepon", + "smseagleRecipientType": "Tipe Penerima", + "smseagleToken": "Token Akses API", + "smseagleUrl": "URL perangkat SMSEagle Anda", + "Schedule maintenance": "Perbaikan Terjadwal", + "Affected Monitors": "Monitor yang Terpengaruh", + "Start of maintenance": "Mulai pemeliharaan", + "All Status Pages": "Semua Halaman Status", + "Select status pages...": "Pilih halaman status…", + "Custom": "Khusus", + "Optional": "Opsional", + "dnsCacheDescription": "Ini mungkin tidak berfungsi di beberapa lingkungan IPv6, nonaktifkan jika Anda mengalami masalah.", + "Maintenance Time Window of a Day": "Jendela Waktu Perawatan dalam Sehari", + "Effective Date Range": "Rentang Tanggal Efektif (Opsional)", + "Schedule Maintenance": "Jadwal Pemeliharaan", + "Badge Down Color": "Warna bawah Lencana", + "Badge Warn Days": "Hari Lencana Peringatan", + "statusPageRefreshIn": "Muat ulang dalam: {0}", + "webhookAdditionalHeadersTitle": "Header Tambahan", + "maintenanceStatus-unknown": "Tidak dikenal", + "Server Timezone": "Zona Waktu Server", + "maintenanceStatus-scheduled": "Dijadwalkan", + "maintenanceStatus-ended": "Berakhir", + "dataRetentionTimeError": "Periode retensi harus 0 atau lebih besar", + "chromeExecutable": "Chrome/Chromium yang Dapat di Eksekusi", + "chromeExecutableAutoDetect": "Deteksi otomatis", + "Edit Maintenance": "Sunting Pemeliharaan", + "DateTime Range": "Rentang Tanggal dan Waktu", + "loadingError": "Tidak dapat mengambil data, harap coba lagi nanti.", + "installing": "Memasang", + "uninstall": "Copot pemasangan", + "confirmUninstallPlugin": "Anda yakin ingin mencopot pemasangan plugin ini?", + "cloneOf": "Klon dari {0}", + "affectedMonitorsDescription": "Pilih monitor yang terpengaruh oleh pemeliharaan saat ini", + "You can divide numbers with": "Anda dapat membagi angka dengan", + "Continue": "Lanjutkan", + "Badge Style": "Gaya Lencana", + "Badge value (For Testing only.)": "Nilai lencana (Hanya untuk Pengujian.)", + "Badge URL": "URL lencana", + "Badge Down Days": "Hari Penghentian Lencana", + "telegramSendSilentlyDescription": "Mengirim pesan secara senyap. Pengguna akan menerima notifikasi tanpa suara.", + "telegramProtectContentDescription": "Jika diaktifkan, pesan bot di Telegram akan dilindungi dari forwarding dan saving.", + "plugin": "Pengaya | Plugin", + "install": "Pasang", + "promosmsAllowLongSMS": "Izinkan SMS panjang", + "Badge Pending Color": "Warna Lencana Tertunda", + "Monitor Group": "Monitor Grup", + "Expected Value": "Parameter yang diharapkan", + "Json Query": "Kueri JSON", + "setupDatabaseSQLite": "File database sederhana, direkomendasikan untuk penerapan skala kecil. Sebelum v2.0.0, Uptime Kuma menggunakan SQLite sebagai database default.", + "setupDatabaseMariaDB": "Hubungkan ke database MariaDB eksternal. Anda perlu mengatur informasi koneksi database.", + "setupDatabaseEmbeddedMariaDB": "Anda tidak perlu mengatur apa pun. Docker Image ini telah menyematkan dan mengonfigurasi MariaDB untuk Anda secara otomatis. Uptime Kuma akan terhubung ke database ini melalui soket unix.", + "setupDatabaseChooseDatabase": "Database mana yang ingin Anda gunakan?", + "dbName": "Nama Database", + "pushViewCode": "Bagaimana cara menggunakan Push monitor? (Lihat Kode)", + "monitorToastMessagesLabel": "Pantau notifikasi Toast", + "toastErrorTimeout": "Batas Waktu untuk Pemberitahuan Kesalahan", + "filterActive": "Aktif", + "Select": "Pilih", + "tailscalePingWarning": "Untuk menggunakan monitor Tailscale Ping, Anda perlu menginstal Uptime Kuma tanpa Docker dan juga menginstal klien Tailscale di server Anda.", + "emailTemplateLimitedToUpDownNotification": "hanya tersedia untuk detak jantung ATAS/BAWAH, jika tidak, null", + "aboutNotifyChannel": "Beritahu saluran akan memicu pemberitahuan desktop atau seluler untuk semua anggota saluran, baik ketersediaannya diatur ke aktif atau tidak.", + "monitorToastMessagesDescription": "Notifikasi Toast untuk monitor hilang setelah waktu tertentu dalam hitungan detik. Setel ke -1 akan menonaktifkan batas waktu. Setel ke 0 akan menonaktifkan notifikasi Toast.", + "wayToGetFlashDutyKey": "Anda dapat membuka Saluran -> (Pilih Saluran) -> Integrasi -> Tambahkan halaman integrasi baru, tambahkan 'Uptime Kuma' untuk mendapatkan alamat push, salin Kunci Integrasi di alamat tersebut. Untuk informasi lebih lanjut, silakan kunjungi", + "Saved.": "Tersimpan.", + "authUserInactiveOrDeleted": "Pengguna tidak aktif atau dihapus.", + "authInvalidToken": "Token Tidak Valid.", + "authIncorrectCreds": "Username atau kata sandi salah.", + "2faAlreadyEnabled": "2FA sudah diaktifkan.", + "2faEnabled": "2FA Diaktifkan.", + "2faDisabled": "2FA Dinonaktifkan.", + "successResumed": "Berhasil Dilanjutkan.", + "successPaused": "Berhasil Dijeda.", + "successDeleted": "Berhasil Dihapus.", + "successEdited": "Berhasil Diedit.", + "successAuthChangePassword": "Kata sandi telah berhasil diperbarui.", + "successBackupRestored": "Cadangan berhasil dipulihkan.", + "successDisabled": "Berhasil Dinonaktifkan.", + "successEnabled": "Berhasil Diaktifkan.", + "GrafanaOncallUrl": "URL Oncall Grafana", + "emailCustomisableContent": "Konten yang dapat disesuaikan", + "leave blank for default subject": "biarkan kosong untuk subjek bawaan", + "Bark API Version": "Versi Bark API", + "Reset Token": "Setel Ulang Token", + "noDockerHostMsg": "Tidak Tersedia. Siapkan Host Docker Terlebih Dahulu.", + "DockerHostRequired": "Silakan atur Docker Host untuk monitor ini.", + "enableNSCD": "Aktifkan NSCD (Name Service Cache Daemon) untuk menyimpan semua permintaan DNS", + "smtpLiquidIntroduction": "Dua bidang berikut dapat dibuat templatnya melalui Bahasa templating Liquid. Silakan lihat {0} untuk petunjuk penggunaan. Berikut ini adalah variabel yang tersedia:", + "leave blank for default body": "biarkan kosong untuk isi bawaan", + "emailTemplateServiceName": "Nama Layanan", + "emailTemplateHostnameOrURL": "Nama host atau URL", + "emailTemplateStatus": "Status", + "emailTemplateMonitorJSON": "objek yang menggambarkan monitor", + "emailTemplateHeartbeatJSON": "objek yang menggambarkan heartbeat", + "emailTemplateMsg": "pesan pemberitahuan", + "emailCustomBody": "Kustomisasi Body", + "Notify Channel": "Beritahu Saluran", + "Server URL should not contain the nfty topic": "URL server tidak boleh berisi topik nfty", + "PushDeer Server": "Server PushDeer", + "pushDeerServerDescription": "Biarkan kosong untuk menggunakan server resmi", + "twilioApiKey": "Kunci API (opsional)", + "Badge Duration (in hours)": "Durasi Badge (dalam jam)", + "Badge Preview": "Pratinjau Lencana", + "toastSuccessTimeout": "Batas Waktu untuk Pemberitahuan Sukses", + "Kafka Brokers": "Kafka Broker", + "Enter the list of brokers": "Masukkan daftar broker", + "Press Enter to add broker": "Tekan Enter untuk menambahkan broker", + "Kafka Topic Name": "Nama Topik Kafka", + "Kafka Producer Message": "Pesan Produser Kafka", + "Enable Kafka SSL": "Aktifkan SSL Kafka", + "Enable Kafka Producer Auto Topic Creation": "Aktifkan Pembuatan Topik Otomatis Produser Kafka", + "Mechanism": "Mekanisme", + "FlashDuty Severity": "Severity", + "nostrRelaysHelp": "Satu URL relai per baris", + "nostrSender": "Kunci Pribadi Pengirim (ndetik)", + "nostrRecipients": "Kunci Publik Penerima (npub)", + "nostrRecipientsHelp": "format npub, satu per baris", + "showCertificateExpiry": "Tampilkan Sertifikat Kedaluwarsa", + "noOrBadCertificate": "Tidak Ada/Sertifikat Salah", + "gamedigGuessPort": "Gamedig: Guess Port", + "nostrRelays": "Relai nostr", + "gamedigGuessPortDescription": "Port yang digunakan oleh Valve Server Query Protocol mungkin berbeda dari port klien. Coba ini jika monitor tidak dapat terhubung ke server Anda.", + "successAdded": "Berhasil Ditambahkan.", + "tagNotFound": "Tag tidak ditemukan.", + "foundChromiumVersion": "Ditemukan Chromium/Chrome. Versi: {0}", + "Kafka SASL Options": "Opsi Kafka SASL", + "Pick a SASL Mechanism...": "Pilih Mekanisme SASL…", + "AccessKey Id": "Id AccessKey", + "Secret AccessKey": "Secret AccessKey", + "Session Token": "Sesi Token", + "pushOthers": "Lainnya", + "programmingLanguages": "Bahasa Pemrograman", + "filterActivePaused": "Berhenti", + "templateMsg": "pesan pemberitahuan", + "templateHeartbeatJSON": "objek yang menggambarkan heartbeat", + "templateMonitorJSON": "objek yang menggambarkan monitor", + "templateLimitedToUpDownCertNotifications": "hanya tersedia untuk notifikasi AKTIF/TIDAK AKTIF/Sertifikat yang kedaluwarsa", + "templateLimitedToUpDownNotifications": "hanya tersedia untuk notifikasi AKTIF/TIDAK AKTIF", + "liquidIntroduction": "Kemampuan templat dicapai melalui bahasa templating Liquid. Silakan lihat {0} untuk petunjuk penggunaan. Ini adalah variabel yang tersedia:", + "selectedMonitorCount": "Terpilih: {0}", + "Check/Uncheck": "Centang/Hapus centang", + "Authorization Identity": "Identitas Otorisasi", + "styleElapsedTime": "Waktu yang berlalu pada bilah heartbeat", + "styleElapsedTimeShowNoLine": "Tampilkan (Tanpa Garis)", + "styleElapsedTimeShowWithLine": "Tampilkan (Dengan Garis)", + "Request Timeout": "Batas Waktu Habis", + "timeoutAfter": "Waktu habis setelah {0} detik", + "successKeywordExplanation": "Kata Kunci MQTT yang akan dianggap sukses", + "Remove the expiry notification": "Hapus hari pemberitahuan kedaluwarsa", + "Browser Screenshot": "Tangkapan Layar Browser", + "Remote Browsers": "Peramban Jarak Jauh", + "Remote Browser": "Peramban Jarak Jauh", + "Add a Remote Browser": "Tambahkan Remote Browser", + "Remote Browser not found!": "Remote Browser tidak ditemukan!", + "remoteBrowsersDescription": "Remote Browsers adalah cara alternatif untuk menjalankan Chromium secara lokal. Siapkan dengan layanan seperti browserless.io atau sambungkan ke layanan Anda sendiri", + "self-hosted container": "kontainer self-hosted", + "remoteBrowserToggle": "Secara default, Chromium berjalan di dalam kontainer Uptime Kuma. Anda dapat menggunakan remote browser dengan menekan tombol ini.", + "useRemoteBrowser": "Gunakan Remote Browser", + "deleteRemoteBrowserMessage": "Apakah Anda yakin ingin menghapus Remote Browser ini untuk semua monitor?", + "Add a new expiry notification day": "Tambahkan hari pemberitahuan kedaluwarsa baru", + "setup a new monitor group": "menyiapkan grup monitor baru", + "openModalTo": "buka modal ke {0}", + "Add a domain": "Tambahkan domain", + "Remove domain": "Hapus domain '{0}'", + "successKeyword": "Kata Kunci Sukses", + "ntfyPriorityHelptextAllExceptDown": "Semua peristiwa dikirim dengan prioritas ini, kecuali peristiwa {0}, yang memiliki prioritas {1}", + "statusPageSpecialSlugDesc": "Tanda khusus {0}: halaman ini akan ditampilkan jika tidak ada tanda khusus yang disediakan", + "settingUpDatabaseMSG": "Menyiapkan basis data. Mungkin perlu waktu beberapa saat, harap bersabar.", + "Search monitored sites": "Mencari situs yang dipantau", + "ntfyPriorityHelptextAllEvents": "Semua peristiwa dikirim dengan prioritas maksimum", + "What is a Remote Browser?": "Apa itu Remote Browser?", + "wayToGetHeiiOnCallDetails": "Cara mendapatkan ID Pemicu dan Kunci API dijelaskan di {documentation}", + "From Phone Number / Transmission Path Originating Address (TPOA)": "Dari Nomor Telepon / Transmission Path Originating Address (TPOA)", + "gtxMessagingFromHint": "Penerima pesan akan melihat TPOA yang ditampilkan sebagai pengirim pesan. Diperbolehkan maksimal 11 karakter alfanumerik, kode pendek, kode panjang lokal atau internasional ({e164}, {e212} or {e214})", + "To Phone Number": "Untuk Nomor Telepon", + "gtxMessagingToHint": "Format internasional, dimulai dengan tanda plus \"+\" ({e164}, {e212} or {e214})", + "gtxMessagingApiKeyHint": "Anda dapat menemukan Kunci API Anda di: Perutean Akun Saya > Lihat Informasi Akun > Kredensial API > REST API (v2.x)", + "Originator type": "Tipe Originator", + "Alphanumeric (recommended)": "Alfanumerik (direkomendasikan)", + "Telephone number": "Nomor telepon", + "cellsyntOriginatortypeAlphanumeric": "String alfanumerik (maks 11 karakter). Penerima tidak dapat membalas pesan tersebut.", + "cellsyntOriginatortypeNumeric": "Nilai numerik (maks 15 digit) dengan nomor telepon dalam format internasional tanpa awalan 00 (contoh nomor Inggris 07920 110 000 harus diisi sebagai 447920110000). Penerima dapat membalas pesan tersebut.", + "cellsyntDestination": "Nomor telepon penerima dalam format internasional yang diawali angka 00, diikuti dengan kode negara, contoh : 00447920110000 untuk nomor Inggris 07920 110 000 (maks total 17 digit). Maksimum 25.000 penerima yang dipisahkan dengan tanda koma per permintaan HTTP.", + "Allow Long SMS": "Izinkan SMS Panjang", + "max 15 digits": "Maksimal 15 digit", + "callMeBotGet": "Anda dapat membuat endpoint untuk {0}, {1} dan {2}. Ingatlah bahwa Anda mungkin akan terkena batas tarif. Batas tarif saat ini adalah: {3}", + "Originator": "Originator", + "cellsyntOriginator": "Terlihat di ponsel penerima sebagai pencetus pesan. Nilai dan fungsi yang diizinkan bergantung pada parameter tipe pencetus.", + "Destination": "Tujuan", + "wayToGetWhapiUrlAndToken": "Anda dapat menggunakan URL API dan token dengan bergabung ke saluran yang Anda inginkan dari {0}", + "whapiRecipient": "Nomor Telepon / Kontak ID / Grup ID", + "API URL": "URL API", + "cellsyntSplitLongMessages": "Pisahkan pesan panjang ke dalam 6 bagian. 153 x 6 = 918 karakter.", + "max 11 alphanumeric characters": "maksimal 11 karakter alfanumerik", + "wayToWriteWhapiRecipient": "Nomor telepon dalam format internasional, tanpa tanda tambah ({0}), Kontak ID ({1}) atau Grup ID ({2}).", + "documentationOf": "{0} Dokumentasi", + "Channel access token (Long-lived)": "Token akses saluran (durasi panjang)", + "Your User ID": "User ID Anda", + "mongodbCommandDescription": "Jalankan perintah MongoDB terhadap database. Untuk informasi tentang perintah yang tersedia, lihat {documentation}", + "Command": "Perintah", + "threemaRecipient": "Penerima", + "threemaRecipientType": "Tipe Penerima", + "threemaRecipientTypeIdentity": "Threem-ID", + "threemaRecipientTypeIdentityFormat": "8 karakter", + "threemaRecipientTypePhone": "Nomor Telepon", + "threemaRecipientTypePhoneFormat": "E.164, tanpa awalan +", + "threemaRecipientTypeEmail": "Alamat Email", + "threemaSenderIdentity": "Gateway-ID", + "threemaApiAuthenticationSecret": "Gateway-ID Secret", + "smspartnerPhoneNumber": "Nomor telepon", + "smspartnerSenderName": "Nama Pengirim SMS", + "Mentioning": "Menyebut", + "Don't mention people": "Jangan menyebut orang", + "bitrix24SupportUserID": "Masukkan ID pengguna Anda di Bitrix24. Anda dapat mengetahui ID dari tautan dengan membuka profil pengguna.", + "Bitrix24 Webhook URL": "Bitrix24 Webhook URL", + "wayToGetBitrix24Webhook": "Anda dapat membuat webhook dengan mengikuti langkah-langkah di {0}", + "receiverSevenIO": "Menerima nomor", + "receiverInfoSevenIO": "Jika nomor penerima tidak berlokasi di Jerman, Anda harus menambahkan kode negara di depan nomor tersebut (misalnya untuk kode negara 1 dari AS gunakan 117612121212, bukan 017612121212)", + "Host URL": "Host URL", + "senderSevenIO": "Mengirim nomor atau nama", + "apiKeysDisabledMsg": "Kunci API dinonaktifkan karena autentikasi dinonaktifkan.", + "forumPostName": "Nama postingan forum", + "threadForumPostID": "Thread / ID postingan Forum", + "e.g. {discordThreadID}": "misalnya {discordThreadID}", + "Select message type": "Pilih jenis pesan", + "Send to channel": "Kirim ke saluran", + "Create new forum post": "Buat postingan forum baru", + "postToExistingThread": "Posting ke thread/postingan forum yang ada", + "whatHappensAtForumPost": "Buat postingan forum baru. Ini TIDAK mempublikasikan pesan di postingan yang sudah ada. Untuk mempublikasikan di postingan yang sudah ada gunakan '{option}'", + "smspartnerApiurl": "Anda dapat menemukan kunci API di dasbor Anda di {0}", + "smspartnerPhoneNumberHelptext": "Nomor harus dalam format internasional {0}, {1}. Beberapa angka harus dipisahkan dengan {2}", + "smspartnerSenderNameInfo": "Harus di antara 3..=11 karakter biasa", + "wayToGetSevenIOApiKey": "Kunjungi dasbor di bawah app.seven.io > pengembang > api key > tombol yang berwarna hijau", + "wayToGetThreemaGateway": "Anda dapat mendaftar ke Threema Gateway {0}.", + "threemaSenderIdentityFormat": "8 karakter, biasanya diawali dengan *", + "threemaBasicModeInfo": "Catatan: Integrasi ini menggunakan Threema Gateway dalam mode dasar (enkripsi berbasis server). Detail lebih lanjut dapat ditemukan {0}.", + "wayToGetDiscordThreadId": "Mendapatkan id postingan thread/forum mirip dengan mendapatkan id saluran. Baca selengkapnya tentang cara mendapatkan ID {0}", + "Mention group": "Sebutkan {grup}", + "Refresh Interval Description": "Laman status akan melakukan penyegaran situs secara penuh setiap {0} detik", + "Refresh Interval": "Interval muat ulang", + "apiKeySevenIO": "Kunci API SevenIO", + "locally configured mail transfer agent": "transfer email agent yang dikonfigurasi secara lokal", + "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Masukkan nama host server yang ingin Anda sambungkan atau {localhost} jika Anda ingin menggunakan {local_mta}", + "ignoreTLSErrorGeneral": "Abaikan kesalahan TLS/SSL untuk koneksi", + "jsonQueryDescription": "Mengurai dan mengekstrak data spesifik dari respons JSON server menggunakan query JSON atau menggunakan “$” untuk respons mentah, jika tidak menginginkan JSON. Hasilnya kemudian dibandingkan dengan nilai yang diharapkan, sebagai string. Lihat {0} untuk dokumentasi dan gunakan {1} untuk bereksperimen dengan query.", + "now": "sekarang", + "time ago": "{0} yang lalu", + "-year": "-tahun", + "Json Query Expression": "Ekspresi Kueri Json", + "and": "dan", + "cacheBusterParam": "Tambahkan parameter {0}", + "cacheBusterParamDescription": "Parameter yang dihasilkan secara acak untuk melewati cache.", + "Community String": "Community String", + "snmpCommunityStringHelptext": "String ini berfungsi sebagai kata sandi untuk autentikasi dan mengontrol akses ke perangkat SNMP. Cocokkan dengan konfigurasi perangkat SNMP Anda.", + "OID (Object Identifier)": "OID (Object Identifier)", + "snmpOIDHelptext": "Masukkan OID untuk sensor atau status yang ingin Anda pantau. Gunakan alat manajemen jaringan seperti browser MIB atau perangkat lunak SNMP jika Anda tidak yakin tentang OID.", + "signl4Docs": "Anda dapat menemukan informasi selengkapnya tentang cara mengonfigurasi SIGNL4 dan cara mendapatkan URL webhook SIGNL4 di {0}.", + "greater than or equal to": "lebih dari atau sama dengan", + "wayToGetOnesenderUrlandToken": "Anda bisa mendapatkan URL dan Token dengan mengunjungi situs Onesender. Informasi lebih lanjut {0}", + "Condition": "Kondisi", + "SNMP Version": "Versi SNMP", + "Please enter a valid OID.": "Silakan masukkan OID yang tepat.", + "Host Onesender": "Host Onesender", + "Token Onesender": "Token Onesender", + "Recipient Type": "Tipe Penerima", + "Private Number": "Nomor Pribadi", + "privateOnesenderDesc": "Pastikan nomor telepon valid. Untuk mengirim pesan ke nomor telepon pribadi, contoh: 628123456789", + "Authorization Header": "Authorization Header", + "Form Data Body": "Form Data Body", + "OAuth Token URL": "OAuth Token URL", + "Client ID": "ID Klien", + "Client Secret": "Client Secret", + "OAuth Scope": "OAuth Scope", + "Optional: Space separated list of scopes": "Opsional: Daftar cakupan yang dipisahkan spasi", + "Go back to home page.": "Kembali ke halaman beranda.", + "No tags found.": "Tidak ada tag yang ditemukan.", + "Lost connection to the socket server.": "Kehilangan koneksi ke server soket.", + "Cannot connect to the socket server.": "Tidak dapat terhubung ke server soket.", + "SIGNL4": "SIGNL4", + "SIGNL4 Webhook URL": "SIGNL4 Webhook URL", + "Conditions": "Kondisi", + "conditionAdd": "Tambahkan Kondisi", + "conditionDelete": "Menghapus Kondisi", + "conditionAddGroup": "Tambahkan Grup", + "conditionDeleteGroup": "Menghapus Grup", + "conditionValuePlaceholder": "Nilai", + "equals": "sama dengan", + "not equals": "tidak sama dengan", + "contains": "berisi", + "not contains": "tidak berisi", + "starts with": "dimulai dengan", + "not starts with": "tidak dimulai dengan", + "ends with": "diakhiri dengan", + "not ends with": "tidak diakhiri dengan", + "less than": "kurang dari", + "greater than": "lebih dari", + "less than or equal to": "kurang dari atau sama dengan", + "record": "rekaman", + "groupOnesenderDesc": "Pastikan GroupIDnya valid. Untuk mengirim pesan ke Grup, misal: 628123456789-342345", + "Group ID": "ID Grup", + "Add Remote Browser": "Tambahkan Remote Browser", + "New Group": "Grup Baru", + "Group Name": "Nama Grup", + "OAuth2: Client Credentials": "OAuth2: Kredensial Klien", + "Authentication Method": "Metode Autentikasi", + "shrinkDatabaseDescriptionSqlite": "Memicu pangkalan data {vacuum} untuk SQLite. {auto_vacuum} sudah diaktifkan, tetapi tidak mendefragmentasi pangkalan data atau mengemas ulang halaman individual dari pangkalan data seperti yang dilakukan oleh perintah {vacuum}." +} diff --git a/src/lang/ja.json b/src/lang/ja.json index f81fc4f9c..73669cf8a 100644 --- a/src/lang/ja.json +++ b/src/lang/ja.json @@ -1,676 +1,676 @@ -{ - "languageName": "日本語", - "checkEverySecond": "{0}秒ごとにチェックします", - "retriesDescription": "サービスが完全に停止したと判断し、通知を送信する前に再接続を試みる最大回数", - "ignoreTLSError": "HTTPS ウェブサイトの TLS/SSL エラーを無視する", - "upsideDownModeDescription": "稼働ステータスを反転して扱います。サービスに接続可能な場合は、停止として扱います。", - "maxRedirectDescription": "必要な場合にリダイレクトする最大回数です。リダイレクトを無効にしたい場合は、0に設定してください。", - "acceptedStatusCodesDescription": "成功した応答とみなされるステータスコードを選択する。", - "passwordNotMatchMsg": "繰り返しのパスワードが一致しません。", - "notificationDescription": "監視を機能させるには、監視に通知を割り当ててください。", - "keywordDescription": "プレーンHTMLまたはJSON応答でキーワードを検索し、大文字と小文字を区別します。", - "pauseDashboardHome": "一時停止", - "deleteMonitorMsg": "この監視を削除してよろしいですか?", - "deleteNotificationMsg": "全ての監視のこの通知を削除してよろしいですか?", - "resolverserverDescription": "Cloudflareがデフォルトのサーバーですが、いつでもリゾルバサーバーを変更できます。", - "rrtypeDescription": "監視するRRタイプを選択します", - "pauseMonitorMsg": "一時停止しますか?", - "Settings": "設定", - "Dashboard": "ダッシュボード", - "New Update": "新しいアップデート", - "Language": "言語", - "Appearance": "外観", - "Theme": "テーマ", - "General": "全般", - "Version": "バージョン", - "Check Update On GitHub": "GitHubでアップデートを確認する", - "List": "一覧", - "Add": "追加", - "Add New Monitor": "監視の追加", - "Quick Stats": "統計", - "Up": "正常", - "Down": "停止", - "Pending": "中止", - "Unknown": "不明", - "Pause": "一時停止", - "Name": "名前", - "Status": "ステータス", - "DateTime": "日時", - "Message": "メッセージ", - "No important events": "重要なイベントなし", - "Resume": "再開", - "Edit": "編集", - "Delete": "削除", - "Current": "現在", - "Uptime": "稼働時間", - "Cert Exp.": "証明書有効期限", - "day": "日 | 日間", - "-day": "-日", - "hour": "時間", - "-hour": "時間", - "Response": "レスポンス", - "Ping": "Ping", - "Monitor Type": "監視タイプ", - "Keyword": "キーワード", - "Friendly Name": "分かりやすい名前", - "URL": "URL", - "Hostname": "ホスト名", - "Port": "ポート", - "Heartbeat Interval": "監視間隔", - "Retries": "再試行回数", - "Advanced": "詳細設定", - "Upside Down Mode": "反転モード", - "Max. Redirects": "最大リダイレクト数", - "Accepted Status Codes": "正常なステータスコード", - "Save": "保存", - "Notifications": "通知", - "Not available, please setup.": "利用できません。設定が必要です。", - "Setup Notification": "通知設定", - "Light": "ライト", - "Dark": "ダーク", - "Auto": "自動", - "Theme - Heartbeat Bar": "テーマ - 監視バー", - "Normal": "通常", - "Bottom": "下部", - "None": "なし", - "Timezone": "タイムゾーン", - "Search Engine Visibility": "検索エンジンでの表示", - "Allow indexing": "インデックス作成を許可する", - "Discourage search engines from indexing site": "検索エンジンにインデックスさせないようにする", - "Change Password": "パスワード変更", - "Current Password": "現在のパスワード", - "New Password": "新しいパスワード", - "Repeat New Password": "確認のため新しいパスワードをもう一度", - "Update Password": "パスワードの更新", - "Disable Auth": "認証の無効化", - "Enable Auth": "認証の有効化", - "Logout": "ログアウト", - "Leave": "作業を中止する", - "I understand, please disable": "理解した上で無効化する", - "Confirm": "確認", - "Yes": "はい", - "No": "いいえ", - "Username": "ユーザー名", - "Password": "パスワード", - "Remember me": "ログインしたままにする", - "Login": "ログイン", - "No Monitors, please": "監視がありません", - "add one": "add one", - "Notification Type": "通知タイプ", - "Email": "Eメール", - "Test": "テスト", - "Certificate Info": "証明書情報", - "Resolver Server": "問い合わせ先DNSサーバ", - "Resource Record Type": "DNSレコード設定", - "Last Result": "最終結果", - "Create your admin account": "Adminアカウントの作成", - "Repeat Password": "パスワード確認", - "respTime": "応答時間 (ms)", - "notAvailableShort": "N/A", - "Create": "作成", - "clearEventsMsg": "この監視のすべての記録を削除してもよろしいですか?", - "clearHeartbeatsMsg": "この監視のすべての異常記録を削除してもよろしいですか?", - "confirmClearStatisticsMsg": "すべての統計を削除してもよろしいですか?", - "Clear Data": "データを削除", - "Events": "統計", - "Heartbeats": "異常記録", - "Auto Get": "自動取得", - "enableDefaultNotificationDescription": "監視を作成するごとに、この通知方法はデフォルトで有効になります。監視ごとに通知を無効にすることもできます。", - "Default enabled": "デフォルトで有効にする", - "Also apply to existing monitors": "既存のモニターにも適用する", - "Export": "エクスポート", - "Import": "インポート", - "backupDescription": "すべての監視と通知設定をJSONファイルとしてバックアップすることができます。", - "backupDescription2": "※ 履歴と統計のデータはバックアップされません。", - "backupDescription3": "通知に使用するトークンなどの機密データも含まれています。注意して扱ってください。", - "alertNoFile": "インポートするファイルを選択してください。", - "alertWrongFileType": "JSONファイルを選択してください。", - "twoFAVerifyLabel": "トークンを入力して、2段階認証を有効にします。", - "tokenValidSettingsMsg": "トークンの確認が完了しました! 「保存」をしてください。", - "confirmEnableTwoFAMsg": "2段階認証を「有効」にします。よろしいですか?", - "confirmDisableTwoFAMsg": "2段階認証を「無効」にします。よろしいですか?", - "Apply on all existing monitors": "既存のすべてのモニターに適用する", - "Verify Token": "認証する", - "Setup 2FA": "二要素認証 (2FA) の設定", - "Enable 2FA": "2段階認証を有効にする", - "Disable 2FA": "2段階認証を無効にする", - "2FA Settings": "2段階認証の設定", - "Two Factor Authentication": "2段階認証", - "Clear all statistics": "すべての記録を削除", - "retryCheckEverySecond": "{0} 秒ごとにリトライします", - "importHandleDescription": "同じ名前のすべての監視または通知方法を上書きしない場合は、「既存のをスキップ」を選択します。 「上書きする」は、既存のすべてのモニターと通知を削除します。", - "confirmImportMsg": "バックアップをインポートしてもよろしいですか?希望するオプションを選択してください。", - "Heartbeat Retry Interval": "異常検知後の再試行間隔", - "Import Backup": "バックアップのインポート", - "Export Backup": "バックアップのエクスポート", - "Skip existing": "既存のをスキップする", - "Overwrite": "上書きする", - "Options": "オプション", - "Keep both": "どちらも保持する", - "Tags": "タグ", - "Add New below or Select...": "新規追加または選択…", - "Tag with this name already exist.": "この名前のタグはすでに存在しています。", - "Tag with this value already exist.": "この値のタグはすでに存在しています。", - "color": "色", - "value (optional)": "値 (optional)", - "Search...": "検索…", - "Avg. Ping": "平均Ping時間", - "Avg. Response": "平均応答時間", - "Entry Page": "エントリーページ", - "statusPageNothing": "ここには何もありません。グループまたは監視を追加してください。", - "No Services": "サービス無し", - "All Systems Operational": "すべてのサービスが稼働中", - "Partially Degraded Service": "部分的にサービスが停止中", - "Degraded Service": "サービスが停止中", - "Add Group": "グループの追加", - "Add a monitor": "監視の追加", - "Edit Status Page": "ステータスページ編集", - "Go to Dashboard": "ダッシュボード", - "Status Page": "ステータスページ", - "Status Pages": "ステータスページ", - "Shrink Database": "データベースの縮小", - "Start": "始める", - "Retry": "リトライ", - "Please read": "次のリンクを参考にしてください", - "Orange": "橙", - "Gateway Type": "ゲートウェイの種類", - "Game": "ゲーム", - "Help": "ヘルプ", - "Maintenance": "メンテナンス", - "resendDisabled": "再送信不可", - "Schedule maintenance": "メンテナンスのスケジュール", - "Affected Monitors": "影響を受けるモニター", - "Pick Affected Monitors...": "影響を受けるモニターを選択…", - "Start of maintenance": "メンテナンス開始", - "General Monitor Type": "汎用モニタータイプ", - "resendEveryXTimes": "{0}回ごとに再送信", - "markdownSupported": "マークダウン構文がサポートされています", - "All Status Pages": "すべてのステータス ページ", - "Monitor": "モニター |モニター", - "Resend Notification if Down X times consequently": "ダウンX回連続で通知再送", - "Push URL": "プッシュ URL", - "needPushEvery": "{0} 秒ごとにこの URL を呼び出す必要があります。", - "pushOptionalParams": "オプションのパラメーター: {0}", - "disableauth.message1": "{disableAuth}にしてもよろしいですか?", - "disable authentication": "認証を無効", - "disableauth.message2": "これは、Cloudflare Access、Authelia、またはその他の認証メカニズムなど、Uptime Kuma の前に{intendThirdPartyAuth}。", - "where you intend to implement third-party authentication": "サードパーティ認証を実装するシナリオ向けに設計されています", - "Please use this option carefully!": "このオプションは慎重に使用してください!", - "Primary Base URL": "プライマリ ベース URL", - "statusMaintenance": "メンテナンス", - "Passive Monitor Type": "パッシブモニタータイプ", - "Specific Monitor Type": "特定のモニターの種類", - "Security": "セキュリティ", - "Steam API Key": "Steam API Key", - "Default": "デフォルト", - "Title": "タイトル", - "No status pages": "ステータスページがありません", - "Proxy": "プロキシ", - "Date Created": "作成日", - "Content Type": "コンテンツタイプ", - "webhookAdditionalHeadersTitle": "追加ヘッダー", - "Server URL": "Server URL", - "Priority": "優先順位", - "Read more": "続きを読む", - "Show Tags": "タグを表示", - "Switch to Dark Theme": "ダークテーマに切り替える", - "Token": "Token", - "Show URI": "URIを表示する", - "Gray": "灰色", - "Red": "赤色", - "Green": "緑色", - "Blue": "青色", - "Indigo": "藍色", - "Purple": "紫色", - "Pink": "ピンク", - "Required": "必須", - "Select status pages...": "ステータスページを選択してください…", - "webhookAdditionalHeadersDesc": "Webhook で送信される追加ヘッダーを設定します。各ヘッダーは JSON の key/value 型で定義されている必要があります。", - "Webhook URL": "Webhook URL", - "Application Token": "Application Token", - "steamApiKeyDescription": "Steam Game Server を監視するためには、Steam Web-API キーが必要です。APIキーの登録はこちらから行えます。 ", - "Monitor History": "監視履歴", - "clearDataOlderThan": "監視履歴データを {0} 日間、保持します。", - "PasswordsDoNotMatch": "パスワードが一致していません。", - "Current User": "現在のユーザー", - "topic": "トピック", - "Info": "Info", - "Create Incident": "インシデントを作成", - "Content": "内容", - "Please input title and content": "タイトルと内容を入力してください", - "Last Updated": "最終アップデート日時", - "Unpin": "ピンを外す", - "Switch to Light Theme": "ライトテーマに切り替える", - "Hide Tags": "タグを隠す", - "Description": "メモ", - "Untitled Group": "名前の無いグループ", - "Services": "サービス", - "Discard": "破棄", - "Cancel": "キャンセル", - "Powered by": "Powered by", - "Customize": "カスタマイズ", - "Custom Footer": "カスタムフッター", - "Custom CSS": "カスタム CSS", - "deleteStatusPageMsg": "本当にこのステータスページを削除しますか?", - "Proxies": "プロキシ", - "default": "デフォルト", - "enabled": "有効", - "setAsDefault": "デフォルトに設定する", - "deleteProxyMsg": "本当にすべてのモニターからこのプロキシを削除しますか?", - "proxyDescription": "プロキシはモニターに割り当てられていないと機能しません。", - "setAsDefaultProxyDescription": "このプロキシは、新しいモニターに対してデフォルトで有効になっています。モニターごとに個別にプロキシを無効にすることができます。", - "Remove Token": "Tokenを削除", - "Stop": "停止", - "Add New Status Page": "新しいステータスページを追加", - "Next": "次へ", - "No Proxy": "プロキシなし", - "Authentication": "認証", - "HTTP Basic Auth": "HTTPベーシック認証", - "New Status Page": "新しいステータスページ", - "Page Not Found": "ページが見つかりません", - "Reverse Proxy": "リバースプロキシ", - "Backup": "バックアップ", - "About": "About", - "cloudflareWebsite": "Cloudflare Website", - "Don't know how to get the token? Please read the guide:": "トークンの取得方法が分かりませんか?ガイドをお読みください。", - "Custom": "カスタム", - "Created": "作成日時", - "Resend Notification if Down X times consecutively": "X回連続でダウンしたら通知を再送する", - "webhookJsonDesc": "{0}はExpress.jsのような最新のHTTPサーバに適しています", - "webhookFormDataDesc": "{multipart}はPHPに適しています。このJSONは{decodeFunction}でデコードする必要があります", - "appriseInstalled": "Appriseはインストール済みです。", - "emojiCheatSheet": "絵文字一覧: {0}", - "Inactive": "無効", - "defaultNotificationName": "{notification} 通知 ({number})", - "Post URL": "Post URL", - "Active": "有効", - "Pick a RR-Type...": "RR-Typeを選択…", - "Pick Accepted Status Codes...": "正常なステータスコードを選択…", - "appriseNotInstalled": "Apprise はインストールされていません。{0}", - "Method": "方式", - "Body": "ボディ", - "Headers": "ヘッダー", - "PushUrl": "Push URL", - "HeadersInvalidFormat": "リクエストヘッダーのJSONが無効です: ", - "BodyInvalidFormat": "リクエストボディのJSONが無効です: ", - "records": "レコード", - "One record": "レコード", - "topicExplanation": "監視するMQTTトピック", - "successMessage": "成功メッセージ", - "successMessageExplanation": "成功したとみなされるMQTTメッセージ", - "recent": "直近", - "Done": "完了", - "HTTP Options": "HTTPオプション", - "Style": "スタイル", - "info": "情報", - "warning": "警告", - "Valid To:": "有効期限:", - "Days Remaining:": "残りの有効日数:", - "Issuer:": "発行者:", - "Fingerprint:": "フィンガープリント:", - "Domain Name Expiry Notification": "ドメイン名有効期限通知", - "Footer Text": "フッター文章", - "Show Powered By": "Powered Byを表示", - "Domain Names": "ドメイン名", - "signedInDisp": "{0}としてログイン中", - "RadiusSecret": "Radius シークレット", - "RadiusSecretDescription": "クライアントとサーバー間の共有シークレット", - "RadiusCalledStationId": "Called-Station-Id", - "RadiusCallingStationId": "Calling-Station-Id", - "Subject:": "サブジェクト:", - "trustProxyDescription": "ヘッダー「X-Forwarded-*」を信頼します。Uptime Kumaがリバースプロキシの中にあり、正しいクライアントIPを取得する場合は、有効化してください。", - "Home Assistant URL": "ホームアシスタントURL", - "Examples": "例", - "telegramMessageThreadID": "(オプション) メッセージスレッドID", - "wayToGetLineNotifyToken": "{0}からアクセストークンを入手できます", - "Packet Size": "パケットサイズ", - "Bot Token": "ボットトークン", - "Chat ID": "チャットID", - "critical": "致命的エラー", - "signedInDispDisabled": "認証が無効化されています。", - "RadiusCalledStationIdDescription": "着信側の識別子", - "telegramProtectContent": "転送や保存を制限", - "YOUR BOT TOKEN HERE": "入手したボットトークン", - "API Key": "APIキー", - "Show update if available": "アップデートがあれば表示する", - "Using a Reverse Proxy?": "リバースプロキシを使用中ですか?", - "Go back to the previous page.": "前のページに戻る", - "Coming Soon": "近日公開予定", - "Workstation": "ワークステーション", - "wayToGetTelegramToken": "{0}からトークンを入手できます。", - "telegramMessageThreadIDDescription": "オプションとしてフォーラムのスレッド(話題)のIDを指定してメッセージを送信することができます。スーパーグループでのみ利用できます。", - "telegramProtectContentDescription": "有効な場合、Telegram上のボットのメッセージの転送や保存が制限されます。", - "danger": "危険", - "error": "エラー", - "primary": "プライマリー", - "light": "ライト", - "dark": "ダーク", - "Post": "Post", - "No monitors available.": "監視対象がありません。", - "Add one": "追加", - "No Monitors": "監視対象なし", - "enableProxyDescription": "このプロキシは有効化されない限り、監視リクエストには影響しません。無効化した場合、一時的にプロキシをすべての監視から無効化することができます。", - "Certificate Chain": "証明書チェーン", - "Valid": "有効", - "Invalid": "無効", - "User": "ユーザー", - "Installed": "インストール済み", - "Not installed": "未インストール", - "Running": "稼働中", - "Not running": "停止中", - "Slug": "スラッグ", - "Accept characters:": "使用可能な文字:", - "startOrEndWithOnly": "{0}のみ最初と最後の文字として使用可能", - "No consecutive dashes": "連続したダッシュ記号は使用不可", - "The slug is already taken. Please choose another slug.": "指定されたスラグは既に使用されています。別のスラグを使用してください。", - "wayToGetCloudflaredURL": "({0}からcloudflaredをダウンロード)", - "Message:": "メッセージ:", - "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Cloudflare Tunnelを経由した接続が遮断される可能性があります。停止してもよろしいですか? 確認のため、現在のパスワードを入力してください。", - "HTTP Headers": "HTTPヘッダー", - "Trust Proxy": "信頼できるプロキシ", - "Other Software": "その他のソフトウェア", - "For example: nginx, Apache and Traefik.": "例: nginxやApache、Traefikなど", - "RadiusCallingStationIdDescription": "発信側の識別子", - "Certificate Expiry Notification": "証明書有効期限通知", - "API Username": "APIユーザー名", - "Also check beta release": "ベータ版も表示する", - "Check how to config it for WebSocket": "WebSocketの設定方法について", - "Steam Game Server": "Steamゲームサーバー", - "Most likely causes:": "最も考えられる原因:", - "There might be a typing error in the address.": "アドレスの入力ミスの可能性があります。", - "What you can try:": "対応方法:", - "Retype the address.": "アドレスを入力し直してください。", - "The resource is no longer available.": "存在しないページです。", - "Connection String": "接続文字列", - "Query": "クエリ", - "settingsCertificateExpiry": "TLS証明書の有効期限", - "certificationExpiryDescription": "HTTPS監視のTLS証明書が以下の期限を迎えたときに通知を送信します。", - "Setup Docker Host": "Docker ホストを設定", - "Connection Type": "接続タイプ", - "Docker Daemon": "Docker デーモン", - "deleteDockerHostMsg": "すべての監視のDocker ホストを削除してもよろしいですか?", - "socket": "ソケット", - "tcp": "TCP / HTTP", - "Docker Container": "Docker コンテナー", - "Container Name / ID": "コンテナ名 / ID", - "Docker Host": "Docker ホスト", - "Docker Hosts": "Docker ホスト", - "Domain": "ドメイン", - "telegramSendSilently": "通知せずに送信", - "telegramSendSilentlyDescription": "通知せずにメッセージを送信します。通知音がなりません。", - "supportTelegramChatID": "チャットやグループ、チャンネルのチャットIDに対応", - "wayToGetTelegramChatID": "ボットにメッセージを送信し、以下のURLを開くとチャットIDのchat_idを入手できます。", - "chatIDNotFound": "チャットIDが存在しません。最初にメッセージをボットに送信してください", - "disableCloudflaredNoAuthMsg": "認証が無効化されているため、パスワードは必要ありません。", - "API Keys": "APIキー管理", - "Expiry": "期限切れ", - "Expiry date": "有効期限", - "No API Keys": "API Keyがありません", - "deleteAPIKeyMsg": "本当にこのAPIキーを削除しますか?", - "Generate": "生成", - "pauseMaintenanceMsg": "本当に一時停止しますか?", - "maintenanceStatus-under-maintenance": "メンテナンス中", - "secureOptionNone": "None / STARTTLS (25, 587)", - "smtp": "Email (SMTP)", - "Bot Display Name": "BOTの表示名", - "Prefix Custom Message": "メッセージの先頭に送信する文章", - "endpoint": "エンドポイント", - "Proxy Protocol": "Proxy Protocol", - "Google Analytics ID": "Google アナリティクス ID", - "Frontend Version do not match backend version!": "フロントエンドとバックエンドのバージョンが一致しません!", - "or": "または", - "Frontend Version": "フロントエンドのバージョン", - "promosmsPassword": "APIパスワード", - "Notification Sound": "通知音", - "Clone Monitor": "監視の複製", - "Clone": "複製", - "cloneOf": "{0} の複製", - "Hello @everyone is...": "Hello {'@'}everyone is…", - "Icon URL": "アイコンURL", - "affectedStatusPages": "メンテナンスメッセージを選択したステータスページに表示する", - "GoogleChat": "Google Chat (Google Workspace 限定)", - "pushyToken": "デバイストークン", - "SMS Type": "SMSタイプ", - "Proxy Server": "Proxy Server", - "smtpDkimDomain": "ドメイン名", - "Uptime Kuma URL": "Uptime Kuma URL", - "Channel Name": "チャンネル名", - "smtpDkimSettings": "DKIM設定", - "Server Address": "サーバーアドレス", - "strategyManual": "手動で有効/無効を切り替える", - "warningTimezone": "サーバーのタイムゾーンを使用します", - "weekdayShortMon": "月", - "weekdayShortTue": "火", - "weekdayShortWed": "水", - "weekdayShortFri": "金", - "weekdayShortSat": "土", - "weekdayShortSun": "日", - "dayOfWeek": "曜日ごと", - "dayOfMonth": "日にちごと", - "maintenanceStatus-inactive": "無効", - "maintenanceStatus-scheduled": "スケジュール済み", - "maintenanceStatus-ended": "終了済み", - "maintenanceStatus-unknown": "不明", - "Server Timezone": "サーバータイムゾーン", - "IconUrl": "アイコンURL", - "Enable DNS Cache": "(非推奨) HTTP(s)の監視に対しDNSキャッシュを有効にする", - "Enable": "有効", - "Disable": "無効", - "Schedule Maintenance": "スケジュールメンテナンス", - "loadingError": "データを取得できません。後でもう一度試してください。", - "uninstall": "アンインストール", - "installing": "インストール中", - "Ignore TLS Error": "TLS エラーを無視", - "smtpCC": "CC", - "secureOptionTLS": "TLS (465)", - "smtpBCC": "BCC", - "Discord Webhook URL": "Discord ウェブフック URL", - "wayToCheckSignalURL": "こちらから設定方法を確認できます:", - "Number": "Number", - "Line Developers Console": "Line Developers Console", - "Access Token": "アクセストークン", - "Channel access token": "チャンネルアクセストークン", - "enableGRPCTls": "TLS接続でgRPCリクエストを送信できるようにする", - "Messaging API": "Messaging API", - "dnsPortDescription": "DNSサーバーポートのデフォルトは53です。ポートはいつでも変更可能です。", - "Device": "デバイス", - "Event type:": "イベントタイプ:", - "here": "こちら", - "weekdayShortThu": "木", - "plugin": "プラグイン", - "No Maintenance": "メンテナンスはありません", - "dnsCacheDescription": "一部のIPv6環境では動作しない場合があります。問題が発生した場合は無効にしてください。", - "uninstalling": "アンインストール中", - "confirmUninstallPlugin": "本当にこのプラグインをアンインストールしていいですか?", - "wayToGetDiscordURL": "サーバー設定 -> 連携サービス -> ウェブフックを確認 -> 新しいウェブフック から新たに取得できます", - "wayToGetTeamsURL": "ウェブフックの作成方法は {0}", - "wayToGetZohoCliqURL": "ウェブフックの作成方法は {0}", - "confirmDeleteTagMsg": "このタグを本当に削除してよろしいですか?このタグが付けられたモニターは削除されません。", - "deleteMaintenanceMsg": "このメンテナンスを本当に削除していいですか?", - "promosmsLogin": "APIログイン名", - "pushyAPIKey": "シークレットAPI Key", - "Message Title": "メッセージタイトル", - "Setup Proxy": "プロキシを設定する", - "Proxy server has authentication": "プロキシサーバーは認証が必要", - "Edit Tag": "タグを編集", - "Add API Key": "API Keyを追加", - "Expires": "有効期限", - "disableAPIKeyMsg": "本当にこのAPIキーを無効化しますか?", - "install": "インストール", - "affectedMonitorsDescription": "メンテナンスによって影響を受けるモニターを選択してください", - "default: notify all devices": "デフォルト:すべてのデバイスに通知する", - "Trigger type:": "トリガータイプ:", - "Event data:": "イベントデータ:", - "backupOutdatedWarning": "非推奨: 多くの機能に変更があり、バックアップ機能の開発が一部滞っているため、完全なバックアップの作成や復元ができません。", - "backupRecommend": "代わりにボリュームまたはデータフォルダ(./data/)を直接バックアップしてください。", - "recurringInterval": "インターバル", - "Recurring": "繰り返し", - "lineDevConsoleTo": "Line Developers Console - {0}", - "Basic Settings": "基本設定", - "User ID": "User ID", - "Huawei": "Huawei", - "Device Token": "デバイストークン", - "recurringIntervalMessage": "毎日1回実行する|{0} 日に1回実行する", - "Add New Tag": "新しいタグを追加", - "statusPageMaintenanceEndDate": "終了日", - "Body Encoding": "ボディエンコード", - "Learn More": "さらに詳しく", - "infiniteRetention": "保持期間を無制限にしたい場合は、0に設定してください。", - "Display Timezone": "表示タイムゾーン", - "startDateTime": "開始日時", - "User Key": "ユーザーキー", - "SecretKey": "シークレットキー", - "Home": "ホーム", - "webhookBodyCustomOption": "カスタムbody", - "octopushPhoneNumber": "電話番号 (初期フォーマット, 例: +33612345678) ", - "Topic": "トピック", - "pushoverMessageTtl": "メッセージTTL(秒)", - "apiCredentials": "API認証情報", - "Economy": "エコノミー", - "statusPageRefreshIn": "{0}後に再読み込みします", - "filterActivePaused": "停止中", - "filterActive": "有効", - "Example:": "例: {0}", - "Read more:": "さらに: {0}", - "Status:": "ステータス: {0}", - "Enable TLS": "TLS 有効", - "AccessKeyId": "アクセスキーID", - "SecretAccessKey": "アクセスキーシークレット", - "PhoneNumbers": "携帯電話番号", - "Date and Time": "日時", - "chromeExecutableAutoDetect": "自動検出", - "More info on:": "詳細はこちら: {0}", - "Cannot connect to the socket server": "ソケットサーバーに接続できません", - "Reconnecting...": "再接続中...", - "endDateTime": "終了日時", - "cronSchedule": "スケジュール ", - "Edit Maintenance": "メンテナンスの編集", - "WebHookUrl": "ウェブフックUrl", - "Notification Service": "通知サービス", - "atLeastOneMonitor": "最低一つは影響を受けるモニターを選択してください", - "Json Query": "Jsonクエリ", - "octopushSMSSender": "SMS送信者名:3~11文字の英数字とスペース(a~zA~z0~9)", - "Lowcost": "低コスト", - "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "通知サービスの一覧からデバイス名を見つけるには、Home Assistantの「開発者ツール > サービス」から通知で検索してください。", - "Notify Channel": "通知チャンネル", - "Icon Emoji": "絵文字アイコン", - "setupDatabaseChooseDatabase": "どのデータベースを使いたいですか?", - "setupDatabaseEmbeddedMariaDB": "何も設定する必要はありません。この Docker イメージは設定済みの MariaDB が組み込まれています。Uptime Kuma はこのデータベースに unix ソケットを通じて接続します。", - "setupDatabaseSQLite": "小規模な開発のために推奨される小さなデータベースファイルです。v2.0.0 以前は、Uptime Kuma は SQLite を標準のデータベースとして使用していました。", - "tailscalePingWarning": "Tailscale Ping モニターを使用するためには、Uptime Kuma を Docker を利用せずインストールし、そのうえで Tailscale Client をサーバーにインストールしてください。", - "invertKeywordDescription": "キーワードが含まれているものではなく、含まれないものを探します。", - "setupDatabaseMariaDB": "外部の MariaDB データベースに接続するためには、データベースの接続情報を設定する必要があります。", - "dbName": "データベース名", - "Request Timeout": "リクエストタイムアウト", - "timeoutAfter": "{0} 秒後にタイムアウト", - "selectedMonitorCount": "選択済み: {0}", - "Long-Lived Access Token": "長期アクセストークン", - "Invert Keyword": "「含まない」キーワード", - "Expected Value": "期待値", - "dataRetentionTimeError": "保持期間は 0 か、それ以上である必要があります", - "settingUpDatabaseMSG": "データベースをセットアップしています。しばらくお待ちください。", - "Check/Uncheck": "選択あり/なし", - "Alphanumeric (recommended)": "半角英数字(推奨)", - "GrafanaOncallUrl": "Grafana オンコール URL", - "Command": "コマンド", - "Browser Screenshot": "ブラウザ・スクリーンショット", - "mongodbCommandDescription": "データベースに対して MongoDB コマンドを実行します。使用できるコマンドについては {documentation} を参照ください", - "2faDisabled": "二要素認証 (2FA) を無効にしました。", - "Telephone number": "電話番号", - "remoteBrowsersDescription": "リモートブラウザは Chromium を実行するための代替手段です。ローカルで実行する代わりに、browserless.io のようなサービスや、独自のサービスに接続します", - "max 15 digits": "最大15桁", - "What is a Remote Browser?": "リモート・ブラウザとは何ですか?", - "Remote Browsers": "リモート・ブラウザ", - "Remote Browser": "リモート・ブラウザ", - "wayToGetSevenIOApiKey": "app.seven.io > developer > api key > 緑色の追加ボタンの下にあるダッシュボードをご覧ください", - "senderSevenIO": "番号もしくは名前を送信しています", - "receiverSevenIO": "番号を受信しています", - "Search monitored sites": "監視対象サイトの検索", - "liquidIntroduction": "Templatability は Liquid テンプレート言語を利用します。使い方は {0} をご覧ください。以下は利用可能な変数です:", - "templateMsg": "通知の内容", - "templateHeartbeatJSON": "死活監視 (heartbeat) を記述している JSON オブジェクト", - "templateMonitorJSON": "監視対象を記述している JSON オブジェクト", - "Remove the expiry notification": "有効期限の通知日を削除する", - "authInvalidToken": "無効なトークンです。", - "authIncorrectCreds": "無効なユーザー名かパスワードです。", - "self-hosted container": "セルフ・ホストのコンテナ", - "useRemoteBrowser": "リモート・ブラウザを使う", - "Add a Remote Browser": "リモート・ブラウザを追加する", - "remoteBrowserToggle": "デフォルトでは、Chromium は Uptime Kuma コンテナ内で実行されます。このスイッチを切り替えることで、リモート・ブラウザを使用できます。", - "Remote Browser not found!": "リモート・ブラウザがありません!", - "Select message type": "メッセージ・タイプを選択してください", - "Send to channel": "チャンネルに送信", - "Create new forum post": "新規フォーラムに投稿", - "needSignalAPI": "REST API に対応したシグナリング用のクライアントが必要です。", - "aboutIconURL": "「アイコン URL」に画像へのリンクを指定することで、デフォルトのプロフィール画像を上書きすることができます。「アイコン絵文字」が指定されている場合は使用されません。", - "octopushAPIKey": "コントロールパネルの HTTP API 認証情報にある「API キー」", - "2faEnabled": "二要素認証 (2FA) を有効にしました。", - "successAdded": "正常に追加されました。", - "successResumed": "正常に再開しました。", - "2faAlreadyEnabled": "二要素認証 (2FA) は、すでに有効になっています。", - "successDeleted": "正常に削除しました。", - "successPaused": "正常に一時停止しました。", - "successAuthChangePassword": "正常にパスワードを更新しました。", - "successEdited": "正常に編集できました。", - "successBackupRestored": "正常にバックアップから復元しました。", - "successEnabled": "正常に有効化しました。", - "tagNotFound": "タグが見つかりませんでした。", - "foundChromiumVersion": "Chromium/Chrome を見つけました。 Version: {0}", - "Select": "選択", - "Add a new expiry notification day": "有効期限の通知日を追加する", - "emailCustomSubject": "カスタム・トピック", - "emailTemplateMsg": "通知の内容", - "To Email": "Email へ", - "emailTemplateLimitedToUpDownNotification": "UP/DOWN 死活監視 (heartbeat) の場合のみ有効", - "deleteRemoteBrowserMessage": "本当にこのリモートブラウザをすべての監視から削除しますか?", - "Refresh Interval": "更新間隔", - "Refresh Interval Description": "ステータスページは{0}秒ごとに全面更新されます", - "wayToGetLineChannelToken": "まず {0} にアクセスし、プロバイダーとチャネル(Messaging API)を作成します。次に、上記のメニューからアクセストークンとチャネルのユーザー ID を取得します。", - "aboutMattermostChannelName": "「チャンネル名」フィールドにチャンネル名を入力することで、Webhook から送信されるデフォルトのチャンネル名を上書きできます。これは Mattermost の Webhook 設定で有効にしておく必要があります。例 #other-channel", - "Saved.": "保存しました。", - "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "接続するサーバーのホスト名を入力するか、{local_mta} を使用する場合は {localhost} を入力します", - "e.g. {discordThreadID}": "例 {discordThreadID}", - "postToExistingThread": "既存のスレッド/フォーラムに投稿", - "forumPostName": "投稿先のフォーラム名", - "threadForumPostID": "投稿先のスレッド/フォーラム ID", - "whatHappensAtForumPost": "新規フォーラム投稿。既存の投稿がある場合は投稿しません。既存の投稿の中に投稿を作成するには「{option}」を使用してください", - "emailTemplateHeartbeatJSON": "死活監視 (heartbeat) を記述している JSON オブジェクト", - "leave blank for default subject": "空の場合はデフォルトの件名を使用します", - "cellsyntSplitLongMessages": "長文メッセージは最大 6 つに分割してください。153 x 6 = 918文字です。", - "Allow Long SMS": "ロングコード SMS を許可する", - "cellsyntDestination": "受信者の電話番号。00 に続けて国番号を付ける国際形式である必要があります。たとえば、英国の番号 07920 110 000 の場合は 00447920110000(合計17桁まで)になります。HTTP リクエストごとに指定できる受信者数は、カンマ区切りで最大 25,000 件です。", - "emailTemplateMonitorJSON": "監視対象を記述している JSON オブジェクト", - "successDisabled": "正常に無効化しました。", - "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "長期アクセストークンは、プロフィール名(左下)をクリックし、下にスクロールして「トークンを作成」をクリックすると作成できます。 ", - "Effective Date Range": "有効範囲(オプション)", - "DateTime Range": "日付範囲", - "Maintenance Time Window of a Day": "今日のメンテナンス時間のウィンドウ", - "octopushLogin": "コントロールパネルの HTTP API 認証情報にある「ログイン」", - "notificationRegional": "特殊地域", - "pushOthers": "その他", - "Host URL": "ホストURL", - "enableNSCD": "NSCD (Name Service Cache Daemon) を有効にして、すべての DNS クエリをキャッシュする", - "successKeywordExplanation": "成功としてカウントされる MQTT のキーワード", - "DockerHostRequired": "この監視の Docker ホストを設定してください。", - "noDockerHostMsg": "利用できません。Docker ホストを先にセットアップしてください。", - "styleElapsedTime": "経過時間を監視バーの下に表示", - "styleElapsedTimeShowNoLine": "表示(改行なし)", - "styleElapsedTimeShowWithLine": "表示(改行あり)", - "lastDay": "最終日", - "lastDay1": "月末", - "lastDay2": "月末の 2 日前", - "lastDay3": "月末の 3 日前", - "lastDay4": "月末の 4 日前", - "chromeExecutable": "Chrome/Chromium の実行ファイル", - "chromeExecutableDescription": "Docker を使用しており、Chromium がインストールされていない場合、インストールしてからテスト結果の表示するのに数分かかることがあります。1 GB の容量を必要とします。", - "jsonQueryDescription": "応答に対して json クエリを実行し、値が期待されたものであるか確認します(戻り値は比較の際文字列に変換されます)。 クエリ言語のドキュメントについては、{0}を参照してください。{1}にプレイグラウンドがあります。", - "leave blank for default body": "デフォルトの本文を使用するには空のままにしてください", - "apprise": "Apprise (50以上の通知サービスをサポートしています)", - "Apprise URL": "AppriseのURL", - "emailTemplateHostnameOrURL": "ホスト名またはURL", - "emailCustomisableContent": "カスタマイズ可能なコンテンツ", - "emailCustomBody": "カスタム本文", - "emailTemplateServiceName": "サービス名", - "smtpLiquidIntroduction": "次の 2 つのテンプレート・フィールドは Liquid テンプレート言語で記述できます。これらの使い方は {0} にあります。以下は利用可能な変数です:", - "emailTemplateStatus": "ステータス" -} +{ + "languageName": "日本語", + "checkEverySecond": "{0}秒ごとにチェックします", + "retriesDescription": "サービスが完全に停止したと判断し、通知を送信する前に再接続を試みる最大回数", + "ignoreTLSError": "HTTPS ウェブサイトの TLS/SSL エラーを無視する", + "upsideDownModeDescription": "稼働ステータスを反転して扱います。サービスに接続可能な場合は、停止として扱います。", + "maxRedirectDescription": "必要な場合にリダイレクトする最大回数です。リダイレクトを無効にしたい場合は、0に設定してください。", + "acceptedStatusCodesDescription": "成功した応答とみなされるステータスコードを選択する。", + "passwordNotMatchMsg": "繰り返しのパスワードが一致しません。", + "notificationDescription": "監視を機能させるには、監視に通知を割り当ててください。", + "keywordDescription": "プレーンHTMLまたはJSON応答でキーワードを検索し、大文字と小文字を区別します。", + "pauseDashboardHome": "一時停止", + "deleteMonitorMsg": "この監視を削除してよろしいですか?", + "deleteNotificationMsg": "全ての監視のこの通知を削除してよろしいですか?", + "resolverserverDescription": "Cloudflareがデフォルトのサーバーですが、いつでもリゾルバサーバーを変更できます。", + "rrtypeDescription": "監視するRRタイプを選択します", + "pauseMonitorMsg": "一時停止しますか?", + "Settings": "設定", + "Dashboard": "ダッシュボード", + "New Update": "新しいアップデート", + "Language": "言語", + "Appearance": "外観", + "Theme": "テーマ", + "General": "全般", + "Version": "バージョン", + "Check Update On GitHub": "GitHubでアップデートを確認する", + "List": "一覧", + "Add": "追加", + "Add New Monitor": "監視の追加", + "Quick Stats": "統計", + "Up": "正常", + "Down": "停止", + "Pending": "中止", + "Unknown": "不明", + "Pause": "一時停止", + "Name": "名前", + "Status": "ステータス", + "DateTime": "日時", + "Message": "メッセージ", + "No important events": "重要なイベントなし", + "Resume": "再開", + "Edit": "編集", + "Delete": "削除", + "Current": "現在", + "Uptime": "稼働時間", + "Cert Exp.": "証明書有効期限", + "day": "日 | 日間", + "-day": "-日", + "hour": "時間", + "-hour": "時間", + "Response": "レスポンス", + "Ping": "Ping", + "Monitor Type": "監視タイプ", + "Keyword": "キーワード", + "Friendly Name": "分かりやすい名前", + "URL": "URL", + "Hostname": "ホスト名", + "Port": "ポート", + "Heartbeat Interval": "監視間隔", + "Retries": "再試行回数", + "Advanced": "詳細設定", + "Upside Down Mode": "反転モード", + "Max. Redirects": "最大リダイレクト数", + "Accepted Status Codes": "正常なステータスコード", + "Save": "保存", + "Notifications": "通知", + "Not available, please setup.": "利用できません。設定が必要です。", + "Setup Notification": "通知設定", + "Light": "ライト", + "Dark": "ダーク", + "Auto": "自動", + "Theme - Heartbeat Bar": "テーマ - 監視バー", + "Normal": "通常", + "Bottom": "下部", + "None": "なし", + "Timezone": "タイムゾーン", + "Search Engine Visibility": "検索エンジンでの表示", + "Allow indexing": "インデックス作成を許可する", + "Discourage search engines from indexing site": "検索エンジンにインデックスさせないようにする", + "Change Password": "パスワード変更", + "Current Password": "現在のパスワード", + "New Password": "新しいパスワード", + "Repeat New Password": "確認のため新しいパスワードをもう一度", + "Update Password": "パスワードの更新", + "Disable Auth": "認証の無効化", + "Enable Auth": "認証の有効化", + "Logout": "ログアウト", + "Leave": "作業を中止する", + "I understand, please disable": "理解した上で無効化する", + "Confirm": "確認", + "Yes": "はい", + "No": "いいえ", + "Username": "ユーザー名", + "Password": "パスワード", + "Remember me": "ログインしたままにする", + "Login": "ログイン", + "No Monitors, please": "監視がありません", + "add one": "add one", + "Notification Type": "通知タイプ", + "Email": "Eメール", + "Test": "テスト", + "Certificate Info": "証明書情報", + "Resolver Server": "問い合わせ先DNSサーバ", + "Resource Record Type": "DNSレコード設定", + "Last Result": "最終結果", + "Create your admin account": "Adminアカウントの作成", + "Repeat Password": "パスワード確認", + "respTime": "応答時間 (ms)", + "notAvailableShort": "N/A", + "Create": "作成", + "clearEventsMsg": "この監視のすべての記録を削除してもよろしいですか?", + "clearHeartbeatsMsg": "この監視のすべての異常記録を削除してもよろしいですか?", + "confirmClearStatisticsMsg": "すべての統計を削除してもよろしいですか?", + "Clear Data": "データを削除", + "Events": "統計", + "Heartbeats": "異常記録", + "Auto Get": "自動取得", + "enableDefaultNotificationDescription": "監視を作成するごとに、この通知方法はデフォルトで有効になります。監視ごとに通知を無効にすることもできます。", + "Default enabled": "デフォルトで有効にする", + "Also apply to existing monitors": "既存のモニターにも適用する", + "Export": "エクスポート", + "Import": "インポート", + "backupDescription": "すべての監視と通知設定をJSONファイルとしてバックアップすることができます。", + "backupDescription2": "※ 履歴と統計のデータはバックアップされません。", + "backupDescription3": "通知に使用するトークンなどの機密データも含まれています。注意して扱ってください。", + "alertNoFile": "インポートするファイルを選択してください。", + "alertWrongFileType": "JSONファイルを選択してください。", + "twoFAVerifyLabel": "トークンを入力して、2段階認証を有効にします。", + "tokenValidSettingsMsg": "トークンの確認が完了しました! 「保存」をしてください。", + "confirmEnableTwoFAMsg": "2段階認証を「有効」にします。よろしいですか?", + "confirmDisableTwoFAMsg": "2段階認証を「無効」にします。よろしいですか?", + "Apply on all existing monitors": "既存のすべてのモニターに適用する", + "Verify Token": "認証する", + "Setup 2FA": "二要素認証 (2FA) の設定", + "Enable 2FA": "2段階認証を有効にする", + "Disable 2FA": "2段階認証を無効にする", + "2FA Settings": "2段階認証の設定", + "Two Factor Authentication": "2段階認証", + "Clear all statistics": "すべての記録を削除", + "retryCheckEverySecond": "{0} 秒ごとにリトライします", + "importHandleDescription": "同じ名前のすべての監視または通知方法を上書きしない場合は、「既存のをスキップ」を選択します。 「上書きする」は、既存のすべてのモニターと通知を削除します。", + "confirmImportMsg": "バックアップをインポートしてもよろしいですか?希望するオプションを選択してください。", + "Heartbeat Retry Interval": "異常検知後の再試行間隔", + "Import Backup": "バックアップのインポート", + "Export Backup": "バックアップのエクスポート", + "Skip existing": "既存のをスキップする", + "Overwrite": "上書きする", + "Options": "オプション", + "Keep both": "どちらも保持する", + "Tags": "タグ", + "Add New below or Select...": "新規追加または選択…", + "Tag with this name already exist.": "この名前のタグはすでに存在しています。", + "Tag with this value already exist.": "この値のタグはすでに存在しています。", + "color": "色", + "value (optional)": "値 (optional)", + "Search...": "検索…", + "Avg. Ping": "平均Ping時間", + "Avg. Response": "平均応答時間", + "Entry Page": "エントリーページ", + "statusPageNothing": "ここには何もありません。グループまたは監視を追加してください。", + "No Services": "サービス無し", + "All Systems Operational": "すべてのサービスが稼働中", + "Partially Degraded Service": "部分的にサービスが停止中", + "Degraded Service": "サービスが停止中", + "Add Group": "グループの追加", + "Add a monitor": "監視の追加", + "Edit Status Page": "ステータスページ編集", + "Go to Dashboard": "ダッシュボード", + "Status Page": "ステータスページ", + "Status Pages": "ステータスページ", + "Shrink Database": "データベースの縮小", + "Start": "始める", + "Retry": "リトライ", + "Please read": "次のリンクを参考にしてください", + "Orange": "橙", + "Gateway Type": "ゲートウェイの種類", + "Game": "ゲーム", + "Help": "ヘルプ", + "Maintenance": "メンテナンス", + "resendDisabled": "再送信不可", + "Schedule maintenance": "メンテナンスのスケジュール", + "Affected Monitors": "影響を受けるモニター", + "Pick Affected Monitors...": "影響を受けるモニターを選択…", + "Start of maintenance": "メンテナンス開始", + "General Monitor Type": "汎用モニタータイプ", + "resendEveryXTimes": "{0}回ごとに再送信", + "markdownSupported": "マークダウン構文がサポートされています", + "All Status Pages": "すべてのステータス ページ", + "Monitor": "モニター |モニター", + "Resend Notification if Down X times consequently": "ダウンX回連続で通知再送", + "Push URL": "プッシュ URL", + "needPushEvery": "{0} 秒ごとにこの URL を呼び出す必要があります。", + "pushOptionalParams": "オプションのパラメーター: {0}", + "disableauth.message1": "{disableAuth}にしてもよろしいですか?", + "disable authentication": "認証を無効", + "disableauth.message2": "これは、Cloudflare Access、Authelia、またはその他の認証メカニズムなど、Uptime Kuma の前に{intendThirdPartyAuth}。", + "where you intend to implement third-party authentication": "サードパーティ認証を実装するシナリオ向けに設計されています", + "Please use this option carefully!": "このオプションは慎重に使用してください!", + "Primary Base URL": "プライマリ ベース URL", + "statusMaintenance": "メンテナンス", + "Passive Monitor Type": "パッシブモニタータイプ", + "Specific Monitor Type": "特定のモニターの種類", + "Security": "セキュリティ", + "Steam API Key": "Steam API Key", + "Default": "デフォルト", + "Title": "タイトル", + "No status pages": "ステータスページがありません", + "Proxy": "プロキシ", + "Date Created": "作成日", + "Content Type": "コンテンツタイプ", + "webhookAdditionalHeadersTitle": "追加ヘッダー", + "Server URL": "Server URL", + "Priority": "優先順位", + "Read more": "続きを読む", + "Show Tags": "タグを表示", + "Switch to Dark Theme": "ダークテーマに切り替える", + "Token": "Token", + "Show URI": "URIを表示する", + "Gray": "灰色", + "Red": "赤色", + "Green": "緑色", + "Blue": "青色", + "Indigo": "藍色", + "Purple": "紫色", + "Pink": "ピンク", + "Required": "必須", + "Select status pages...": "ステータスページを選択してください…", + "webhookAdditionalHeadersDesc": "Webhook で送信される追加ヘッダーを設定します。各ヘッダーは JSON の key/value 型で定義されている必要があります。", + "Webhook URL": "Webhook URL", + "Application Token": "Application Token", + "steamApiKeyDescription": "Steam Game Server を監視するためには、Steam Web-API キーが必要です。APIキーの登録はこちらから行えます。 ", + "Monitor History": "監視履歴", + "clearDataOlderThan": "監視履歴データを {0} 日間、保持します。", + "PasswordsDoNotMatch": "パスワードが一致していません。", + "Current User": "現在のユーザー", + "topic": "トピック", + "Info": "Info", + "Create Incident": "インシデントを作成", + "Content": "内容", + "Please input title and content": "タイトルと内容を入力してください", + "Last Updated": "最終アップデート日時", + "Unpin": "ピンを外す", + "Switch to Light Theme": "ライトテーマに切り替える", + "Hide Tags": "タグを隠す", + "Description": "メモ", + "Untitled Group": "名前の無いグループ", + "Services": "サービス", + "Discard": "破棄", + "Cancel": "キャンセル", + "Powered by": "Powered by", + "Customize": "カスタマイズ", + "Custom Footer": "カスタムフッター", + "Custom CSS": "カスタム CSS", + "deleteStatusPageMsg": "本当にこのステータスページを削除しますか?", + "Proxies": "プロキシ", + "default": "デフォルト", + "enabled": "有効", + "setAsDefault": "デフォルトに設定する", + "deleteProxyMsg": "本当にすべてのモニターからこのプロキシを削除しますか?", + "proxyDescription": "プロキシはモニターに割り当てられていないと機能しません。", + "setAsDefaultProxyDescription": "このプロキシは、新しいモニターに対してデフォルトで有効になっています。モニターごとに個別にプロキシを無効にすることができます。", + "Remove Token": "Tokenを削除", + "Stop": "停止", + "Add New Status Page": "新しいステータスページを追加", + "Next": "次へ", + "No Proxy": "プロキシなし", + "Authentication": "認証", + "HTTP Basic Auth": "HTTPベーシック認証", + "New Status Page": "新しいステータスページ", + "Page Not Found": "ページが見つかりません", + "Reverse Proxy": "リバースプロキシ", + "Backup": "バックアップ", + "About": "About", + "cloudflareWebsite": "Cloudflare Website", + "Don't know how to get the token? Please read the guide:": "トークンの取得方法が分かりませんか?ガイドをお読みください。", + "Custom": "カスタム", + "Created": "作成日時", + "Resend Notification if Down X times consecutively": "X回連続でダウンしたら通知を再送する", + "webhookJsonDesc": "{0}はExpress.jsのような最新のHTTPサーバに適しています", + "webhookFormDataDesc": "{multipart}はPHPに適しています。このJSONは{decodeFunction}でデコードする必要があります", + "appriseInstalled": "Appriseはインストール済みです。", + "emojiCheatSheet": "絵文字一覧: {0}", + "Inactive": "無効", + "defaultNotificationName": "{notification} 通知 ({number})", + "Post URL": "Post URL", + "Active": "有効", + "Pick a RR-Type...": "RR-Typeを選択…", + "Pick Accepted Status Codes...": "正常なステータスコードを選択…", + "appriseNotInstalled": "Apprise はインストールされていません。{0}", + "Method": "方式", + "Body": "ボディ", + "Headers": "ヘッダー", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "リクエストヘッダーのJSONが無効です: ", + "BodyInvalidFormat": "リクエストボディのJSONが無効です: ", + "records": "レコード", + "One record": "レコード", + "topicExplanation": "監視するMQTTトピック", + "successMessage": "成功メッセージ", + "successMessageExplanation": "成功したとみなされるMQTTメッセージ", + "recent": "直近", + "Done": "完了", + "HTTP Options": "HTTPオプション", + "Style": "スタイル", + "info": "情報", + "warning": "警告", + "Valid To:": "有効期限:", + "Days Remaining:": "残りの有効日数:", + "Issuer:": "発行者:", + "Fingerprint:": "フィンガープリント:", + "Domain Name Expiry Notification": "ドメイン名有効期限通知", + "Footer Text": "フッター文章", + "Show Powered By": "Powered Byを表示", + "Domain Names": "ドメイン名", + "signedInDisp": "{0}としてログイン中", + "RadiusSecret": "Radius シークレット", + "RadiusSecretDescription": "クライアントとサーバー間の共有シークレット", + "RadiusCalledStationId": "Called-Station-Id", + "RadiusCallingStationId": "Calling-Station-Id", + "Subject:": "サブジェクト:", + "trustProxyDescription": "ヘッダー「X-Forwarded-*」を信頼します。Uptime Kumaがリバースプロキシの中にあり、正しいクライアントIPを取得する場合は、有効化してください。", + "Home Assistant URL": "ホームアシスタントURL", + "Examples": "例", + "telegramMessageThreadID": "(オプション) メッセージスレッドID", + "wayToGetLineNotifyToken": "{0}からアクセストークンを入手できます", + "Packet Size": "パケットサイズ", + "Bot Token": "ボットトークン", + "Chat ID": "チャットID", + "critical": "致命的エラー", + "signedInDispDisabled": "認証が無効化されています。", + "RadiusCalledStationIdDescription": "着信側の識別子", + "telegramProtectContent": "転送や保存を制限", + "YOUR BOT TOKEN HERE": "入手したボットトークン", + "API Key": "APIキー", + "Show update if available": "アップデートがあれば表示する", + "Using a Reverse Proxy?": "リバースプロキシを使用中ですか?", + "Go back to the previous page.": "前のページに戻る", + "Coming Soon": "近日公開予定", + "Workstation": "ワークステーション", + "wayToGetTelegramToken": "{0}からトークンを入手できます。", + "telegramMessageThreadIDDescription": "オプションとしてフォーラムのスレッド(話題)のIDを指定してメッセージを送信することができます。スーパーグループでのみ利用できます。", + "telegramProtectContentDescription": "有効な場合、Telegram上のボットのメッセージの転送や保存が制限されます。", + "danger": "危険", + "error": "エラー", + "primary": "プライマリー", + "light": "ライト", + "dark": "ダーク", + "Post": "Post", + "No monitors available.": "監視対象がありません。", + "Add one": "追加", + "No Monitors": "監視対象なし", + "enableProxyDescription": "このプロキシは有効化されない限り、監視リクエストには影響しません。無効化した場合、一時的にプロキシをすべての監視から無効化することができます。", + "Certificate Chain": "証明書チェーン", + "Valid": "有効", + "Invalid": "無効", + "User": "ユーザー", + "Installed": "インストール済み", + "Not installed": "未インストール", + "Running": "稼働中", + "Not running": "停止中", + "Slug": "スラッグ", + "Accept characters:": "使用可能な文字:", + "startOrEndWithOnly": "{0}のみ最初と最後の文字として使用可能", + "No consecutive dashes": "連続したダッシュ記号は使用不可", + "The slug is already taken. Please choose another slug.": "指定されたスラグは既に使用されています。別のスラグを使用してください。", + "wayToGetCloudflaredURL": "({0}からcloudflaredをダウンロード)", + "Message:": "メッセージ:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Cloudflare Tunnelを経由した接続が遮断される可能性があります。停止してもよろしいですか? 確認のため、現在のパスワードを入力してください。", + "HTTP Headers": "HTTPヘッダー", + "Trust Proxy": "信頼できるプロキシ", + "Other Software": "その他のソフトウェア", + "For example: nginx, Apache and Traefik.": "例: nginxやApache、Traefikなど", + "RadiusCallingStationIdDescription": "発信側の識別子", + "Certificate Expiry Notification": "証明書有効期限通知", + "API Username": "APIユーザー名", + "Also check beta release": "ベータ版も表示する", + "Check how to config it for WebSocket": "WebSocketの設定方法について", + "Steam Game Server": "Steamゲームサーバー", + "Most likely causes:": "最も考えられる原因:", + "There might be a typing error in the address.": "アドレスの入力ミスの可能性があります。", + "What you can try:": "対応方法:", + "Retype the address.": "アドレスを入力し直してください。", + "The resource is no longer available.": "存在しないページです。", + "Connection String": "接続文字列", + "Query": "クエリ", + "settingsCertificateExpiry": "TLS証明書の有効期限", + "certificationExpiryDescription": "HTTPS監視のTLS証明書が以下の期限を迎えたときに通知を送信します。", + "Setup Docker Host": "Docker ホストを設定", + "Connection Type": "接続タイプ", + "Docker Daemon": "Docker デーモン", + "deleteDockerHostMsg": "すべての監視のDocker ホストを削除してもよろしいですか?", + "socket": "ソケット", + "tcp": "TCP / HTTP", + "Docker Container": "Docker コンテナー", + "Container Name / ID": "コンテナ名 / ID", + "Docker Host": "Docker ホスト", + "Docker Hosts": "Docker ホスト", + "Domain": "ドメイン", + "telegramSendSilently": "通知せずに送信", + "telegramSendSilentlyDescription": "通知せずにメッセージを送信します。通知音がなりません。", + "supportTelegramChatID": "チャットやグループ、チャンネルのチャットIDに対応", + "wayToGetTelegramChatID": "ボットにメッセージを送信し、以下のURLを開くとチャットIDのchat_idを入手できます。", + "chatIDNotFound": "チャットIDが存在しません。最初にメッセージをボットに送信してください", + "disableCloudflaredNoAuthMsg": "認証が無効化されているため、パスワードは必要ありません。", + "API Keys": "APIキー管理", + "Expiry": "期限切れ", + "Expiry date": "有効期限", + "No API Keys": "API Keyがありません", + "deleteAPIKeyMsg": "本当にこのAPIキーを削除しますか?", + "Generate": "生成", + "pauseMaintenanceMsg": "本当に一時停止しますか?", + "maintenanceStatus-under-maintenance": "メンテナンス中", + "secureOptionNone": "None / STARTTLS (25, 587)", + "smtp": "Email (SMTP)", + "Bot Display Name": "BOTの表示名", + "Prefix Custom Message": "メッセージの先頭に送信する文章", + "endpoint": "エンドポイント", + "Proxy Protocol": "Proxy Protocol", + "Google Analytics ID": "Google アナリティクス ID", + "Frontend Version do not match backend version!": "フロントエンドとバックエンドのバージョンが一致しません!", + "or": "または", + "Frontend Version": "フロントエンドのバージョン", + "promosmsPassword": "APIパスワード", + "Notification Sound": "通知音", + "Clone Monitor": "監視の複製", + "Clone": "複製", + "cloneOf": "{0} の複製", + "Hello @everyone is...": "Hello {'@'}everyone is…", + "Icon URL": "アイコンURL", + "affectedStatusPages": "メンテナンスメッセージを選択したステータスページに表示する", + "GoogleChat": "Google Chat (Google Workspace 限定)", + "pushyToken": "デバイストークン", + "SMS Type": "SMSタイプ", + "Proxy Server": "Proxy Server", + "smtpDkimDomain": "ドメイン名", + "Uptime Kuma URL": "Uptime Kuma URL", + "Channel Name": "チャンネル名", + "smtpDkimSettings": "DKIM設定", + "Server Address": "サーバーアドレス", + "strategyManual": "手動で有効/無効を切り替える", + "warningTimezone": "サーバーのタイムゾーンを使用します", + "weekdayShortMon": "月", + "weekdayShortTue": "火", + "weekdayShortWed": "水", + "weekdayShortFri": "金", + "weekdayShortSat": "土", + "weekdayShortSun": "日", + "dayOfWeek": "曜日ごと", + "dayOfMonth": "日にちごと", + "maintenanceStatus-inactive": "無効", + "maintenanceStatus-scheduled": "スケジュール済み", + "maintenanceStatus-ended": "終了済み", + "maintenanceStatus-unknown": "不明", + "Server Timezone": "サーバータイムゾーン", + "IconUrl": "アイコンURL", + "Enable DNS Cache": "(非推奨) HTTP(s)の監視に対しDNSキャッシュを有効にする", + "Enable": "有効", + "Disable": "無効", + "Schedule Maintenance": "スケジュールメンテナンス", + "loadingError": "データを取得できません。後でもう一度試してください。", + "uninstall": "アンインストール", + "installing": "インストール中", + "Ignore TLS Error": "TLS エラーを無視", + "smtpCC": "CC", + "secureOptionTLS": "TLS (465)", + "smtpBCC": "BCC", + "Discord Webhook URL": "Discord ウェブフック URL", + "wayToCheckSignalURL": "こちらから設定方法を確認できます:", + "Number": "Number", + "Line Developers Console": "Line Developers Console", + "Access Token": "アクセストークン", + "Channel access token": "チャンネルアクセストークン", + "enableGRPCTls": "TLS接続でgRPCリクエストを送信できるようにする", + "Messaging API": "Messaging API", + "dnsPortDescription": "DNSサーバーポートのデフォルトは53です。ポートはいつでも変更可能です。", + "Device": "デバイス", + "Event type:": "イベントタイプ:", + "here": "こちら", + "weekdayShortThu": "木", + "plugin": "プラグイン", + "No Maintenance": "メンテナンスはありません", + "dnsCacheDescription": "一部のIPv6環境では動作しない場合があります。問題が発生した場合は無効にしてください。", + "uninstalling": "アンインストール中", + "confirmUninstallPlugin": "本当にこのプラグインをアンインストールしていいですか?", + "wayToGetDiscordURL": "サーバー設定 -> 連携サービス -> ウェブフックを確認 -> 新しいウェブフック から新たに取得できます", + "wayToGetTeamsURL": "ウェブフックの作成方法は {0}", + "wayToGetZohoCliqURL": "ウェブフックの作成方法は {0}", + "confirmDeleteTagMsg": "このタグを本当に削除してよろしいですか?このタグが付けられたモニターは削除されません。", + "deleteMaintenanceMsg": "このメンテナンスを本当に削除していいですか?", + "promosmsLogin": "APIログイン名", + "pushyAPIKey": "シークレットAPI Key", + "Message Title": "メッセージタイトル", + "Setup Proxy": "プロキシを設定する", + "Proxy server has authentication": "プロキシサーバーは認証が必要", + "Edit Tag": "タグを編集", + "Add API Key": "API Keyを追加", + "Expires": "有効期限", + "disableAPIKeyMsg": "本当にこのAPIキーを無効化しますか?", + "install": "インストール", + "affectedMonitorsDescription": "メンテナンスによって影響を受けるモニターを選択してください", + "default: notify all devices": "デフォルト:すべてのデバイスに通知する", + "Trigger type:": "トリガータイプ:", + "Event data:": "イベントデータ:", + "backupOutdatedWarning": "非推奨: 多くの機能に変更があり、バックアップ機能の開発が一部滞っているため、完全なバックアップの作成や復元ができません。", + "backupRecommend": "代わりにボリュームまたはデータフォルダ(./data/)を直接バックアップしてください。", + "recurringInterval": "インターバル", + "Recurring": "繰り返し", + "lineDevConsoleTo": "Line Developers Console - {0}", + "Basic Settings": "基本設定", + "User ID": "User ID", + "Huawei": "Huawei", + "Device Token": "デバイストークン", + "recurringIntervalMessage": "毎日1回実行する|{0} 日に1回実行する", + "Add New Tag": "新しいタグを追加", + "statusPageMaintenanceEndDate": "終了日", + "Body Encoding": "ボディエンコード", + "Learn More": "さらに詳しく", + "infiniteRetention": "保持期間を無制限にしたい場合は、0に設定してください。", + "Display Timezone": "表示タイムゾーン", + "startDateTime": "開始日時", + "User Key": "ユーザーキー", + "SecretKey": "シークレットキー", + "Home": "ホーム", + "webhookBodyCustomOption": "カスタムbody", + "octopushPhoneNumber": "電話番号 (初期フォーマット, 例: +33612345678) ", + "Topic": "トピック", + "pushoverMessageTtl": "メッセージTTL(秒)", + "apiCredentials": "API認証情報", + "Economy": "エコノミー", + "statusPageRefreshIn": "{0}後に再読み込みします", + "filterActivePaused": "停止中", + "filterActive": "有効", + "Example:": "例: {0}", + "Read more:": "さらに: {0}", + "Status:": "ステータス: {0}", + "Enable TLS": "TLS 有効", + "AccessKeyId": "アクセスキーID", + "SecretAccessKey": "アクセスキーシークレット", + "PhoneNumbers": "携帯電話番号", + "Date and Time": "日時", + "chromeExecutableAutoDetect": "自動検出", + "More info on:": "詳細はこちら: {0}", + "Cannot connect to the socket server": "ソケットサーバーに接続できません", + "Reconnecting...": "再接続中...", + "endDateTime": "終了日時", + "cronSchedule": "スケジュール ", + "Edit Maintenance": "メンテナンスの編集", + "WebHookUrl": "ウェブフックUrl", + "Notification Service": "通知サービス", + "atLeastOneMonitor": "最低一つは影響を受けるモニターを選択してください", + "Json Query": "Jsonクエリ", + "octopushSMSSender": "SMS送信者名:3~11文字の英数字とスペース(a~zA~z0~9)", + "Lowcost": "低コスト", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "通知サービスの一覧からデバイス名を見つけるには、Home Assistantの「開発者ツール > サービス」から通知で検索してください。", + "Notify Channel": "通知チャンネル", + "Icon Emoji": "絵文字アイコン", + "setupDatabaseChooseDatabase": "どのデータベースを使いたいですか?", + "setupDatabaseEmbeddedMariaDB": "何も設定する必要はありません。この Docker イメージは設定済みの MariaDB が組み込まれています。Uptime Kuma はこのデータベースに unix ソケットを通じて接続します。", + "setupDatabaseSQLite": "小規模な開発のために推奨される小さなデータベースファイルです。v2.0.0 以前は、Uptime Kuma は SQLite を標準のデータベースとして使用していました。", + "tailscalePingWarning": "Tailscale Ping モニターを使用するためには、Uptime Kuma を Docker を利用せずインストールし、そのうえで Tailscale Client をサーバーにインストールしてください。", + "invertKeywordDescription": "キーワードが含まれているものではなく、含まれないものを探します。", + "setupDatabaseMariaDB": "外部の MariaDB データベースに接続するためには、データベースの接続情報を設定する必要があります。", + "dbName": "データベース名", + "Request Timeout": "リクエストタイムアウト", + "timeoutAfter": "{0} 秒後にタイムアウト", + "selectedMonitorCount": "選択済み: {0}", + "Long-Lived Access Token": "長期アクセストークン", + "Invert Keyword": "「含まない」キーワード", + "Expected Value": "期待値", + "dataRetentionTimeError": "保持期間は 0 か、それ以上である必要があります", + "settingUpDatabaseMSG": "データベースをセットアップしています。しばらくお待ちください。", + "Check/Uncheck": "選択あり/なし", + "Alphanumeric (recommended)": "半角英数字(推奨)", + "GrafanaOncallUrl": "Grafana オンコール URL", + "Command": "コマンド", + "Browser Screenshot": "ブラウザ・スクリーンショット", + "mongodbCommandDescription": "データベースに対して MongoDB コマンドを実行します。使用できるコマンドについては {documentation} を参照ください", + "2faDisabled": "二要素認証 (2FA) を無効にしました。", + "Telephone number": "電話番号", + "remoteBrowsersDescription": "リモートブラウザは Chromium を実行するための代替手段です。ローカルで実行する代わりに、browserless.io のようなサービスや、独自のサービスに接続します", + "max 15 digits": "最大15桁", + "What is a Remote Browser?": "リモート・ブラウザとは何ですか?", + "Remote Browsers": "リモート・ブラウザ", + "Remote Browser": "リモート・ブラウザ", + "wayToGetSevenIOApiKey": "app.seven.io > developer > api key > 緑色の追加ボタンの下にあるダッシュボードをご覧ください", + "senderSevenIO": "番号もしくは名前を送信しています", + "receiverSevenIO": "番号を受信しています", + "Search monitored sites": "監視対象サイトの検索", + "liquidIntroduction": "Templatability は Liquid テンプレート言語を利用します。使い方は {0} をご覧ください。以下は利用可能な変数です:", + "templateMsg": "通知の内容", + "templateHeartbeatJSON": "死活監視 (heartbeat) を記述している JSON オブジェクト", + "templateMonitorJSON": "監視対象を記述している JSON オブジェクト", + "Remove the expiry notification": "有効期限の通知日を削除する", + "authInvalidToken": "無効なトークンです。", + "authIncorrectCreds": "無効なユーザー名かパスワードです。", + "self-hosted container": "セルフ・ホストのコンテナ", + "useRemoteBrowser": "リモート・ブラウザを使う", + "Add a Remote Browser": "リモート・ブラウザを追加する", + "remoteBrowserToggle": "デフォルトでは、Chromium は Uptime Kuma コンテナ内で実行されます。このスイッチを切り替えることで、リモート・ブラウザを使用できます。", + "Remote Browser not found!": "リモート・ブラウザがありません!", + "Select message type": "メッセージ・タイプを選択してください", + "Send to channel": "チャンネルに送信", + "Create new forum post": "新規フォーラムに投稿", + "needSignalAPI": "REST API に対応したシグナリング用のクライアントが必要です。", + "aboutIconURL": "「アイコン URL」に画像へのリンクを指定することで、デフォルトのプロフィール画像を上書きすることができます。「アイコン絵文字」が指定されている場合は使用されません。", + "octopushAPIKey": "コントロールパネルの HTTP API 認証情報にある「API キー」", + "2faEnabled": "二要素認証 (2FA) を有効にしました。", + "successAdded": "正常に追加されました。", + "successResumed": "正常に再開しました。", + "2faAlreadyEnabled": "二要素認証 (2FA) は、すでに有効になっています。", + "successDeleted": "正常に削除しました。", + "successPaused": "正常に一時停止しました。", + "successAuthChangePassword": "正常にパスワードを更新しました。", + "successEdited": "正常に編集できました。", + "successBackupRestored": "正常にバックアップから復元しました。", + "successEnabled": "正常に有効化しました。", + "tagNotFound": "タグが見つかりませんでした。", + "foundChromiumVersion": "Chromium/Chrome を見つけました。 Version: {0}", + "Select": "選択", + "Add a new expiry notification day": "有効期限の通知日を追加する", + "emailCustomSubject": "カスタム・トピック", + "emailTemplateMsg": "通知の内容", + "To Email": "Email へ", + "emailTemplateLimitedToUpDownNotification": "UP/DOWN 死活監視 (heartbeat) の場合のみ有効", + "deleteRemoteBrowserMessage": "本当にこのリモートブラウザをすべての監視から削除しますか?", + "Refresh Interval": "更新間隔", + "Refresh Interval Description": "ステータスページは{0}秒ごとに全面更新されます", + "wayToGetLineChannelToken": "まず {0} にアクセスし、プロバイダーとチャネル(Messaging API)を作成します。次に、上記のメニューからアクセストークンとチャネルのユーザー ID を取得します。", + "aboutMattermostChannelName": "「チャンネル名」フィールドにチャンネル名を入力することで、Webhook から送信されるデフォルトのチャンネル名を上書きできます。これは Mattermost の Webhook 設定で有効にしておく必要があります。例 #other-channel", + "Saved.": "保存しました。", + "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "接続するサーバーのホスト名を入力するか、{local_mta} を使用する場合は {localhost} を入力します", + "e.g. {discordThreadID}": "例 {discordThreadID}", + "postToExistingThread": "既存のスレッド/フォーラムに投稿", + "forumPostName": "投稿先のフォーラム名", + "threadForumPostID": "投稿先のスレッド/フォーラム ID", + "whatHappensAtForumPost": "新規フォーラム投稿。既存の投稿がある場合は投稿しません。既存の投稿の中に投稿を作成するには「{option}」を使用してください", + "emailTemplateHeartbeatJSON": "死活監視 (heartbeat) を記述している JSON オブジェクト", + "leave blank for default subject": "空の場合はデフォルトの件名を使用します", + "cellsyntSplitLongMessages": "長文メッセージは最大 6 つに分割してください。153 x 6 = 918文字です。", + "Allow Long SMS": "ロングコード SMS を許可する", + "cellsyntDestination": "受信者の電話番号。00 に続けて国番号を付ける国際形式である必要があります。たとえば、英国の番号 07920 110 000 の場合は 00447920110000(合計17桁まで)になります。HTTP リクエストごとに指定できる受信者数は、カンマ区切りで最大 25,000 件です。", + "emailTemplateMonitorJSON": "監視対象を記述している JSON オブジェクト", + "successDisabled": "正常に無効化しました。", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "長期アクセストークンは、プロフィール名(左下)をクリックし、下にスクロールして「トークンを作成」をクリックすると作成できます。 ", + "Effective Date Range": "有効範囲(オプション)", + "DateTime Range": "日付範囲", + "Maintenance Time Window of a Day": "今日のメンテナンス時間のウィンドウ", + "octopushLogin": "コントロールパネルの HTTP API 認証情報にある「ログイン」", + "notificationRegional": "特殊地域", + "pushOthers": "その他", + "Host URL": "ホストURL", + "enableNSCD": "NSCD (Name Service Cache Daemon) を有効にして、すべての DNS クエリをキャッシュする", + "successKeywordExplanation": "成功としてカウントされる MQTT のキーワード", + "DockerHostRequired": "この監視の Docker ホストを設定してください。", + "noDockerHostMsg": "利用できません。Docker ホストを先にセットアップしてください。", + "styleElapsedTime": "経過時間を監視バーの下に表示", + "styleElapsedTimeShowNoLine": "表示(改行なし)", + "styleElapsedTimeShowWithLine": "表示(改行あり)", + "lastDay": "最終日", + "lastDay1": "月末", + "lastDay2": "月末の 2 日前", + "lastDay3": "月末の 3 日前", + "lastDay4": "月末の 4 日前", + "chromeExecutable": "Chrome/Chromium の実行ファイル", + "chromeExecutableDescription": "Docker を使用しており、Chromium がインストールされていない場合、インストールしてからテスト結果の表示するのに数分かかることがあります。1 GB の容量を必要とします。", + "jsonQueryDescription": "応答に対して json クエリを実行し、値が期待されたものであるか確認します(戻り値は比較の際文字列に変換されます)。 クエリ言語のドキュメントについては、{0}を参照してください。{1}にプレイグラウンドがあります。", + "leave blank for default body": "デフォルトの本文を使用するには空のままにしてください", + "apprise": "Apprise (50以上の通知サービスをサポートしています)", + "Apprise URL": "AppriseのURL", + "emailTemplateHostnameOrURL": "ホスト名またはURL", + "emailCustomisableContent": "カスタマイズ可能なコンテンツ", + "emailCustomBody": "カスタム本文", + "emailTemplateServiceName": "サービス名", + "smtpLiquidIntroduction": "次の 2 つのテンプレート・フィールドは Liquid テンプレート言語で記述できます。これらの使い方は {0} にあります。以下は利用可能な変数です:", + "emailTemplateStatus": "ステータス" +} diff --git a/src/lang/pl.json b/src/lang/pl.json index e7e75abbc..aed2123b4 100644 --- a/src/lang/pl.json +++ b/src/lang/pl.json @@ -1,997 +1,997 @@ -{ - "languageName": "Polski", - "checkEverySecond": "Sprawdzaj co {0} sekund", - "retryCheckEverySecond": "Ponawiaj co {0} sekund", - "retriesDescription": "Maksymalna liczba powtórzeń, zanim usługa zostanie oznaczona jako niedostępna i zostanie wysłane powiadomienie", - "ignoreTLSError": "Ignoruj błędy TLS/SSL dla stron HTTPS", - "upsideDownModeDescription": "Odwróć status do góry nogami. Jeśli usługa jest osiągalna, to jest oznaczona jako niedostępna.", - "maxRedirectDescription": "Maksymalna liczba przekierowań do wykonania. Ustaw na 0, aby wyłączyć przekierowania.", - "acceptedStatusCodesDescription": "Wybierz kody stanu, które są uważane za prawidłową odpowiedź.", - "passwordNotMatchMsg": "Powtórzone hasło nie pasuje.", - "notificationDescription": "Proszę przypisać powiadomienie do monitora(ów), aby działało.", - "keywordDescription": "Wyszukiwanie słów kluczowych w zwykłym html lub odpowiedzi JSON. Wielkość liter ma znaczenie.", - "pauseDashboardHome": "Wstrzymane", - "deleteMonitorMsg": "Czy na pewno chcesz usunąć ten monitor?", - "deleteNotificationMsg": "Czy na pewno chcesz usunąć to powiadomienie dla wszystkich monitorów?", - "resolverserverDescription": "Cloudflare jest domyślnym serwerem, możesz zmienić serwer resolver w każdej chwili.", - "rrtypeDescription": "Wybierz rodzaj rekordu, który chcesz monitorować", - "pauseMonitorMsg": "Czy na pewno chcesz wstrzymać monitorowanie?", - "enableDefaultNotificationDescription": "Dla każdego nowego monitora to powiadomienie będzie domyślnie włączone. Nadal możesz wyłączyć powiadomienia osobno dla każdego monitora.", - "clearEventsMsg": "Jesteś pewien, że chcesz wyczyścić historię zdarzeń dla tego monitora?", - "clearHeartbeatsMsg": "Jesteś pewien, że chcesz wyczyścić historię bicia serca dla tego monitora?", - "confirmClearStatisticsMsg": "Jesteś pewien, że chcesz usunąć WSZYSTKIE statystyki?", - "importHandleDescription": "Wybierz 'Pomiń istniejące', jeśli chcesz pominąć każdy monitor lub powiadomienie o tej samej nazwie. 'Nadpisz' spowoduje usunięcie każdego istniejącego monitora i powiadomienia.", - "confirmImportMsg": "Czy na pewno chcesz zaimportować kopię zapasową? Upewnij się, że wybrałeś właściwą opcję importu.", - "twoFAVerifyLabel": "Proszę, podaj swój token 2FA, aby sprawdzić, czy 2FA działa:", - "tokenValidSettingsMsg": "Token jest prawidłowy! Teraz możesz zapisać ustawienia 2FA.", - "confirmEnableTwoFAMsg": "Jesteś pewien, że chcesz włączyć 2FA?", - "confirmDisableTwoFAMsg": "Jesteś pewien, że chcesz wyłączyć 2FA?", - "Settings": "Ustawienia", - "Dashboard": "Panel", - "New Update": "Nowa aktualizacja", - "Language": "Język", - "Appearance": "Wygląd", - "Theme": "Motyw", - "General": "Ogólne", - "Version": "Wersja", - "Check Update On GitHub": "Sprawdź aktualizację na GitHub", - "List": "Lista", - "Add": "Dodaj", - "Add New Monitor": "Dodaj monitor", - "Quick Stats": "Szybki podgląd statystyk", - "Up": "Online", - "Down": "Offline", - "Pending": "Oczekuje", - "Unknown": "Nieznane", - "Pause": "Wstrzymaj", - "Name": "Nazwa", - "Status": "Status", - "DateTime": "Data i godzina", - "Message": "Wiadomość", - "No important events": "Brak ważnych wydarzeń", - "Resume": "Wznów", - "Edit": "Edytuj", - "Delete": "Usuń", - "Current": "Aktualny", - "Uptime": "Czas pracy", - "Cert Exp.": "Data ważności certyfikatu.", - "day": "dzień | dni", - "-day": "dni", - "hour": "godzina", - "-hour": "godzin", - "Response": "Odpowiedź", - "Ping": "Ping", - "Monitor Type": "Rodzaj monitora", - "Keyword": "Słowo kluczowe", - "Friendly Name": "Przyjazna nazwa", - "URL": "URL", - "Hostname": "Nazwa hosta", - "Port": "Port", - "Heartbeat Interval": "Częstotliwość bicia serca", - "Retries": "Prób", - "Heartbeat Retry Interval": "Częstotliwość ponawiania bicia serca", - "Advanced": "Zaawansowane", - "Upside Down Mode": "Tryb odwrócony", - "Max. Redirects": "Maks. przekierowań", - "Accepted Status Codes": "Akceptowane kody statusu", - "Save": "Zapisz", - "Notifications": "Powiadomienia", - "Not available, please setup.": "Niedostępne, proszę skonfigurować.", - "Setup Notification": "Skonfiguruj powiadomienie", - "Light": "Jasny", - "Dark": "Ciemny", - "Auto": "Automatyczny", - "Theme - Heartbeat Bar": "Motyw - pasek bicia serca", - "Normal": "Domyślne", - "Bottom": "Na dole", - "None": "Brak", - "Timezone": "Strefa czasowa", - "Search Engine Visibility": "Widoczność w wyszukiwarce", - "Allow indexing": "Zezwól na indeksowanie", - "Discourage search engines from indexing site": "Zniechęcaj wyszukiwarki do indeksowania strony", - "Change Password": "Zmień hasło", - "Current Password": "Aktualne hasło", - "New Password": "Nowe hasło", - "Repeat New Password": "Powtórz nowe hasło", - "Update Password": "Zaktualizuj hasło", - "Disable Auth": "Wyłącz autoryzację", - "Enable Auth": "Włącz autoryzację", - "disableauth.message1": "Czy na pewno chcesz {disableAuth}?", - "disable authentication": "wyłączyć autoryzację", - "disableauth.message2": "Jest przeznaczony dla {intendThirdPartyAuth} przed Uptime Kuma, taką jak Cloudflare Access.", - "where you intend to implement third-party authentication": "kogoś, kto ma autoryzację zewnętrzną", - "Please use this option carefully!": "Proszę używać tej opcji ostrożnie!", - "Logout": "Wyloguj", - "Leave": "Zostaw", - "I understand, please disable": "Rozumiem, proszę wyłączyć", - "Confirm": "Potwierdź", - "Yes": "Tak", - "No": "Nie", - "Username": "Nazwa użytkownika", - "Password": "Hasło", - "Remember me": "Zapamiętaj mnie", - "Login": "Zaloguj", - "No Monitors, please": "Brak monitorów, proszę", - "add one": "dodać jeden", - "Notification Type": "Rodzaj powiadomienia", - "Email": "E-mail", - "Test": "Test", - "Certificate Info": "Informacje o certyfikacie", - "Resolver Server": "Serwer rozwiązywania nazw", - "Resource Record Type": "Typ rekordu zasobów", - "Last Result": "Ostatni wynik", - "Create your admin account": "Utwórz swoje konto administratora", - "Repeat Password": "Powtórz hasło", - "Import Backup": "Importuj kopię zapasową", - "Export Backup": "Eksportuj kopię zapasową", - "Export": "Eksportuj", - "Import": "Importuj", - "respTime": "Czas odp. (ms)", - "notAvailableShort": "N/D", - "Default enabled": "Włącz domyślnie", - "Apply on all existing monitors": "Zastosuj do istniejących monitorów", - "Create": "Stwórz", - "Clear Data": "Usuń dane", - "Events": "Zdarzenia", - "Heartbeats": "Bicia serca", - "Auto Get": "Wykryj", - "backupDescription": "Możesz wykonać kopię zapasową wszystkich monitorów i wszystkich powiadomień do pliku JSON.", - "backupDescription2": "PS: Historia i dane zdarzeń nie są uwzględniane.", - "backupDescription3": "Poufne dane, takie jak tokeny powiadomień, są zawarte w pliku eksportu, prosimy o ostrożne przechowywanie.", - "alertNoFile": "Wybierz plik do importu.", - "alertWrongFileType": "Proszę wybrać plik JSON.", - "Clear all statistics": "Wyczyść wszystkie statystyki", - "Skip existing": "Pomiń istniejące", - "Overwrite": "Nadpisz", - "Options": "Opcje", - "Keep both": "Zachowaj oba", - "Verify Token": "Zweryfikuj token", - "Setup 2FA": "Konfiguracja 2FA", - "Enable 2FA": "Włącz 2FA", - "Disable 2FA": "Wyłącz 2FA", - "2FA Settings": "Ustawienia 2FA", - "Two Factor Authentication": "Uwierzytelnienie dwuskładnikowe", - "Active": "Włączone", - "Inactive": "Wyłączone", - "Token": "Token", - "Show URI": "Pokaż URI", - "Tags": "Tagi", - "Add New below or Select...": "Dodaj nowy poniżej lub wybierz…", - "Tag with this name already exist.": "Tag o tej nazwie już istnieje.", - "Tag with this value already exist.": "Tag o tej wartości już istnieje.", - "color": "kolor", - "value (optional)": "wartość (opcjonalnie)", - "Gray": "Szary", - "Red": "Czerwony", - "Orange": "Pomarańczowy", - "Green": "Zielony", - "Blue": "Niebieski", - "Indigo": "Indygo", - "Purple": "Fioletowy", - "Pink": "Różowy", - "Search...": "Szukaj…", - "Avg. Ping": "Średni ping", - "Avg. Response": "Średnia odpowiedź", - "Entry Page": "Strona startowa", - "statusPageNothing": "Nic tu nie ma, dodaj grupę lub monitor.", - "No Services": "Brak usług", - "All Systems Operational": "Wszystkie systemy działają poprawnie", - "Partially Degraded Service": "Część usług nie działa", - "Degraded Service": "Usługa nie działa", - "Add Group": "Dodaj grupę", - "Add a monitor": "Dodaj monitor", - "Edit Status Page": "Edytuj stronę statusu", - "Go to Dashboard": "Idź do panelu", - "Status Page": "Strona statusu", - "Status Pages": "Strony statusów", - "defaultNotificationName": "Moje powiadomienie {notification} ({number})", - "here": "tutaj", - "Required": "Wymagane", - "telegram": "Telegram", - "Bot Token": "Token bota", - "wayToGetTelegramToken": "Token można uzyskać z {0}.", - "Chat ID": "Identyfikator czatu", - "supportTelegramChatID": "Czat wsparcia technicznego / Bezpośrednia rozmowa / Czat grupowy", - "wayToGetTelegramChatID": "Możesz uzyskać swój identyfikator czatu, wysyłając wiadomość do bota i przechodząc pod ten adres URL, aby wyświetlić identyfikator czatu:", - "YOUR BOT TOKEN HERE": "TWÓJ TOKEN BOTA", - "chatIDNotFound": "Identyfikator czatu nie znaleziony, najpierw napisz do bota", - "webhook": "Webhook", - "Post URL": "Adres URL", - "Content Type": "Rodzaj danych", - "webhookJsonDesc": "{0} jest dobry w przypadku serwerów HTTP, takich jak express.js", - "webhookFormDataDesc": "{multipart} jest dobry dla PHP, musisz jedynie przetworzyć dane przez {decodeFunction}", - "smtp": "Email (SMTP)", - "secureOptionNone": "Brak / STARTTLS (25, 587)", - "secureOptionTLS": "TLS (465)", - "Ignore TLS Error": "Zignoruj błędy TLS", - "From Email": "Nadawca (OD)", - "To Email": "Odbiorca (DO)", - "smtpCC": "DW", - "smtpBCC": "UDW", - "discord": "Discord", - "Discord Webhook URL": "URL webhook Discorda", - "wayToGetDiscordURL": "Możesz go uzyskać, przechodząc do Ustawienia serwera -> Integracje -> Webhooki -> Tworzenie webhooka", - "Bot Display Name": "Wyświetlana nazwa bota", - "Prefix Custom Message": "Własny początek wiadomości", - "Hello @everyone is...": "Hej {'@'}everyone…", - "teams": "Microsoft Teams", - "Webhook URL": "URL webhooka", - "wayToGetTeamsURL": "Możesz dowiedzieć się, jak utworzyć adres url webhooka {0}.", - "signal": "Signal", - "Number": "Numer", - "Recipients": "Odbiorcy", - "needSignalAPI": "Musisz mieć klienta Signal z REST API.", - "wayToCheckSignalURL": "W celu dowiedzenia się, jak go skonfigurować, odwiedź poniższy link:", - "signalImportant": "UWAGA: Nie można mieszać nazw grup i numerów odbiorców!", - "gotify": "Gotify", - "Application Token": "Token aplikacji", - "Server URL": "Server URL", - "Priority": "Priorytet", - "slack": "Slack", - "Icon Emoji": "Ikona emoji", - "Channel Name": "Nazwa kanału", - "Uptime Kuma URL": "Adres Uptime Kuma", - "aboutWebhooks": "Więcej informacji na temat webhooków: {0}", - "aboutChannelName": "Podaj nazwę kanału {0} w polu Nazwa kanału, jeśli chcesz pominąć kanał webhooka. Np.: #inny-kanal", - "aboutKumaURL": "Jeśli pozostawisz pole Adres Uptime Kuma puste, domyślnie będzie to strona projektu na GitHub.", - "emojiCheatSheet": "Ściąga emoji: {0}", - "rocket.chat": "Rocket.chat", - "pushover": "Pushover", - "pushy": "Pushy", - "PushByTechulus": "Push od Techulus", - "octopush": "Octopush", - "promosms": "PromoSMS", - "lunasea": "LunaSea", - "apprise": "Apprise (obsługuje 50+ usług powiadomień)", - "GoogleChat": "Google Chat (wyłącznie Google Workspace)", - "pushbullet": "Pushbullet", - "line": "Line Messenger", - "mattermost": "Mattermost", - "User Key": "Klucz użytkownika", - "Device": "Urządzenie", - "Message Title": "Tytuł wiadomości", - "Notification Sound": "Dźwięk powiadomienia", - "More info on:": "Więcej informacji na: {0}", - "pushoverDesc1": "Priorytet awaryjny (2) ma domyślny 30-sekundowy limit czasu między kolejnymi próbami i wygaśnie po 1 godzinie.", - "pushoverDesc2": "Jeśli chcesz wysyłać powiadomienia na różne urządzenia, wypełnij pole Urządzenie.", - "SMS Type": "Rodzaj SMS", - "octopushTypePremium": "Premium (szybki - rekomendowany dla powiadomień)", - "octopushTypeLowCost": "Low Cost (wolny, czasami blokowany przez operatorów)", - "Check octopush prices": "Sprawdź ceny Octopush {0}.", - "octopushPhoneNumber": "Numer telefonu (format międzynarodowy np.: +33612345678) ", - "octopushSMSSender": "Nadawca SMS: 3-11 znaków alfanumerycznych i spacji (a-zA-Z0-9)", - "LunaSea Device ID": "Identyfikator urządzenia LunaSea", - "Apprise URL": "URL Apprise", - "Example:": "Przykład: {0}", - "Read more:": "Czytaj dalej: {0}", - "Status:": "Status: {0}", - "Read more": "Czytaj dalej", - "appriseInstalled": "Apprise jest zainstalowane.", - "appriseNotInstalled": "Apprise nie zostało zainstalowane. {0}", - "Access Token": "Token dostępu", - "Channel access token": "Token dostępu kanału", - "Line Developers Console": "Konsola deweloperska Line", - "lineDevConsoleTo": "Konsola deweloperska Line - {0}", - "Basic Settings": "Ustawienia ogólne", - "User ID": "Identyfikator użytkownika", - "Messaging API": "API wiadomości", - "wayToGetLineChannelToken": "Najpierw uzyskaj dostęp do {0}, utwórz dostawcę i kanał (Messaging API), a następnie możesz uzyskać token dostępu do kanału i identyfikator użytkownika z wyżej wymienionych pozycji menu.", - "Icon URL": "Adres Ikony", - "aboutIconURL": "Możesz podać link do zdjęcia w \"Adres URL ikony\", aby zastąpić domyślne zdjęcie profilowe. Nie będzie używany, jeśli ustawiona jest ikona emoji.", - "aboutMattermostChannelName": "Możesz zastąpić domyślny kanał, na którym publikowane są posty webhooka, wpisując nazwę kanału w polu \"Nazwa kanału\". Należy to włączyć w ustawieniach webhooka Mattermost. Np.: #inny-kanał", - "matrix": "Matrix", - "promosmsTypeEco": "SMS ECO - tanie, lecz wolne. Dostępne tylko w Polsce.", - "promosmsTypeFlash": "SMS FLASH - wiadomość automatycznie wyświetli się na urządzeniu. Dostępne tylko w Polsce.", - "promosmsTypeFull": "SMS FULL - szybkie i dostępne międzynarodowo. Wersja premium usługi, która pozwala min. ustawić własną nazwę nadawcy.", - "promosmsTypeSpeed": "SMS SPEED - wysyłka priorytetowa, ma wszystkie zalety SMS FULL.", - "promosmsPhoneNumber": "Numer odbiorcy", - "promosmsSMSSender": "Nadawca SMS (wcześniej zatwierdzone nazwy z panelu PromoSMS)", - "promosmsAllowLongSMS": "Zezwól na długie SMSy", - "Primary Base URL": "Główny URL", - "Push URL": "Push URL", - "needPushEvery": "Powinieneś wywoływać ten URL co {0} sekund.", - "pushOptionalParams": "Parametry opcjonalne: {0}", - "emailCustomSubject": "Niestandardowy temat", - "checkPrice": "Sprawdź ceny {0}:", - "octopushLegacyHint": "Czy używasz starszej wersji Octopush (2011-2020) czy nowej wersji?", - "Feishu WebHookUrl": "Feishu WebHookURL", - "matrixHomeserverURL": "Adres URL serwera domowego (z http(s):// i opcjonalnie port)", - "Internal Room Id": "Wewnętrzne ID pokoju", - "matrixDesc1": "Możesz znaleźć wewnętrzne ID pokoju, patrząc w zaawansowanej sekcji ustawień pokoju w twoim kliencie Matrix. Powinien on wyglądać jak !QMdRCpUIfLwsfjxye6:home.server.", - "matrixDesc2": "Jest wysoce zalecane, abyś stworzył nowego użytkownika i nie używał tokena dostępu swojego użytkownika Matrix, ponieważ pozwoli on na pełny dostęp do twojego konta i wszystkich pokoi, do których dołączyłeś. Zamiast tego, utwórz nowego użytkownika i zaproś go tylko do pokoju, w którym chcesz otrzymywać powiadomienia. Możesz uzyskać token dostępu przez uruchomienie {0}", - "Method": "Metoda", - "Body": "Treść", - "Headers": "Nagłówki", - "PushUrl": "Push URL", - "HeadersInvalidFormat": "Nagłówki żądania nie są w poprawnym formacie JSON: ", - "BodyInvalidFormat": "Treść żądania nie jest w poprawnym formacie JSON: ", - "Monitor History": "Historia monitorów", - "clearDataOlderThan": "Przechowuj dane dotyczące historii monitorowania {0} dni.", - "PasswordsDoNotMatch": "Hasła nie pasują.", - "records": "rekordy", - "One record": "Jeden rekord", - "steamApiKeyDescription": "Do monitorowania serwera gier Steam potrzebny jest klucz Steam Web-API. Możesz zarejestrować swój klucz API tutaj: ", - "Current User": "Aktualny użytkownik", - "topic": "Temat", - "topicExplanation": "Temat MQTT do monitorowania", - "successMessage": "Komunikat o powodzeniu", - "successMessageExplanation": "Komunikat MQTT, który zostanie uznany za powodzenie", - "recent": "Ostatnie", - "Done": "Zrobione", - "Info": "Info", - "Security": "Bezpieczeństwo", - "Steam API Key": "Klucz Steam API", - "Shrink Database": "Zmniejsz bazę danych", - "Pick a RR-Type...": "Wybierz typ RR…", - "Pick Accepted Status Codes...": "Wybierz akceptowalne kody statusu…", - "Default": "Domyślnie", - "HTTP Options": "Opcje HTTP", - "Create Incident": "Stwórz incydent", - "Title": "Tytuł", - "Content": "Treść", - "Style": "Styl", - "info": "info", - "warning": "ostrzeżenie", - "danger": "niebezpieczeństwo", - "primary": "podstawowy", - "light": "jasny", - "dark": "ciemny", - "Post": "Wyślij", - "Please input title and content": "Podaj tytuł i treść", - "Created": "Stworzony", - "Last Updated": "Ostatnio zaktualizowany", - "Unpin": "Odepnij", - "Switch to Light Theme": "Przełącz na jasny motyw", - "Switch to Dark Theme": "Przełącz na ciemny motyw", - "Show Tags": "Pokaż tagi", - "Hide Tags": "Ukryj tagi", - "Description": "Opis", - "No monitors available.": "Brak dostępnych monitorów.", - "Add one": "Dodaj jeden", - "No Monitors": "Brak monitorów", - "Untitled Group": "Nienazwana grupa", - "Services": "Usługi", - "Discard": "Odrzuć", - "Cancel": "Anuluj", - "Powered by": "Napędzane przez", - "clicksendsms": "ClickSend SMS", - "apiCredentials": "Poświadczenia API", - "serwersms": "SerwerSMS.pl", - "serwersmsAPIUser": "Nazwa użytkownika API (z prefiksem webapi_)", - "serwersmsAPIPassword": "Hasło API", - "serwersmsPhoneNumber": "Numer telefonu", - "serwersmsSenderName": "Nazwa nadawcy (zatwierdzona w panelu klienta)", - "smseagle": "SMSEagle", - "smseagleTo": "Numer/y telefonu", - "smseagleGroup": "Grupa/y z Książki adresowej", - "smseagleContact": "Kontakt/y z Książki adresowej", - "smseagleRecipientType": "Typ odbiorcy", - "smseagleRecipient": "Odbiorca/y (wiele musi być oddzielone przecinkami)", - "smseagleToken": "Klucz dostępu API", - "smseagleUrl": "URL Twojego urządzenia SMSEagle", - "smseagleEncoding": "Wyślij jako Unicode", - "smseaglePriority": "Priorytet wiadomości (0-9, domyślnie = 0)", - "stackfield": "Stackfield", - "Customize": "Dostosuj", - "Custom Footer": "Niestandardowa stopka", - "Custom CSS": "Niestandardowy CSS", - "smtpDkimSettings": "Ustawienia DKIM", - "smtpDkimDesc": "Zapoznaj się z Nodemailer DKIM {0}, aby dowiedzieć się więcej.", - "documentation": "dokumentacja", - "smtpDkimDomain": "Nazwa domeny", - "smtpDkimKeySelector": "Selektor klucza", - "smtpDkimPrivateKey": "Klucz prywatny", - "smtpDkimHashAlgo": "Algorytm haszujący (opcjonalne)", - "smtpDkimheaderFieldNames": "Klucze nagłówka do podpisu (opcjonalne)", - "smtpDkimskipFields": "Klucze nagłówka do pominięcia (opcjonalne)", - "gorush": "Gorush", - "alerta": "Alerta", - "alertaApiEndpoint": "Punkt końcowy API", - "alertaEnvironment": "Środowisko", - "alertaApiKey": "Klucz API", - "alertaAlertState": "Stan alarmowy", - "alertaRecoverState": "Stan odzyskania", - "deleteStatusPageMsg": "Jesteś pewien, że chcesz usunąć tę stronę statusów?", - "Proxies": "Proxy", - "default": "Domyślny", - "enabled": "Włączony", - "setAsDefault": "Ustaw jako domyślny", - "deleteProxyMsg": "Jesteś pewien, że chcesz usunąć proxy ze wszystkich monitorów?", - "proxyDescription": "Proxy muszą być przypisane do monitora, aby działały.", - "enableProxyDescription": "Ten serwer proxy nie będzie miał wpływu na żądania monitorów, dopóki nie zostanie aktywowany. Możesz kontrolować tymczasowe wyłączenie serwera proxy ze wszystkich monitorów za pomocą statusu aktywacji.", - "setAsDefaultProxyDescription": "Ten serwer proxy będzie domyślnie włączony dla nowych monitorów. Można go jednak wyłączyć osobno dla każdego monitora.", - "Certificate Chain": "Łańcuch certyfikatów", - "Valid": "Ważny", - "Invalid": "Nieważny", - "AccessKeyId": "ID klucza dostępu", - "SecretAccessKey": "AccessKey Sekret", - "PhoneNumbers": "Numery telefonów", - "TemplateCode": "Kod szablonu", - "SignName": "Podpis", - "Sms template must contain parameters: ": "Szablon sms musi posiadać parametry: ", - "Bark Endpoint": "Punkt końcowy Bark", - "WebHookUrl": "WebHookUrl", - "SecretKey": "Tajny klucz", - "For safety, must use secret key": "Ze względów bezpieczeństwa musisz użyć tajnego klucza", - "Device Token": "Token urządzenia", - "Platform": "Platforma", - "Huawei": "Huawei", - "High": "Wysoki", - "Retry": "Ponów", - "Topic": "Temat", - "WeCom Bot Key": "Klucz bota WeCom", - "Setup Proxy": "Skonfiguruj proxy", - "Proxy Protocol": "Protokół proxy", - "Proxy Server": "Serwer proxy", - "Proxy server has authentication": "Serwer proxy ma autoryzację", - "User": "Użytkownik", - "Installed": "Zainstalowany", - "Not installed": "Nie zainstalowany", - "Running": "Działa", - "Not running": "Nie działa", - "Remove Token": "Usuń token", - "Start": "Start", - "Stop": "Stop", - "Uptime Kuma": "Uptime Kuma", - "Add New Status Page": "Dodaj nową stronę statusów", - "Slug": "Symbol", - "Accept characters:": "Dozwolone znaki:", - "startOrEndWithOnly": "Zaczynające się i kończące wyłącznie {0} znakami", - "No consecutive dashes": "Bez powtarzających się myślników", - "Next": "Dalej", - "The slug is already taken. Please choose another slug.": "Ten symbol jest już zajęty. Proszę, wybierz inny.", - "No Proxy": "Bez proxy", - "Authentication": "Uwierzytelnianie", - "HTTP Basic Auth": "Podstawowa autoryzacja HTTP", - "New Status Page": "Nowa strona statusu", - "Page Not Found": "Strona nie została znaleziona", - "Reverse Proxy": "Zwrotny serwer proxy", - "Backup": "Backup", - "About": "O skrypcie", - "wayToGetCloudflaredURL": "(Pobierz cloudflared z {0})", - "cloudflareWebsite": "strona Cloudflare", - "Message:": "Wiadomość:", - "Don't know how to get the token? Please read the guide:": "Nie wiesz, jak uzyskać token? Przeczytaj proszę poradnik:", - "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Bieżące połączenie może zostać utracone, jeśli aktualnie łączysz się przez tunel Cloudflare. Czy na pewno chcesz to przerwać? Wpisz swoje aktualne hasło, aby je potwierdzić.", - "Other Software": "Inne oprogramowanie", - "For example: nginx, Apache and Traefik.": "Na przykład: nginx, Apache i Traefik.", - "Please read": "Przeczytaj proszę", - "Subject:": "Temat:", - "Valid To:": "Ważny do:", - "Days Remaining:": "Pozostało dni:", - "Issuer:": "Wydawca:", - "Fingerprint:": "Odcisk palca:", - "No status pages": "Brak stron statusów", - "Domain Name Expiry Notification": "Powiadomienie o wygasaniu domeny", - "Proxy": "Proxy", - "Date Created": "Data stworzenia", - "onebotHttpAddress": "Adres HTTP OneBot", - "onebotMessageType": "Rodzaj wiadomości OneBot", - "onebotGroupMessage": "Grupowa", - "onebotPrivateMessage": "Prywatna", - "onebotUserOrGroupId": "ID Grupy/Użytkownika", - "onebotSafetyTips": "Ze względów bezpieczeństwa musisz ustawić token dostępu", - "PushDeer Key": "Klucz PushDeer", - "Footer Text": "Treść stopki", - "Show Powered By": "Pokaż co napędza stronę", - "Domain Names": "Domeny", - "signedInDisp": "Zalogowany jako {0}", - "signedInDispDisabled": "Autoryzacja wyłączona.", - "resendEveryXTimes": "Wysyłaj ponownie co {0} razy", - "resendDisabled": "Ponowne wysyłanie jest wyłączone", - "Maintenance": "Konserwacja", - "statusMaintenance": "Konserwacja", - "Schedule maintenance": "Planowanie konserwacji", - "Affected Monitors": "Monitory dotknięte problemem", - "Pick Affected Monitors...": "Wybierz monitory, których to dotyczy…", - "Start of maintenance": "Rozpoczęcie konserwacji", - "All Status Pages": "Wszystkie strony statusu", - "Select status pages...": "Wybierz strony statusu…", - "recurringIntervalMessage": "Uruchom raz dziennie | Uruchom raz na {0} dni", - "affectedMonitorsDescription": "Wybierz monitory, których dotyczy bieżąca konserwacja", - "affectedStatusPages": "Pokaż ten komunikat o konserwacji na wybranych stronach statusu", - "atLeastOneMonitor": "Wybierz co najmniej jeden monitor, którego dotyczy problem", - "deleteMaintenanceMsg": "Czy na pewno chcesz usunąć tę konserwację?", - "dnsPortDescription": "Port serwera DNS. Domyślnie 53. Możesz zmienić port w dowolnym momencie.", - "Resend Notification if Down X times consecutively": "Wyślij ponownie powiadomienie, jeśli nie działa X razy z rzędu", - "error": "błąd", - "critical": "krytyczny", - "wayToGetPagerDutyKey": "Możesz to uzyskać, przechodząc do Service -> Service Directory -> (wybierz usługę) -> Integrations -> Add integration. Tutaj możesz wyszukać \"Events API V2\". Więcej informacji {0}", - "Integration Key": "Klucz integracji", - "Integration URL": "Adres URL integracji", - "Auto resolve or acknowledged": "Automatycznie rozwiązany lub potwierdzony", - "do nothing": "nie rób nic", - "auto acknowledged": "auto potwierdzony", - "auto resolve": "automatycznie rozwiązany", - "Bark Group": "Grupa Bark", - "Bark Sound": "Dźwięk Bark", - "HTTP Headers": "Nagłówki HTTP", - "Trust Proxy": "Ufaj proxy", - "HomeAssistant": "Asystent domowy", - "RadiusSecret": "Sekretny klucz Radius", - "RadiusSecretDescription": "Współdzielony sekretny klucz pomiędzy klientem a serwerem", - "RadiusCalledStationId": "Id stacji wywoływanej", - "RadiusCalledStationIdDescription": "Identyfikator wywoływanego urządzenia", - "RadiusCallingStationId": "Id stacji wywoławczej", - "RadiusCallingStationIdDescription": "Identyfikator urządzenia wywołującego", - "Certificate Expiry Notification": "Powiadomienie o wygaśnięciu certyfikatu", - "API Username": "Nazwa użytkownika API", - "API Key": "Klucz API", - "Recipient Number": "Numer odbiorcy", - "From Name/Number": "Od nazwa/numer", - "Leave blank to use a shared sender number.": "Pozostaw puste, aby użyć wspólnego numeru nadawcy.", - "Octopush API Version": "Wersja API Octopush", - "Legacy Octopush-DM": "Starsze Octopush-DM", - "endpoint": "punkt końcowy", - "octopushAPIKey": "\"API key\" z poświadczeń HTTP API w panelu sterowania", - "octopushLogin": "\"Login\" z poświadczeń HTTP API w panelu sterowania", - "promosmsLogin": "Nazwa logowania API", - "promosmsPassword": "Hasło API", - "pushoversounds pushover": "Pushover (domyślny)", - "pushoversounds bike": "Rower", - "pushoversounds bugle": "chrząszcz", - "pushoversounds cashregister": "Kasa fiskalna", - "pushoversounds classical": "Classical", - "pushoversounds cosmic": "Kosmiczny", - "pushoversounds falling": "Spadek", - "pushoversounds gamelan": "Gamelan", - "pushoversounds incoming": "Przychodzące", - "pushoversounds intermission": "Przerwa", - "pushoversounds magic": "Magia", - "pushoversounds mechanical": "Mechaniczny", - "pushoversounds pianobar": "fortepianowy klawisz", - "pushoversounds siren": "Syrena", - "pushoversounds spacealarm": "Alarm kosmiczny", - "pushoversounds tugboat": "Holownik", - "pushoversounds alien": "Alien Alarm (długie)", - "pushoversounds climb": "Climb (długie)", - "pushoversounds persistent": "Persistent (długie)", - "pushoversounds echo": "Pushover Echo (długie)", - "pushoversounds updown": "Up Down (długie)", - "pushoversounds vibrate": "Tylko wibracje", - "pushoversounds none": "Brak (cisza)", - "pushyAPIKey": "Tajny klucz API", - "pushyToken": "Token urządzenia", - "Show update if available": "Pokaż aktualizację, jeśli jest dostępna", - "Also check beta release": "Sprawdź również wydanie beta", - "Using a Reverse Proxy?": "Używasz odwróconego proxy?", - "Check how to config it for WebSocket": "Sprawdź jak go skonfigurować dla WebSocket", - "Steam Game Server": "Serwer gry Steam", - "Most likely causes:": "Najbardziej prawdopodobne przyczyny:", - "The resource is no longer available.": "Zasób nie jest już dostępny.", - "There might be a typing error in the address.": "W adresie może być błąd w pisowni.", - "What you can try:": "Co możesz spróbować:", - "Retype the address.": "Ponownie wpisz adres.", - "Go back to the previous page.": "Wróć do poprzedniej strony.", - "Coming Soon": "Wkrótce", - "wayToGetClickSendSMSToken": "Możesz uzyskać nazwę użytkownika API i klucz API z {0}.", - "Connection String": "Ciąg połączenia", - "Query": "Zapytanie", - "settingsCertificateExpiry": "Wygaśnięcie certyfikatu TLS", - "certificationExpiryDescription": "Monitory HTTPS uruchamiają powiadomienia o wygaśnięciu certyfikatu TLS w:", - "Setup Docker Host": "Konfiguracja hosta Docker", - "Connection Type": "Typ połączenia", - "Docker Daemon": "Demon Dockera", - "deleteDockerHostMsg": "Czy na pewno chcesz usunąć ten host Dockera dla wszystkich monitorów?", - "socket": "Gniazdo", - "tcp": "TCP / HTTP", - "Docker Container": "Kontener Dockera", - "Container Name / ID": "Nazwa kontenera / ID", - "Docker Host": "Host Dockera", - "Docker Hosts": "Hosty Dockera", - "ntfy Topic": "Temat ntfy", - "Domain": "Domena", - "Workstation": "Stacja robocza", - "disableCloudflaredNoAuthMsg": "Jesteś w trybie No Auth, hasło nie jest wymagane.", - "trustProxyDescription": "Zaufaj nagłówkom 'X-Forwarded-*'. Jeśli chcesz uzyskać poprawne IP klienta, a twój Uptime Kuma jest za proxy, takim jak Nginx lub Apache, powinieneś to włączyć.", - "wayToGetLineNotifyToken": "Możesz uzyskać token dostępu z {0}", - "Examples": "Przykłady", - "Home Assistant URL": "URL Home Assistant", - "Long-Lived Access Token": "Długotrwały token dostępu", - "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Długotrwały token dostępu można utworzyć klikając na nazwę swojego profilu (na dole po lewej stronie) i przewijając do dołu, a następnie klikając Create Token. ", - "Notification Service": "Usługa powiadamiania", - "default: notify all devices": "domyślnie: powiadamiaj wszystkie urządzenia", - "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Listę usług powiadamiania można znaleźć w Home Assistant pod \"Developer Tools > Services\" wyszukaj \"notification\", aby znaleźć nazwę swojego urządzenia/telefonu.", - "Automations can optionally be triggered in Home Assistant:": "Automaty mogą być opcjonalnie uruchamiane w Home Assistant:", - "Trigger type:": "Typ wyzwalacza:", - "Event type:": "Typ zdarzenia:", - "Event data:": "Dane o zdarzeniu:", - "Then choose an action, for example switch the scene to where an RGB light is red.": "Następnie wybierz akcję, na przykład przełącz scenę na taką, w której światło RGB jest czerwone.", - "Frontend Version": "Wersja frontu", - "Frontend Version do not match backend version!": "Wersja frontu nie pasuje do wersji backendu!", - "Base URL": "Bazowy adres URL", - "goAlertInfo": "GoAlert to aplikacja open source do planowania, automatycznych eskalacji i powiadomień (jak SMS lub połączenia głosowe). Automatycznie angażuj właściwą osobę, we właściwy sposób i we właściwym czasie! {0}", - "goAlertIntegrationKeyInfo": "Pobierz generyczny klucz integracyjny API dla usługi, którego wartość skopiowanego tokena URL jest zwykle w formacie \"aaaaaaaa-bbb-cccc-dddd-eeeeee\".", - "goAlert": "GoAlert", - "backupOutdatedWarning": "Przestarzałe: ponieważ dodano wiele funkcji i funkcja tworzenia kopii zapasowych nie jest wystarczająco utrzymywana, nie może generować ani przywracać pełnej kopii zapasowej.", - "backupRecommend": "Zamiast tego należy wykonać bezpośrednią kopię zapasową woluminu lub folderu danych (./data/).", - "Optional": "Opcjonalne", - "squadcast": "Squadcast", - "SendKey": "Przycisk Wyślij", - "SMSManager API Docs": "Dokumentacja API SMSManager ", - "Gateway Type": "Typ bramy", - "SMSManager": "SMSManager", - "You can divide numbers with": "Możesz dzielić liczby przez", - "or": "lub", - "recurringInterval": "odstęp czasu", - "Recurring": "Powtarzający się", - "strategyManual": "Aktywowany/dezaktywowany ręcznie", - "warningTimezone": "Używa strefy czasowej serwera", - "weekdayShortMon": "pon", - "weekdayShortTue": "wt", - "weekdayShortWed": "śr", - "weekdayShortThu": "czw", - "weekdayShortFri": "pt", - "weekdayShortSat": "sob", - "weekdayShortSun": "niedz", - "dayOfWeek": "dzień tygodnia", - "dayOfMonth": "dzień miesiąca", - "lastDay": "Ostatni dzień", - "lastDay1": "Ostatni dzień miesiąca", - "lastDay2": "2. ostatni dzień miesiąca", - "lastDay3": "3. ostatni dzień miesiąca", - "lastDay4": "4. ostatni dzień miesiąca", - "No Maintenance": "Brak konserwacji", - "pauseMaintenanceMsg": "Jesteś pewien, że chcesz zatrzymać?", - "maintenanceStatus-under-maintenance": "Podczas konserwacji", - "maintenanceStatus-inactive": "Nieaktywny", - "maintenanceStatus-scheduled": "Zaplanowany", - "maintenanceStatus-ended": "Zakończony", - "maintenanceStatus-unknown": "Nieznany", - "Display Timezone": "Wyświetlana strefa czasowa", - "Server Timezone": "Strefa czasowa serwera", - "statusPageMaintenanceEndDate": "Koniec", - "Help": "Pomoc", - "Passive Monitor Type": "Pasywny typ monitora", - "Enable": "Włącz", - "confirmDeleteTagMsg": "Czy na pewno chcesz usunąć ten tag? Monitory powiązane z tym tagiem nie zostaną usunięte.", - "Kook": "Kook", - "Enable TLS": "Włącz TLS", - "webhookAdditionalHeadersDesc": "Ustawia dodatkowe nagłówki wysyłane z webhookiem. Każdy nagłówek powinien być zdefiniowany jako klucz/wartość JSON.", - "dnsCacheDescription": "Może nie działać w niektórych środowiskach IPv6, wyłącz ją, jeśli napotkasz jakiekolwiek problemy.", - "wayToGetKookBotToken": "Utwórz aplikację i uzyskaj swój token bota na {0}", - "wayToGetKookGuildID": "Włącz 'Developer Mode' w ustawieniach Kook'a i kliknij prawym przyciskiem myszy na gildię, aby uzyskać jej ID", - "Game": "Gra", - "Specific Monitor Type": "Konkretny typ monitora", - "Monitor": "Monitor | Monitory", - "webhookAdditionalHeadersTitle": "Dodatkowe nagłówki", - "Custom": "Własny", - "ZohoCliq": "ZohoCliq", - "Disable": "Wyłącz", - "Date and Time": "Data i czas", - "IconUrl": "URL ikony", - "Enable DNS Cache": "(Przestarzałe) Włącz pamięć podręczną DNS dla monitorów HTTP", - "Single Maintenance Window": "Pojedyncze okno konserwacji", - "Effective Date Range": "Zakres dat obowiązywania (opcjonalnie)", - "Schedule Maintenance": "Planowanie konserwacji", - "DateTime Range": "Zakres czasowy", - "Maintenance Time Window of a Day": "Okno czasowe konserwacji na dzień", - "wayToGetZohoCliqURL": "Możesz dowiedzieć się, jak utworzyć adres URL webhook {0}.", - "dataRetentionTimeError": "Okres przechowywania musi wynosić 0 lub więcej", - "infiniteRetention": "Ustaw na 0, aby uzyskać nieskończony okres przechowywania.", - "enableGRPCTls": "Zezwalaj na wysyłanie żądania gRPC z połączeniem TLS", - "grpcMethodDescription": "Nazwa metody jest konwertowana na format camelCase, taki jak sayHello, check, itp.", - "Guild ID": "ID gildii", - "Proto Content": "Zawartość Proto", - "Proto Method": "Metoda Proto", - "Proto Service Name": "Nazwa usługi Proto", - "Economy": "Ekonomia", - "Strategy": "Strategia", - "Free Mobile User Identifier": "Darmowy mobilny identyfikator użytkownika", - "Free Mobile API Key": "Darmowy mobilny klucz API", - "Lowcost": "Tani", - "high": "wysoki", - "General Monitor Type": "Ogólny typ monitora", - "Packet Size": "Rozmiar pakietu", - "uninstalling": "Odinstalowywanie", - "loadingError": "Nie można pobrać danych, proszę spróbować ponownie później.", - "plugin": "Plugin | Pluginy", - "install": "Instaluj", - "installing": "Instalowanie", - "uninstall": "Odinstaluj", - "confirmUninstallPlugin": "Czy na pewno chcesz odinstalować tę wtyczkę?", - "Custom Monitor Type": "Własny typ monitora", - "markdownSupported": "Obsługiwana składnia Markdown", - "Google Analytics ID": "Identyfikator Google Analytics", - "Edit Tag": "Edytuj Tag", - "Server Address": "Adres Serwera", - "Learn More": "Dowiedz się więcej", - "Body Encoding": "Kodowanie treści", - "Expiry": "Wygasa", - "Expiry date": "Data wygaśnięcia", - "Don't expire": "Nie wygaszaj", - "Continue": "Kontynuuj", - "Add Another": "Dodaj kolejne", - "Add API Key": "Dodaj klucz API", - "No API Keys": "Brak kluczy API", - "apiKey-active": "Aktywny", - "apiKey-expired": "Wygasły", - "apiKey-inactive": "Nieaktywny", - "Expires": "Wygasa", - "Generate": "Generuj", - "disableAPIKeyMsg": "Czy na pewno chcesz wyłączyć ten klucz API?", - "deleteAPIKeyMsg": "Czy na pewno chcesz usunąć ten klucz API?", - "pagertreeIntegrationUrl": "URL integracji", - "pagertreeUrgency": "Pilność", - "pagertreeSilent": "Cichy", - "pagertreeLow": "Niski", - "pagertreeMedium": "Średni", - "pagertreeHigh": "Wysoki", - "pagertreeCritical": "Krytyczny", - "pagertreeResolve": "Automatyczne rozwiązywanie", - "Clone Monitor": "Klonuj monitor", - "Clone": "Klonuj", - "cloneOf": "Klon {0}", - "API Keys": "Klucze API", - "Key Added": "Klucz dodany", - "pagertreeDoNothing": "Nie rób nic", - "wayToGetPagerTreeIntegrationURL": "Po utworzeniu integracji Uptime Kuma w PagerTree, należy skopiować Endpoint. Zobacz pełne szczegóły {0}", - "notificationRegional": "Regionalne", - "twilioFromNumber": "Z numeru", - "twilioToNumber": "Do numeru", - "lunaseaTarget": "Cel", - "twilioAccountSID": "SID konta", - "twilioAuthToken": "Token autoryzacji / klucz Api Secret", - "apiKeyAddedMsg": "Twój klucz API został dodany. Prosimy o zanotowanie go, ponieważ nie będzie on już więcej pokazywany.", - "telegramMessageThreadID": "(Opcjonalne) ID wątku wiadomości", - "telegramMessageThreadIDDescription": "Opcjonalny Unikalny identyfikator dla docelowego wątku wiadomości (tematu) forum; tylko dla supergrup forum", - "telegramProtectContent": "Ochrona przekazywania/zapisywania", - "telegramProtectContentDescription": "Jeśli włączona, wiadomości bota w Telegramie będą chronione przed przekazywaniem i zapisywaniem.", - "telegramSendSilently": "Wyślij po cichu", - "telegramSendSilentlyDescription": "Wysyła wiadomość po cichu. Użytkownicy otrzymają powiadomienie bez dźwięku.", - "statusPageRefreshIn": "Odświeżenie w ciągu: {0}", - "lunaseaDeviceID": "ID urządzenia", - "lunaseaUserID": "ID użytkownika", - "Add New Tag": "Dodaj nowy tag", - "startDateTime": "Data/godzina rozpoczęcia", - "cronSchedule": "Harmonogram: ", - "invalidCronExpression": "Nieprawidłowe sformułowanie Cron: {0}", - "sameAsServerTimezone": "Tak jak strefa czasowa serwera", - "endDateTime": "Data/godzina zakończenia", - "cronExpression": "Wyrażenie Cron", - "ntfyAuthenticationMethod": "Metoda uwierzytelniania", - "ntfyUsernameAndPassword": "Nazwa użytkownika i hasło", - "noGroupMonitorMsg": "Niedostępna. Stwórz najpierw grupę monitorów.", - "Close": "Zamknij", - "pushoverMessageTtl": "TTL wiadomości (sekundy)", - "Home": "Strona główna", - "Group": "Grupa", - "Monitor Group": "Grupa monitora", - "Reconnecting...": "Ponowne łączenie...", - "Cannot connect to the socket server": "Nie można połączyć się z serwerem gniazda", - "Badge Label Suffix": "Sufiks etykiety odznaki", - "Badge Warn Color": "Kolor ostrzeżenia odznaki", - "Badge Style": "Styl odznaki", - "Badge value (For Testing only.)": "Wartość odznaki (tylko do testów.)", - "Show Clickable Link": "Pokaż klikalne łącze", - "Show Clickable Link Description": "Jeśli to pole jest zaznaczone, każdy, kto ma dostęp do tej strony stanu, może mieć dostęp do adresu URL monitora.", - "Open Badge Generator": "Generator odznak Open Badge", - "Badge Generator": "{0} Generator odznak", - "Monitor Setting": "{0} Ustawienia monitora", - "Badge Duration": "Czas trwania odznaki", - "Badge Label": "Etykieta odznaki", - "Badge Suffix": "Sufiks wartości odznaki", - "chromeExecutable": "Plik wykonywalny Chrome/Chromium", - "chromeExecutableAutoDetect": "Wykryj automatycznie", - "chromeExecutableDescription": "W przypadku użytkowników Dockera, jeśli Chromium nie jest jeszcze zainstalowany, instalacja i wyświetlenie wyniku testu może zająć kilka minut. Zajmuje 1 GB miejsca na dysku.", - "Edit Maintenance": "Edycja konserwacji", - "Badge Type": "Typ odznaki", - "Badge Prefix": "Prefiks wartości odznaki", - "Badge Color": "Kolor odznaki", - "Badge Label Color": "Kolor etykiety Odznaki", - "Badge Label Prefix": "Prefiks etykiety identyfikatora", - "Badge Pending Color": "Oczekujący kolor odznaki", - "Badge Maintenance Color": "Kolor utrzymania odznaki", - "Badge URL": "Adres URL odznaki", - "gamedigGuessPort": "Gamedig: Port Guess", - "filterActive": "Aktywny", - "webhookCustomBodyDesc": "Definiuje niestandardową treść HTTP dla żądania. Akceptowane są zmienne szablonowe {msg}, {heartbeat}, {monitor}.", - "Select": "Wybierz", - "aboutNotifyChannel": "Powiadomienie kanału wywoła powiadomienie na komputerze lub urządzeniu mobilnym dla wszystkich członków kanału, niezależnie od tego, czy ich dostępność jest ustawiona jako aktywna, czy nie.", - "twilioApiKey": "Klucz API (opcjonalnie)", - "styleElapsedTime": "Czas, który upłynął pod paskiem bicia serca", - "tailscalePingWarning": "Aby korzystać z monitora Tailscale Ping, należy zainstalować Uptime Kuma bez Dockera, a także zainstalować klienta Tailscale na serwerze.", - "invertKeywordDescription": "Słowo kluczowe powinno być raczej nieobecne niż obecne.", - "Server URL should not contain the nfty topic": "Adres URL serwera nie powinien zawierać tematu nfty", - "Badge Duration (in hours)": "Czas trwania odznaki (w godzinach)", - "Enter the list of brokers": "Wprowadź listę brokerów", - "Enable Kafka Producer Auto Topic Creation": "Włącz automatyczne tworzenie tematów w producencie Kafka", - "showCertificateExpiry": "Pokaż wygaśnięcie certyfikatu", - "gamedigGuessPortDescription": "Port używany przez Valve Server Query Protocol może różnić się od portu klienta. Spróbuj tego, jeśli monitor nie może połączyć się z serwerem.", - "Secret AccessKey": "Tajny klucz AccessKey", - "wayToGetFlashDutyKey": "Możesz przejść do Channel -> (Select a Channel) -> Integrations -> Add a new integration' page, dodać \"Uptime Kuma\", aby uzyskać adres push, skopiować klucz integracji w adresie. Więcej informacji można znaleźć na stronie", - "Badge Down Color": "Kolor odznaki Offline", - "Notify Channel": "Powiadom kanał", - "Request Timeout": "Limit czasu żądania", - "timeoutAfter": "Przekroczenie limitu czasu po {0} sekundach", - "styleElapsedTimeShowNoLine": "Pokaż (bez linii)", - "styleElapsedTimeShowWithLine": "Pokaż (z linią)", - "filterActivePaused": "Wstrzymany", - "webhookBodyCustomOption": "Niestandardowa treść", - "webhookBodyPresetOption": "Wstępne ustawienie - {0}", - "selectedMonitorCount": "Wybrano: {0}", - "Check/Uncheck": "Zaznacz/Odznacz", - "PushDeer Server": "Serwer PushDeer", - "pushDeerServerDescription": "Pozostaw puste, aby korzystać z oficjalnego serwera", - "Badge Preview": "Podgląd odznaki", - "Kafka Brokers": "Broker Kafka", - "Press Enter to add broker": "Naciśnij Enter, aby dodać brokera", - "Kafka Topic Name": "Nazwa tematu Kafka", - "Kafka Producer Message": "Wiadomość producenta Kafka", - "Enable Kafka SSL": "Włącz Kafka SSL", - "Kafka SASL Options": "Opcje SASL Kafki", - "Mechanism": "Mechanizm", - "Pick a SASL Mechanism...": "Wybierz mechanizm SASL…", - "nostrRelaysHelp": "Jeden adres URL przekaźnika w wierszu", - "nostrRecipients": "Klucze publiczne odbiorców (npub)", - "nostrRecipientsHelp": "format npub, po jednym w wierszu", - "Authorization Identity": "Identyfikacja autoryzacji", - "AccessKey Id": "Identyfikator klucza AccessKey", - "Session Token": "Token sesji", - "Request Body": "Treść żądania", - "FlashDuty Severity": "Poziom istotności", - "nostrRelays": "Przekaźniki Nostr", - "nostrSender": "Prywatny klucz nadawcy (nsec)", - "Badge Up Color": "Kolor odznaki Online", - "Badge Down Days": "Odznaka dni offline", - "Badge Warn Days": "Odznaka dni z ostrzeżeniem", - "noOrBadCertificate": "Brak/zły certyfikat", - "Invert Keyword": "Odwróć słowo kluczowe", - "Expected Value": "Oczekiwana wartość", - "Json Query": "Zapytanie Json", - "enableNSCD": "Włącz NSCD (Name Service Cache Daemon) do buforowania wszystkich żądań DNS", - "Saved.": "Zapisano.", - "setupDatabaseChooseDatabase": "Której bazy danych chcesz używać?", - "setupDatabaseEmbeddedMariaDB": "Nie musisz niczego ustawiać. Ten obraz docker automatycznie osadził i skonfigurował MariaDB. Uptime Kuma połączy się z tą bazą danych za pośrednictwem gniazda Unix.", - "setupDatabaseMariaDB": "Połącz z zewnętrzną bazą danych MariaDB. Należy ustawić informacje o połączeniu z bazą danych.", - "setupDatabaseSQLite": "Prosty plik bazy danych, zalecany do wdrożeń na małą skalę. Przed wersją 2.0.0 Uptime Kuma używała SQLite jako domyślnej bazy danych.", - "dbName": "Nazwa bazy danych", - "toastErrorTimeout": "Limit czasu dla powiadomień o błędach", - "monitorToastMessagesLabel": "Powiadomienie Toast Monitora", - "monitorToastMessagesDescription": "Powiadomienia toast dla monitorów znikają po określonym czasie w sekundach. Ustawienie -1 wyłącza limit czasu. Ustawienie 0 wyłącza powiadomienia toast.", - "authInvalidToken": "Nieprawidłowy token.", - "authIncorrectCreds": "Nieprawidłowa nazwa użytkownika lub hasło.", - "2faAlreadyEnabled": "2FA jest już włączone.", - "2faEnabled": "2FA włączone.", - "2faDisabled": "2FA wyłączone.", - "successAdded": "Pomyślnie dodano.", - "successPaused": "Wstrzymano pomyślnie.", - "successDeleted": "Usunięto pomyślnie.", - "successEdited": "Edytowano pomyślnie.", - "successAuthChangePassword": "Hasło zostało pomyślnie zaktualizowane.", - "successDisabled": "Wyłączono pomyślnie.", - "successEnabled": "Włączono pomyślnie.", - "tagNotFound": "Nie znaleziono tagu.", - "foundChromiumVersion": "Znaleziono Chromium/Chrome. Wersja: {0}", - "authUserInactiveOrDeleted": "Użytkownik jest nieaktywny lub usunięty.", - "successResumed": "Wznowiono pomyślnie.", - "successBackupRestored": "Kopia zapasowa została pomyślnie przywrócona.", - "pushViewCode": "Jak korzystać z monitora Push? (wyświetl kod)", - "Bark API Version": "Wersja API Bark", - "pushOthers": "Inne", - "programmingLanguages": "Języki programowania", - "toastSuccessTimeout": "Limit czasu dla powiadomień o powodzeniu", - "Reset Token": "Zresetuj token", - "liquidIntroduction": "Szablonowość jest osiągana za pomocą języka szablonów Liquid. Instrukcje użytkowania znajdują się w {0}. Oto dostępne zmienne:", - "templateLimitedToUpDownCertNotifications": "dostępne tylko dla powiadomień UP/DOWN/wygaśnięcia certyfikatu", - "emailTemplateLimitedToUpDownNotification": "dostępne tylko dla uderzeń serca UP/DOWN, w przeciwnym razie null", - "emailCustomisableContent": "Personalizowana zawartość", - "smtpLiquidIntroduction": "Poniższe dwa pola można szablonować za pomocą języka szablonów Liquid. Instrukcje użytkowania znajdują się w {0}. Są to dostępne zmienne:", - "leave blank for default subject": "pozostaw puste dla domyślnego tematu", - "emailCustomBody": "Niestandardowa treść wiadomości e-mail", - "leave blank for default body": "pozostaw puste dla domyślnej treści", - "emailTemplateServiceName": "Nazwa usługi", - "emailTemplateHostnameOrURL": "Nazwa hosta lub adres URL", - "emailTemplateStatus": "Status", - "emailTemplateMonitorJSON": "obiekt opisujący monitor", - "emailTemplateHeartbeatJSON": "obiekt opisujący bicie serca", - "emailTemplateMsg": "wiadomość powiadomienia", - "templateMsg": "wiadomość powiadomienia", - "templateHeartbeatJSON": "obiekt opisujący bicie serca", - "templateMonitorJSON": "obiekt opisujący monitor", - "templateLimitedToUpDownNotifications": "dostępne tylko dla powiadomień UP/DOWN", - "Browser Screenshot": "Zrzut ekranu przeglądarki", - "noDockerHostMsg": "Niedostępne. Najpierw skonfiguruj host Dockera.", - "DockerHostRequired": "Ustaw host Dockera dla tego monitora.", - "successKeyword": "Słowo kluczowe sukcesu", - "successKeywordExplanation": "Słowo kluczowe MQTT, które zostanie uznane za sukces", - "ntfyPriorityHelptextAllExceptDown": "Wszystkie zdarzenia są wysyłane z tym priorytetem, z wyjątkiem zdarzeń {0}, które mają priorytet {1}", - "remoteBrowsersDescription": "Przeglądarki zdalne są alternatywą dla lokalnego uruchamiania Chromium. Skonfiguruj za pomocą usługi takiej jak browserless.io lub połącz z własną", - "deleteRemoteBrowserMessage": "Czy na pewno chcesz usunąć tę zdalną przeglądarkę dla wszystkich monitorów?", - "GrafanaOncallUrl": "Adres URL Grafana Oncall", - "Remote Browsers": "Zdalne przeglądarki", - "self-hosted container": "kontener hostowany samodzielnie", - "settingUpDatabaseMSG": "Konfigurowanie bazy danych. Może to zająć chwilę, bądź cierpliwy.", - "statusPageSpecialSlugDesc": "Specjalny slug {0}: ta strona zostanie wyświetlona, jeśli nie podano żadnego slugu", - "Search monitored sites": "Wyszukiwanie monitorowanych witryn", - "setup a new monitor group": "konfiguracja nowej grupy monitorów", - "openModalTo": "otwórz modal na {0}", - "Add a domain": "Dodaj domenę", - "Remove domain": "Usuń domenę '{0}'", - "ntfyPriorityHelptextAllEvents": "Wszystkie zdarzenia są wysyłane z maksymalnym priorytetem", - "Remote Browser": "Zdalna przeglądarka", - "Add a Remote Browser": "Dodaj zdalną przeglądarkę", - "Remote Browser not found!": "Nie znaleziono zdalnej przeglądarki!", - "remoteBrowserToggle": "Domyślnie Chromium działa wewnątrz kontenera Uptime Kuma. Możesz użyć zdalnej przeglądarki, przełączając ten przełącznik.", - "useRemoteBrowser": "Używaj zdalnej przeglądarki", - "Add a new expiry notification day": "Dodaj nowy dzień wygaśnięcia powiadomienia", - "Remove the expiry notification": "Usunąć dzień powiadomienia o wygaśnięciu", - "What is a Remote Browser?": "Co to jest zdalna przeglądarka?", - "Mentioning": "Oznaczenia", - "Don't mention people": "Nie oznaczaj nikogo", - "Mention group": "Oznacz {group}", - "Channel access token (Long-lived)": "Token dostępu do kanału (długotrwały)", - "Your User ID": "Twój identyfikator użytkownika", - "locally configured mail transfer agent": "lokalnie skonfigurowany serwer poczty", - "documentationOf": "{0} Dokumentacja", - "wayToGetHeiiOnCallDetails": "Jak uzyskać identyfikator wyzwalacza i klucze API wyjaśniono w {dokumentacji}", - "Select message type": "Wybierz typ wiadomości", - "Create new forum post": "Utwórz nowy post na forum", - "whatHappensAtForumPost": "Utwórz nowy post na forum. NIE powoduje to opublikowania wiadomości w istniejącym poście. Aby opublikować wiadomość w istniejącym poście, użyj \"{option}\"", - "callMeBotGet": "Tutaj możesz wygenerować punkt końcowy dla {0}, {1} i {2}. Należy pamiętać, że mogą wystąpić ograniczenia szybkości. Limity szybkości wydają się być następujące: {3}", - "Command": "Polecenie", - "mongodbCommandDescription": "Uruchom polecenie MongoDB względem bazy danych. Aby uzyskać informacje na temat dostępnych poleceń, sprawdź {documentation}", - "max 11 alphanumeric characters": "maksymalnie 11 znaków alfanumerycznych", - "Originator type": "Typ nadawcy", - "Alphanumeric (recommended)": "Alfanumeryczne (zalecane)", - "smspartnerApiurl": "Klucz API można znaleźć na pulpicie nawigacyjnym pod adresem {0}", - "smspartnerPhoneNumber": "Numer(y) telefonu(ów)", - "smspartnerPhoneNumberHelptext": "Numer musi być w międzynarodowym formacie {0}, {1}. Kilka numerów musi być oddzielonych znakiem {2}", - "smspartnerSenderName": "Nazwa nadawcy wiadomości SMS", - "smspartnerSenderNameInfo": "Musi zawierać między 3..=11 zwykłych znaków", - "Telephone number": "Nr telefonu", - "To Phone Number": "Na numer telefonu", - "Destination": "Miejsce docelowe", - "Bitrix24 Webhook URL": "Adres URL usługi Bitrix24 Webhook", - "wayToGetBitrix24Webhook": "Webhook można utworzyć, wykonując czynności opisane na stronie {0}", - "gtxMessagingToHint": "Format międzynarodowy, z początkowym \"+\" ({e164}, {e212} lub {e214})", - "wayToGetSevenIOApiKey": "Odwiedź pulpit nawigacyjny pod adresem app.seven.io > deweloper > klucz api > zielony przycisk dodawania", - "cellsyntOriginator": "Widoczny na telefonie komórkowym odbiorcy jako inicjator wiadomości. Dozwolone wartości i funkcja zależą od parametru originatortype.", - "cellsyntSplitLongMessages": "Dzielenie długich wiadomości na maksymalnie 6 części. 153 x 6 = 918 znaków.", - "max 15 digits": "maksymalnie 15 cyfr", - "bitrix24SupportUserID": "Wprowadź swój identyfikator użytkownika w Bitrix24. Identyfikator można znaleźć w linku, przechodząc do profilu użytkownika.", - "gtxMessagingApiKeyHint": "Klucz API można znaleźć na stronie: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)", - "cellsyntOriginatortypeAlphanumeric": "Ciąg alfanumeryczny (maksymalnie 11 znaków alfanumerycznych). Odbiorcy nie mogą odpowiedzieć na wiadomość.", - "Send to channel": "Wyślij do kanału", - "postToExistingThread": "Opublikuj w istniejącym wątku / poście na forum", - "forumPostName": "Nazwa posta na forum", - "threadForumPostID": "Identyfikator wątku/postu na forum", - "e.g. {discordThreadID}": "np. {discordThreadID}", - "wayToGetDiscordThreadId": "Uzyskiwanie identyfikatora wątku / postu na forum jest podobne do uzyskiwania identyfikatora kanału. Przeczytaj więcej o tym, jak uzyskać identyfikatory {0}", - "cellsyntDestination": "Numer telefonu odbiorcy w formacie międzynarodowym z początkowym 00, po którym następuje numer kierunkowy kraju, np. 00447920110000 dla numeru w Wielkiej Brytanii 07920 110 000 (łącznie maksymalnie 17 cyfr). Maksymalnie 25000 odbiorców oddzielonych przecinkami na żądanie HTTP.", - "Allow Long SMS": "Zezwalaj na długie wiadomości SMS", - "Host URL": "Adres URL hosta", - "Refresh Interval": "Częstotliwość odświeżania", - "Refresh Interval Description": "Strona stanu będzie odświeżać całą witrynę co {0} sekund", - "ignoreTLSErrorGeneral": "Ignorowanie błędu TLS/SSL dla połączenia", - "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Wprowadź nazwę hosta serwera, z którym chcesz się połączyć lub {localhost}, jeśli zamierzasz użyć {local_mta}", - "senderSevenIO": "Wysyłany numer lub nazwa", - "receiverSevenIO": "Numer odbiorcy", - "receiverInfoSevenIO": "Jeśli numer odbiorczy nie znajduje się w Niemczech, należy dodać kod kraju przed numerem (np. dla kodu kraju 1 z USA należy użyć 117612121212 zamiast 017612121212)", - "apiKeySevenIO": "Klucz API SevenIO", - "wayToWriteWhapiRecipient": "Numer telefonu z prefiksem międzynarodowym, ale bez znaku plus na początku ({0}), identyfikator kontaktu ({1}) lub identyfikator grupy ({2}).", - "wayToGetWhapiUrlAndToken": "Adres URL API i token można uzyskać, przechodząc do żądanego kanału z {0}", - "Originator": "Nadawca", - "whapiRecipient": "Nr telefonu / ID kontaktu / ID grupy", - "API URL": "URL dla API", - "From Phone Number / Transmission Path Originating Address (TPOA)": "Od numeru telefonu / adresu początkowego ścieżki transmisji (TPOA)", - "gtxMessagingFromHint": "W telefonach komórkowych odbiorcy widzą TPOA jako nadawcę wiadomości. Dozwolone jest do 11 znaków alfanumerycznych, krótki kod, lokalny długi kod lub numery międzynarodowe ({e164}, {e212} lub {e214})", - "cellsyntOriginatortypeNumeric": "Wartość numeryczna (maks. 15 cyfr) z numerem telefonu w formacie międzynarodowym bez początkowego 00 (np. brytyjski numer 07920 110 000 powinien być ustawiony jako 447920110000). Odbiorcy mogą odpowiedzieć na wiadomość.", - "threemaRecipient": "Odbiorca", - "threemaRecipientType": "Typ odbiorcy", - "threemaRecipientTypeIdentity": "Threema ID", - "threemaRecipientTypeIdentityFormat": "8 znaków", - "threemaRecipientTypePhone": "Numer telefonu", - "threemaRecipientTypePhoneFormat": "E.164, bez znaku + na początku", - "threemaRecipientTypeEmail": "Adres e-mail", - "threemaSenderIdentity": "Gateway ID", - "threemaApiAuthenticationSecret": "Hasło Gateway ID", - "wayToGetThreemaGateway": "Możesz zarejestrować się w Threema Gateway {0}.", - "threemaSenderIdentityFormat": "8 znaków, zwykle zaczyna się od *", - "threemaBasicModeInfo": "Uwaga: Ta integracja korzysta z Threema Gateway w trybie podstawowym (szyfrowanie po stronie serwera). Więcej szczegółów można znaleźć {0}.", - "apiKeysDisabledMsg": "Klucze API są wyłączone, ponieważ wyłączone jest uwierzytelnianie.", - "-year": "-rok", - "and": "i", - "now": "teraz", - "cacheBusterParam": "Dodaj parametr {0}" -} +{ + "languageName": "Polski", + "checkEverySecond": "Sprawdzaj co {0} sekund", + "retryCheckEverySecond": "Ponawiaj co {0} sekund", + "retriesDescription": "Maksymalna liczba powtórzeń, zanim usługa zostanie oznaczona jako niedostępna i zostanie wysłane powiadomienie", + "ignoreTLSError": "Ignoruj błędy TLS/SSL dla stron HTTPS", + "upsideDownModeDescription": "Odwróć status do góry nogami. Jeśli usługa jest osiągalna, to jest oznaczona jako niedostępna.", + "maxRedirectDescription": "Maksymalna liczba przekierowań do wykonania. Ustaw na 0, aby wyłączyć przekierowania.", + "acceptedStatusCodesDescription": "Wybierz kody stanu, które są uważane za prawidłową odpowiedź.", + "passwordNotMatchMsg": "Powtórzone hasło nie pasuje.", + "notificationDescription": "Proszę przypisać powiadomienie do monitora(ów), aby działało.", + "keywordDescription": "Wyszukiwanie słów kluczowych w zwykłym html lub odpowiedzi JSON. Wielkość liter ma znaczenie.", + "pauseDashboardHome": "Wstrzymane", + "deleteMonitorMsg": "Czy na pewno chcesz usunąć ten monitor?", + "deleteNotificationMsg": "Czy na pewno chcesz usunąć to powiadomienie dla wszystkich monitorów?", + "resolverserverDescription": "Cloudflare jest domyślnym serwerem, możesz zmienić serwer resolver w każdej chwili.", + "rrtypeDescription": "Wybierz rodzaj rekordu, który chcesz monitorować", + "pauseMonitorMsg": "Czy na pewno chcesz wstrzymać monitorowanie?", + "enableDefaultNotificationDescription": "Dla każdego nowego monitora to powiadomienie będzie domyślnie włączone. Nadal możesz wyłączyć powiadomienia osobno dla każdego monitora.", + "clearEventsMsg": "Jesteś pewien, że chcesz wyczyścić historię zdarzeń dla tego monitora?", + "clearHeartbeatsMsg": "Jesteś pewien, że chcesz wyczyścić historię bicia serca dla tego monitora?", + "confirmClearStatisticsMsg": "Jesteś pewien, że chcesz usunąć WSZYSTKIE statystyki?", + "importHandleDescription": "Wybierz 'Pomiń istniejące', jeśli chcesz pominąć każdy monitor lub powiadomienie o tej samej nazwie. 'Nadpisz' spowoduje usunięcie każdego istniejącego monitora i powiadomienia.", + "confirmImportMsg": "Czy na pewno chcesz zaimportować kopię zapasową? Upewnij się, że wybrałeś właściwą opcję importu.", + "twoFAVerifyLabel": "Proszę, podaj swój token 2FA, aby sprawdzić, czy 2FA działa:", + "tokenValidSettingsMsg": "Token jest prawidłowy! Teraz możesz zapisać ustawienia 2FA.", + "confirmEnableTwoFAMsg": "Jesteś pewien, że chcesz włączyć 2FA?", + "confirmDisableTwoFAMsg": "Jesteś pewien, że chcesz wyłączyć 2FA?", + "Settings": "Ustawienia", + "Dashboard": "Panel", + "New Update": "Nowa aktualizacja", + "Language": "Język", + "Appearance": "Wygląd", + "Theme": "Motyw", + "General": "Ogólne", + "Version": "Wersja", + "Check Update On GitHub": "Sprawdź aktualizację na GitHub", + "List": "Lista", + "Add": "Dodaj", + "Add New Monitor": "Dodaj monitor", + "Quick Stats": "Szybki podgląd statystyk", + "Up": "Online", + "Down": "Offline", + "Pending": "Oczekuje", + "Unknown": "Nieznane", + "Pause": "Wstrzymaj", + "Name": "Nazwa", + "Status": "Status", + "DateTime": "Data i godzina", + "Message": "Wiadomość", + "No important events": "Brak ważnych wydarzeń", + "Resume": "Wznów", + "Edit": "Edytuj", + "Delete": "Usuń", + "Current": "Aktualny", + "Uptime": "Czas pracy", + "Cert Exp.": "Data ważności certyfikatu.", + "day": "dzień | dni", + "-day": "dni", + "hour": "godzina", + "-hour": "godzin", + "Response": "Odpowiedź", + "Ping": "Ping", + "Monitor Type": "Rodzaj monitora", + "Keyword": "Słowo kluczowe", + "Friendly Name": "Przyjazna nazwa", + "URL": "URL", + "Hostname": "Nazwa hosta", + "Port": "Port", + "Heartbeat Interval": "Częstotliwość bicia serca", + "Retries": "Prób", + "Heartbeat Retry Interval": "Częstotliwość ponawiania bicia serca", + "Advanced": "Zaawansowane", + "Upside Down Mode": "Tryb odwrócony", + "Max. Redirects": "Maks. przekierowań", + "Accepted Status Codes": "Akceptowane kody statusu", + "Save": "Zapisz", + "Notifications": "Powiadomienia", + "Not available, please setup.": "Niedostępne, proszę skonfigurować.", + "Setup Notification": "Skonfiguruj powiadomienie", + "Light": "Jasny", + "Dark": "Ciemny", + "Auto": "Automatyczny", + "Theme - Heartbeat Bar": "Motyw - pasek bicia serca", + "Normal": "Domyślne", + "Bottom": "Na dole", + "None": "Brak", + "Timezone": "Strefa czasowa", + "Search Engine Visibility": "Widoczność w wyszukiwarce", + "Allow indexing": "Zezwól na indeksowanie", + "Discourage search engines from indexing site": "Zniechęcaj wyszukiwarki do indeksowania strony", + "Change Password": "Zmień hasło", + "Current Password": "Aktualne hasło", + "New Password": "Nowe hasło", + "Repeat New Password": "Powtórz nowe hasło", + "Update Password": "Zaktualizuj hasło", + "Disable Auth": "Wyłącz autoryzację", + "Enable Auth": "Włącz autoryzację", + "disableauth.message1": "Czy na pewno chcesz {disableAuth}?", + "disable authentication": "wyłączyć autoryzację", + "disableauth.message2": "Jest przeznaczony dla {intendThirdPartyAuth} przed Uptime Kuma, taką jak Cloudflare Access.", + "where you intend to implement third-party authentication": "kogoś, kto ma autoryzację zewnętrzną", + "Please use this option carefully!": "Proszę używać tej opcji ostrożnie!", + "Logout": "Wyloguj", + "Leave": "Zostaw", + "I understand, please disable": "Rozumiem, proszę wyłączyć", + "Confirm": "Potwierdź", + "Yes": "Tak", + "No": "Nie", + "Username": "Nazwa użytkownika", + "Password": "Hasło", + "Remember me": "Zapamiętaj mnie", + "Login": "Zaloguj", + "No Monitors, please": "Brak monitorów, proszę", + "add one": "dodać jeden", + "Notification Type": "Rodzaj powiadomienia", + "Email": "E-mail", + "Test": "Test", + "Certificate Info": "Informacje o certyfikacie", + "Resolver Server": "Serwer rozwiązywania nazw", + "Resource Record Type": "Typ rekordu zasobów", + "Last Result": "Ostatni wynik", + "Create your admin account": "Utwórz swoje konto administratora", + "Repeat Password": "Powtórz hasło", + "Import Backup": "Importuj kopię zapasową", + "Export Backup": "Eksportuj kopię zapasową", + "Export": "Eksportuj", + "Import": "Importuj", + "respTime": "Czas odp. (ms)", + "notAvailableShort": "N/D", + "Default enabled": "Włącz domyślnie", + "Apply on all existing monitors": "Zastosuj do istniejących monitorów", + "Create": "Stwórz", + "Clear Data": "Usuń dane", + "Events": "Zdarzenia", + "Heartbeats": "Bicia serca", + "Auto Get": "Wykryj", + "backupDescription": "Możesz wykonać kopię zapasową wszystkich monitorów i wszystkich powiadomień do pliku JSON.", + "backupDescription2": "PS: Historia i dane zdarzeń nie są uwzględniane.", + "backupDescription3": "Poufne dane, takie jak tokeny powiadomień, są zawarte w pliku eksportu, prosimy o ostrożne przechowywanie.", + "alertNoFile": "Wybierz plik do importu.", + "alertWrongFileType": "Proszę wybrać plik JSON.", + "Clear all statistics": "Wyczyść wszystkie statystyki", + "Skip existing": "Pomiń istniejące", + "Overwrite": "Nadpisz", + "Options": "Opcje", + "Keep both": "Zachowaj oba", + "Verify Token": "Zweryfikuj token", + "Setup 2FA": "Konfiguracja 2FA", + "Enable 2FA": "Włącz 2FA", + "Disable 2FA": "Wyłącz 2FA", + "2FA Settings": "Ustawienia 2FA", + "Two Factor Authentication": "Uwierzytelnienie dwuskładnikowe", + "Active": "Włączone", + "Inactive": "Wyłączone", + "Token": "Token", + "Show URI": "Pokaż URI", + "Tags": "Tagi", + "Add New below or Select...": "Dodaj nowy poniżej lub wybierz…", + "Tag with this name already exist.": "Tag o tej nazwie już istnieje.", + "Tag with this value already exist.": "Tag o tej wartości już istnieje.", + "color": "kolor", + "value (optional)": "wartość (opcjonalnie)", + "Gray": "Szary", + "Red": "Czerwony", + "Orange": "Pomarańczowy", + "Green": "Zielony", + "Blue": "Niebieski", + "Indigo": "Indygo", + "Purple": "Fioletowy", + "Pink": "Różowy", + "Search...": "Szukaj…", + "Avg. Ping": "Średni ping", + "Avg. Response": "Średnia odpowiedź", + "Entry Page": "Strona startowa", + "statusPageNothing": "Nic tu nie ma, dodaj grupę lub monitor.", + "No Services": "Brak usług", + "All Systems Operational": "Wszystkie systemy działają poprawnie", + "Partially Degraded Service": "Część usług nie działa", + "Degraded Service": "Usługa nie działa", + "Add Group": "Dodaj grupę", + "Add a monitor": "Dodaj monitor", + "Edit Status Page": "Edytuj stronę statusu", + "Go to Dashboard": "Idź do panelu", + "Status Page": "Strona statusu", + "Status Pages": "Strony statusów", + "defaultNotificationName": "Moje powiadomienie {notification} ({number})", + "here": "tutaj", + "Required": "Wymagane", + "telegram": "Telegram", + "Bot Token": "Token bota", + "wayToGetTelegramToken": "Token można uzyskać z {0}.", + "Chat ID": "Identyfikator czatu", + "supportTelegramChatID": "Czat wsparcia technicznego / Bezpośrednia rozmowa / Czat grupowy", + "wayToGetTelegramChatID": "Możesz uzyskać swój identyfikator czatu, wysyłając wiadomość do bota i przechodząc pod ten adres URL, aby wyświetlić identyfikator czatu:", + "YOUR BOT TOKEN HERE": "TWÓJ TOKEN BOTA", + "chatIDNotFound": "Identyfikator czatu nie znaleziony, najpierw napisz do bota", + "webhook": "Webhook", + "Post URL": "Adres URL", + "Content Type": "Rodzaj danych", + "webhookJsonDesc": "{0} jest dobry w przypadku serwerów HTTP, takich jak express.js", + "webhookFormDataDesc": "{multipart} jest dobry dla PHP, musisz jedynie przetworzyć dane przez {decodeFunction}", + "smtp": "Email (SMTP)", + "secureOptionNone": "Brak / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Zignoruj błędy TLS", + "From Email": "Nadawca (OD)", + "To Email": "Odbiorca (DO)", + "smtpCC": "DW", + "smtpBCC": "UDW", + "discord": "Discord", + "Discord Webhook URL": "URL webhook Discorda", + "wayToGetDiscordURL": "Możesz go uzyskać, przechodząc do Ustawienia serwera -> Integracje -> Webhooki -> Tworzenie webhooka", + "Bot Display Name": "Wyświetlana nazwa bota", + "Prefix Custom Message": "Własny początek wiadomości", + "Hello @everyone is...": "Hej {'@'}everyone…", + "teams": "Microsoft Teams", + "Webhook URL": "URL webhooka", + "wayToGetTeamsURL": "Możesz dowiedzieć się, jak utworzyć adres url webhooka {0}.", + "signal": "Signal", + "Number": "Numer", + "Recipients": "Odbiorcy", + "needSignalAPI": "Musisz mieć klienta Signal z REST API.", + "wayToCheckSignalURL": "W celu dowiedzenia się, jak go skonfigurować, odwiedź poniższy link:", + "signalImportant": "UWAGA: Nie można mieszać nazw grup i numerów odbiorców!", + "gotify": "Gotify", + "Application Token": "Token aplikacji", + "Server URL": "Server URL", + "Priority": "Priorytet", + "slack": "Slack", + "Icon Emoji": "Ikona emoji", + "Channel Name": "Nazwa kanału", + "Uptime Kuma URL": "Adres Uptime Kuma", + "aboutWebhooks": "Więcej informacji na temat webhooków: {0}", + "aboutChannelName": "Podaj nazwę kanału {0} w polu Nazwa kanału, jeśli chcesz pominąć kanał webhooka. Np.: #inny-kanal", + "aboutKumaURL": "Jeśli pozostawisz pole Adres Uptime Kuma puste, domyślnie będzie to strona projektu na GitHub.", + "emojiCheatSheet": "Ściąga emoji: {0}", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "Push od Techulus", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (obsługuje 50+ usług powiadomień)", + "GoogleChat": "Google Chat (wyłącznie Google Workspace)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "Klucz użytkownika", + "Device": "Urządzenie", + "Message Title": "Tytuł wiadomości", + "Notification Sound": "Dźwięk powiadomienia", + "More info on:": "Więcej informacji na: {0}", + "pushoverDesc1": "Priorytet awaryjny (2) ma domyślny 30-sekundowy limit czasu między kolejnymi próbami i wygaśnie po 1 godzinie.", + "pushoverDesc2": "Jeśli chcesz wysyłać powiadomienia na różne urządzenia, wypełnij pole Urządzenie.", + "SMS Type": "Rodzaj SMS", + "octopushTypePremium": "Premium (szybki - rekomendowany dla powiadomień)", + "octopushTypeLowCost": "Low Cost (wolny, czasami blokowany przez operatorów)", + "Check octopush prices": "Sprawdź ceny Octopush {0}.", + "octopushPhoneNumber": "Numer telefonu (format międzynarodowy np.: +33612345678) ", + "octopushSMSSender": "Nadawca SMS: 3-11 znaków alfanumerycznych i spacji (a-zA-Z0-9)", + "LunaSea Device ID": "Identyfikator urządzenia LunaSea", + "Apprise URL": "URL Apprise", + "Example:": "Przykład: {0}", + "Read more:": "Czytaj dalej: {0}", + "Status:": "Status: {0}", + "Read more": "Czytaj dalej", + "appriseInstalled": "Apprise jest zainstalowane.", + "appriseNotInstalled": "Apprise nie zostało zainstalowane. {0}", + "Access Token": "Token dostępu", + "Channel access token": "Token dostępu kanału", + "Line Developers Console": "Konsola deweloperska Line", + "lineDevConsoleTo": "Konsola deweloperska Line - {0}", + "Basic Settings": "Ustawienia ogólne", + "User ID": "Identyfikator użytkownika", + "Messaging API": "API wiadomości", + "wayToGetLineChannelToken": "Najpierw uzyskaj dostęp do {0}, utwórz dostawcę i kanał (Messaging API), a następnie możesz uzyskać token dostępu do kanału i identyfikator użytkownika z wyżej wymienionych pozycji menu.", + "Icon URL": "Adres Ikony", + "aboutIconURL": "Możesz podać link do zdjęcia w \"Adres URL ikony\", aby zastąpić domyślne zdjęcie profilowe. Nie będzie używany, jeśli ustawiona jest ikona emoji.", + "aboutMattermostChannelName": "Możesz zastąpić domyślny kanał, na którym publikowane są posty webhooka, wpisując nazwę kanału w polu \"Nazwa kanału\". Należy to włączyć w ustawieniach webhooka Mattermost. Np.: #inny-kanał", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - tanie, lecz wolne. Dostępne tylko w Polsce.", + "promosmsTypeFlash": "SMS FLASH - wiadomość automatycznie wyświetli się na urządzeniu. Dostępne tylko w Polsce.", + "promosmsTypeFull": "SMS FULL - szybkie i dostępne międzynarodowo. Wersja premium usługi, która pozwala min. ustawić własną nazwę nadawcy.", + "promosmsTypeSpeed": "SMS SPEED - wysyłka priorytetowa, ma wszystkie zalety SMS FULL.", + "promosmsPhoneNumber": "Numer odbiorcy", + "promosmsSMSSender": "Nadawca SMS (wcześniej zatwierdzone nazwy z panelu PromoSMS)", + "promosmsAllowLongSMS": "Zezwól na długie SMSy", + "Primary Base URL": "Główny URL", + "Push URL": "Push URL", + "needPushEvery": "Powinieneś wywoływać ten URL co {0} sekund.", + "pushOptionalParams": "Parametry opcjonalne: {0}", + "emailCustomSubject": "Niestandardowy temat", + "checkPrice": "Sprawdź ceny {0}:", + "octopushLegacyHint": "Czy używasz starszej wersji Octopush (2011-2020) czy nowej wersji?", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "Adres URL serwera domowego (z http(s):// i opcjonalnie port)", + "Internal Room Id": "Wewnętrzne ID pokoju", + "matrixDesc1": "Możesz znaleźć wewnętrzne ID pokoju, patrząc w zaawansowanej sekcji ustawień pokoju w twoim kliencie Matrix. Powinien on wyglądać jak !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Jest wysoce zalecane, abyś stworzył nowego użytkownika i nie używał tokena dostępu swojego użytkownika Matrix, ponieważ pozwoli on na pełny dostęp do twojego konta i wszystkich pokoi, do których dołączyłeś. Zamiast tego, utwórz nowego użytkownika i zaproś go tylko do pokoju, w którym chcesz otrzymywać powiadomienia. Możesz uzyskać token dostępu przez uruchomienie {0}", + "Method": "Metoda", + "Body": "Treść", + "Headers": "Nagłówki", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "Nagłówki żądania nie są w poprawnym formacie JSON: ", + "BodyInvalidFormat": "Treść żądania nie jest w poprawnym formacie JSON: ", + "Monitor History": "Historia monitorów", + "clearDataOlderThan": "Przechowuj dane dotyczące historii monitorowania {0} dni.", + "PasswordsDoNotMatch": "Hasła nie pasują.", + "records": "rekordy", + "One record": "Jeden rekord", + "steamApiKeyDescription": "Do monitorowania serwera gier Steam potrzebny jest klucz Steam Web-API. Możesz zarejestrować swój klucz API tutaj: ", + "Current User": "Aktualny użytkownik", + "topic": "Temat", + "topicExplanation": "Temat MQTT do monitorowania", + "successMessage": "Komunikat o powodzeniu", + "successMessageExplanation": "Komunikat MQTT, który zostanie uznany za powodzenie", + "recent": "Ostatnie", + "Done": "Zrobione", + "Info": "Info", + "Security": "Bezpieczeństwo", + "Steam API Key": "Klucz Steam API", + "Shrink Database": "Zmniejsz bazę danych", + "Pick a RR-Type...": "Wybierz typ RR…", + "Pick Accepted Status Codes...": "Wybierz akceptowalne kody statusu…", + "Default": "Domyślnie", + "HTTP Options": "Opcje HTTP", + "Create Incident": "Stwórz incydent", + "Title": "Tytuł", + "Content": "Treść", + "Style": "Styl", + "info": "info", + "warning": "ostrzeżenie", + "danger": "niebezpieczeństwo", + "primary": "podstawowy", + "light": "jasny", + "dark": "ciemny", + "Post": "Wyślij", + "Please input title and content": "Podaj tytuł i treść", + "Created": "Stworzony", + "Last Updated": "Ostatnio zaktualizowany", + "Unpin": "Odepnij", + "Switch to Light Theme": "Przełącz na jasny motyw", + "Switch to Dark Theme": "Przełącz na ciemny motyw", + "Show Tags": "Pokaż tagi", + "Hide Tags": "Ukryj tagi", + "Description": "Opis", + "No monitors available.": "Brak dostępnych monitorów.", + "Add one": "Dodaj jeden", + "No Monitors": "Brak monitorów", + "Untitled Group": "Nienazwana grupa", + "Services": "Usługi", + "Discard": "Odrzuć", + "Cancel": "Anuluj", + "Powered by": "Napędzane przez", + "clicksendsms": "ClickSend SMS", + "apiCredentials": "Poświadczenia API", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "Nazwa użytkownika API (z prefiksem webapi_)", + "serwersmsAPIPassword": "Hasło API", + "serwersmsPhoneNumber": "Numer telefonu", + "serwersmsSenderName": "Nazwa nadawcy (zatwierdzona w panelu klienta)", + "smseagle": "SMSEagle", + "smseagleTo": "Numer/y telefonu", + "smseagleGroup": "Grupa/y z Książki adresowej", + "smseagleContact": "Kontakt/y z Książki adresowej", + "smseagleRecipientType": "Typ odbiorcy", + "smseagleRecipient": "Odbiorca/y (wiele musi być oddzielone przecinkami)", + "smseagleToken": "Klucz dostępu API", + "smseagleUrl": "URL Twojego urządzenia SMSEagle", + "smseagleEncoding": "Wyślij jako Unicode", + "smseaglePriority": "Priorytet wiadomości (0-9, domyślnie = 0)", + "stackfield": "Stackfield", + "Customize": "Dostosuj", + "Custom Footer": "Niestandardowa stopka", + "Custom CSS": "Niestandardowy CSS", + "smtpDkimSettings": "Ustawienia DKIM", + "smtpDkimDesc": "Zapoznaj się z Nodemailer DKIM {0}, aby dowiedzieć się więcej.", + "documentation": "dokumentacja", + "smtpDkimDomain": "Nazwa domeny", + "smtpDkimKeySelector": "Selektor klucza", + "smtpDkimPrivateKey": "Klucz prywatny", + "smtpDkimHashAlgo": "Algorytm haszujący (opcjonalne)", + "smtpDkimheaderFieldNames": "Klucze nagłówka do podpisu (opcjonalne)", + "smtpDkimskipFields": "Klucze nagłówka do pominięcia (opcjonalne)", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "Punkt końcowy API", + "alertaEnvironment": "Środowisko", + "alertaApiKey": "Klucz API", + "alertaAlertState": "Stan alarmowy", + "alertaRecoverState": "Stan odzyskania", + "deleteStatusPageMsg": "Jesteś pewien, że chcesz usunąć tę stronę statusów?", + "Proxies": "Proxy", + "default": "Domyślny", + "enabled": "Włączony", + "setAsDefault": "Ustaw jako domyślny", + "deleteProxyMsg": "Jesteś pewien, że chcesz usunąć proxy ze wszystkich monitorów?", + "proxyDescription": "Proxy muszą być przypisane do monitora, aby działały.", + "enableProxyDescription": "Ten serwer proxy nie będzie miał wpływu na żądania monitorów, dopóki nie zostanie aktywowany. Możesz kontrolować tymczasowe wyłączenie serwera proxy ze wszystkich monitorów za pomocą statusu aktywacji.", + "setAsDefaultProxyDescription": "Ten serwer proxy będzie domyślnie włączony dla nowych monitorów. Można go jednak wyłączyć osobno dla każdego monitora.", + "Certificate Chain": "Łańcuch certyfikatów", + "Valid": "Ważny", + "Invalid": "Nieważny", + "AccessKeyId": "ID klucza dostępu", + "SecretAccessKey": "AccessKey Sekret", + "PhoneNumbers": "Numery telefonów", + "TemplateCode": "Kod szablonu", + "SignName": "Podpis", + "Sms template must contain parameters: ": "Szablon sms musi posiadać parametry: ", + "Bark Endpoint": "Punkt końcowy Bark", + "WebHookUrl": "WebHookUrl", + "SecretKey": "Tajny klucz", + "For safety, must use secret key": "Ze względów bezpieczeństwa musisz użyć tajnego klucza", + "Device Token": "Token urządzenia", + "Platform": "Platforma", + "Huawei": "Huawei", + "High": "Wysoki", + "Retry": "Ponów", + "Topic": "Temat", + "WeCom Bot Key": "Klucz bota WeCom", + "Setup Proxy": "Skonfiguruj proxy", + "Proxy Protocol": "Protokół proxy", + "Proxy Server": "Serwer proxy", + "Proxy server has authentication": "Serwer proxy ma autoryzację", + "User": "Użytkownik", + "Installed": "Zainstalowany", + "Not installed": "Nie zainstalowany", + "Running": "Działa", + "Not running": "Nie działa", + "Remove Token": "Usuń token", + "Start": "Start", + "Stop": "Stop", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Dodaj nową stronę statusów", + "Slug": "Symbol", + "Accept characters:": "Dozwolone znaki:", + "startOrEndWithOnly": "Zaczynające się i kończące wyłącznie {0} znakami", + "No consecutive dashes": "Bez powtarzających się myślników", + "Next": "Dalej", + "The slug is already taken. Please choose another slug.": "Ten symbol jest już zajęty. Proszę, wybierz inny.", + "No Proxy": "Bez proxy", + "Authentication": "Uwierzytelnianie", + "HTTP Basic Auth": "Podstawowa autoryzacja HTTP", + "New Status Page": "Nowa strona statusu", + "Page Not Found": "Strona nie została znaleziona", + "Reverse Proxy": "Zwrotny serwer proxy", + "Backup": "Backup", + "About": "O skrypcie", + "wayToGetCloudflaredURL": "(Pobierz cloudflared z {0})", + "cloudflareWebsite": "strona Cloudflare", + "Message:": "Wiadomość:", + "Don't know how to get the token? Please read the guide:": "Nie wiesz, jak uzyskać token? Przeczytaj proszę poradnik:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Bieżące połączenie może zostać utracone, jeśli aktualnie łączysz się przez tunel Cloudflare. Czy na pewno chcesz to przerwać? Wpisz swoje aktualne hasło, aby je potwierdzić.", + "Other Software": "Inne oprogramowanie", + "For example: nginx, Apache and Traefik.": "Na przykład: nginx, Apache i Traefik.", + "Please read": "Przeczytaj proszę", + "Subject:": "Temat:", + "Valid To:": "Ważny do:", + "Days Remaining:": "Pozostało dni:", + "Issuer:": "Wydawca:", + "Fingerprint:": "Odcisk palca:", + "No status pages": "Brak stron statusów", + "Domain Name Expiry Notification": "Powiadomienie o wygasaniu domeny", + "Proxy": "Proxy", + "Date Created": "Data stworzenia", + "onebotHttpAddress": "Adres HTTP OneBot", + "onebotMessageType": "Rodzaj wiadomości OneBot", + "onebotGroupMessage": "Grupowa", + "onebotPrivateMessage": "Prywatna", + "onebotUserOrGroupId": "ID Grupy/Użytkownika", + "onebotSafetyTips": "Ze względów bezpieczeństwa musisz ustawić token dostępu", + "PushDeer Key": "Klucz PushDeer", + "Footer Text": "Treść stopki", + "Show Powered By": "Pokaż co napędza stronę", + "Domain Names": "Domeny", + "signedInDisp": "Zalogowany jako {0}", + "signedInDispDisabled": "Autoryzacja wyłączona.", + "resendEveryXTimes": "Wysyłaj ponownie co {0} razy", + "resendDisabled": "Ponowne wysyłanie jest wyłączone", + "Maintenance": "Konserwacja", + "statusMaintenance": "Konserwacja", + "Schedule maintenance": "Planowanie konserwacji", + "Affected Monitors": "Monitory dotknięte problemem", + "Pick Affected Monitors...": "Wybierz monitory, których to dotyczy…", + "Start of maintenance": "Rozpoczęcie konserwacji", + "All Status Pages": "Wszystkie strony statusu", + "Select status pages...": "Wybierz strony statusu…", + "recurringIntervalMessage": "Uruchom raz dziennie | Uruchom raz na {0} dni", + "affectedMonitorsDescription": "Wybierz monitory, których dotyczy bieżąca konserwacja", + "affectedStatusPages": "Pokaż ten komunikat o konserwacji na wybranych stronach statusu", + "atLeastOneMonitor": "Wybierz co najmniej jeden monitor, którego dotyczy problem", + "deleteMaintenanceMsg": "Czy na pewno chcesz usunąć tę konserwację?", + "dnsPortDescription": "Port serwera DNS. Domyślnie 53. Możesz zmienić port w dowolnym momencie.", + "Resend Notification if Down X times consecutively": "Wyślij ponownie powiadomienie, jeśli nie działa X razy z rzędu", + "error": "błąd", + "critical": "krytyczny", + "wayToGetPagerDutyKey": "Możesz to uzyskać, przechodząc do Service -> Service Directory -> (wybierz usługę) -> Integrations -> Add integration. Tutaj możesz wyszukać \"Events API V2\". Więcej informacji {0}", + "Integration Key": "Klucz integracji", + "Integration URL": "Adres URL integracji", + "Auto resolve or acknowledged": "Automatycznie rozwiązany lub potwierdzony", + "do nothing": "nie rób nic", + "auto acknowledged": "auto potwierdzony", + "auto resolve": "automatycznie rozwiązany", + "Bark Group": "Grupa Bark", + "Bark Sound": "Dźwięk Bark", + "HTTP Headers": "Nagłówki HTTP", + "Trust Proxy": "Ufaj proxy", + "HomeAssistant": "Asystent domowy", + "RadiusSecret": "Sekretny klucz Radius", + "RadiusSecretDescription": "Współdzielony sekretny klucz pomiędzy klientem a serwerem", + "RadiusCalledStationId": "Id stacji wywoływanej", + "RadiusCalledStationIdDescription": "Identyfikator wywoływanego urządzenia", + "RadiusCallingStationId": "Id stacji wywoławczej", + "RadiusCallingStationIdDescription": "Identyfikator urządzenia wywołującego", + "Certificate Expiry Notification": "Powiadomienie o wygaśnięciu certyfikatu", + "API Username": "Nazwa użytkownika API", + "API Key": "Klucz API", + "Recipient Number": "Numer odbiorcy", + "From Name/Number": "Od nazwa/numer", + "Leave blank to use a shared sender number.": "Pozostaw puste, aby użyć wspólnego numeru nadawcy.", + "Octopush API Version": "Wersja API Octopush", + "Legacy Octopush-DM": "Starsze Octopush-DM", + "endpoint": "punkt końcowy", + "octopushAPIKey": "\"API key\" z poświadczeń HTTP API w panelu sterowania", + "octopushLogin": "\"Login\" z poświadczeń HTTP API w panelu sterowania", + "promosmsLogin": "Nazwa logowania API", + "promosmsPassword": "Hasło API", + "pushoversounds pushover": "Pushover (domyślny)", + "pushoversounds bike": "Rower", + "pushoversounds bugle": "chrząszcz", + "pushoversounds cashregister": "Kasa fiskalna", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Kosmiczny", + "pushoversounds falling": "Spadek", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Przychodzące", + "pushoversounds intermission": "Przerwa", + "pushoversounds magic": "Magia", + "pushoversounds mechanical": "Mechaniczny", + "pushoversounds pianobar": "fortepianowy klawisz", + "pushoversounds siren": "Syrena", + "pushoversounds spacealarm": "Alarm kosmiczny", + "pushoversounds tugboat": "Holownik", + "pushoversounds alien": "Alien Alarm (długie)", + "pushoversounds climb": "Climb (długie)", + "pushoversounds persistent": "Persistent (długie)", + "pushoversounds echo": "Pushover Echo (długie)", + "pushoversounds updown": "Up Down (długie)", + "pushoversounds vibrate": "Tylko wibracje", + "pushoversounds none": "Brak (cisza)", + "pushyAPIKey": "Tajny klucz API", + "pushyToken": "Token urządzenia", + "Show update if available": "Pokaż aktualizację, jeśli jest dostępna", + "Also check beta release": "Sprawdź również wydanie beta", + "Using a Reverse Proxy?": "Używasz odwróconego proxy?", + "Check how to config it for WebSocket": "Sprawdź jak go skonfigurować dla WebSocket", + "Steam Game Server": "Serwer gry Steam", + "Most likely causes:": "Najbardziej prawdopodobne przyczyny:", + "The resource is no longer available.": "Zasób nie jest już dostępny.", + "There might be a typing error in the address.": "W adresie może być błąd w pisowni.", + "What you can try:": "Co możesz spróbować:", + "Retype the address.": "Ponownie wpisz adres.", + "Go back to the previous page.": "Wróć do poprzedniej strony.", + "Coming Soon": "Wkrótce", + "wayToGetClickSendSMSToken": "Możesz uzyskać nazwę użytkownika API i klucz API z {0}.", + "Connection String": "Ciąg połączenia", + "Query": "Zapytanie", + "settingsCertificateExpiry": "Wygaśnięcie certyfikatu TLS", + "certificationExpiryDescription": "Monitory HTTPS uruchamiają powiadomienia o wygaśnięciu certyfikatu TLS w:", + "Setup Docker Host": "Konfiguracja hosta Docker", + "Connection Type": "Typ połączenia", + "Docker Daemon": "Demon Dockera", + "deleteDockerHostMsg": "Czy na pewno chcesz usunąć ten host Dockera dla wszystkich monitorów?", + "socket": "Gniazdo", + "tcp": "TCP / HTTP", + "Docker Container": "Kontener Dockera", + "Container Name / ID": "Nazwa kontenera / ID", + "Docker Host": "Host Dockera", + "Docker Hosts": "Hosty Dockera", + "ntfy Topic": "Temat ntfy", + "Domain": "Domena", + "Workstation": "Stacja robocza", + "disableCloudflaredNoAuthMsg": "Jesteś w trybie No Auth, hasło nie jest wymagane.", + "trustProxyDescription": "Zaufaj nagłówkom 'X-Forwarded-*'. Jeśli chcesz uzyskać poprawne IP klienta, a twój Uptime Kuma jest za proxy, takim jak Nginx lub Apache, powinieneś to włączyć.", + "wayToGetLineNotifyToken": "Możesz uzyskać token dostępu z {0}", + "Examples": "Przykłady", + "Home Assistant URL": "URL Home Assistant", + "Long-Lived Access Token": "Długotrwały token dostępu", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Długotrwały token dostępu można utworzyć klikając na nazwę swojego profilu (na dole po lewej stronie) i przewijając do dołu, a następnie klikając Create Token. ", + "Notification Service": "Usługa powiadamiania", + "default: notify all devices": "domyślnie: powiadamiaj wszystkie urządzenia", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Listę usług powiadamiania można znaleźć w Home Assistant pod \"Developer Tools > Services\" wyszukaj \"notification\", aby znaleźć nazwę swojego urządzenia/telefonu.", + "Automations can optionally be triggered in Home Assistant:": "Automaty mogą być opcjonalnie uruchamiane w Home Assistant:", + "Trigger type:": "Typ wyzwalacza:", + "Event type:": "Typ zdarzenia:", + "Event data:": "Dane o zdarzeniu:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Następnie wybierz akcję, na przykład przełącz scenę na taką, w której światło RGB jest czerwone.", + "Frontend Version": "Wersja frontu", + "Frontend Version do not match backend version!": "Wersja frontu nie pasuje do wersji backendu!", + "Base URL": "Bazowy adres URL", + "goAlertInfo": "GoAlert to aplikacja open source do planowania, automatycznych eskalacji i powiadomień (jak SMS lub połączenia głosowe). Automatycznie angażuj właściwą osobę, we właściwy sposób i we właściwym czasie! {0}", + "goAlertIntegrationKeyInfo": "Pobierz generyczny klucz integracyjny API dla usługi, którego wartość skopiowanego tokena URL jest zwykle w formacie \"aaaaaaaa-bbb-cccc-dddd-eeeeee\".", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Przestarzałe: ponieważ dodano wiele funkcji i funkcja tworzenia kopii zapasowych nie jest wystarczająco utrzymywana, nie może generować ani przywracać pełnej kopii zapasowej.", + "backupRecommend": "Zamiast tego należy wykonać bezpośrednią kopię zapasową woluminu lub folderu danych (./data/).", + "Optional": "Opcjonalne", + "squadcast": "Squadcast", + "SendKey": "Przycisk Wyślij", + "SMSManager API Docs": "Dokumentacja API SMSManager ", + "Gateway Type": "Typ bramy", + "SMSManager": "SMSManager", + "You can divide numbers with": "Możesz dzielić liczby przez", + "or": "lub", + "recurringInterval": "odstęp czasu", + "Recurring": "Powtarzający się", + "strategyManual": "Aktywowany/dezaktywowany ręcznie", + "warningTimezone": "Używa strefy czasowej serwera", + "weekdayShortMon": "pon", + "weekdayShortTue": "wt", + "weekdayShortWed": "śr", + "weekdayShortThu": "czw", + "weekdayShortFri": "pt", + "weekdayShortSat": "sob", + "weekdayShortSun": "niedz", + "dayOfWeek": "dzień tygodnia", + "dayOfMonth": "dzień miesiąca", + "lastDay": "Ostatni dzień", + "lastDay1": "Ostatni dzień miesiąca", + "lastDay2": "2. ostatni dzień miesiąca", + "lastDay3": "3. ostatni dzień miesiąca", + "lastDay4": "4. ostatni dzień miesiąca", + "No Maintenance": "Brak konserwacji", + "pauseMaintenanceMsg": "Jesteś pewien, że chcesz zatrzymać?", + "maintenanceStatus-under-maintenance": "Podczas konserwacji", + "maintenanceStatus-inactive": "Nieaktywny", + "maintenanceStatus-scheduled": "Zaplanowany", + "maintenanceStatus-ended": "Zakończony", + "maintenanceStatus-unknown": "Nieznany", + "Display Timezone": "Wyświetlana strefa czasowa", + "Server Timezone": "Strefa czasowa serwera", + "statusPageMaintenanceEndDate": "Koniec", + "Help": "Pomoc", + "Passive Monitor Type": "Pasywny typ monitora", + "Enable": "Włącz", + "confirmDeleteTagMsg": "Czy na pewno chcesz usunąć ten tag? Monitory powiązane z tym tagiem nie zostaną usunięte.", + "Kook": "Kook", + "Enable TLS": "Włącz TLS", + "webhookAdditionalHeadersDesc": "Ustawia dodatkowe nagłówki wysyłane z webhookiem. Każdy nagłówek powinien być zdefiniowany jako klucz/wartość JSON.", + "dnsCacheDescription": "Może nie działać w niektórych środowiskach IPv6, wyłącz ją, jeśli napotkasz jakiekolwiek problemy.", + "wayToGetKookBotToken": "Utwórz aplikację i uzyskaj swój token bota na {0}", + "wayToGetKookGuildID": "Włącz 'Developer Mode' w ustawieniach Kook'a i kliknij prawym przyciskiem myszy na gildię, aby uzyskać jej ID", + "Game": "Gra", + "Specific Monitor Type": "Konkretny typ monitora", + "Monitor": "Monitor | Monitory", + "webhookAdditionalHeadersTitle": "Dodatkowe nagłówki", + "Custom": "Własny", + "ZohoCliq": "ZohoCliq", + "Disable": "Wyłącz", + "Date and Time": "Data i czas", + "IconUrl": "URL ikony", + "Enable DNS Cache": "(Przestarzałe) Włącz pamięć podręczną DNS dla monitorów HTTP", + "Single Maintenance Window": "Pojedyncze okno konserwacji", + "Effective Date Range": "Zakres dat obowiązywania (opcjonalnie)", + "Schedule Maintenance": "Planowanie konserwacji", + "DateTime Range": "Zakres czasowy", + "Maintenance Time Window of a Day": "Okno czasowe konserwacji na dzień", + "wayToGetZohoCliqURL": "Możesz dowiedzieć się, jak utworzyć adres URL webhook {0}.", + "dataRetentionTimeError": "Okres przechowywania musi wynosić 0 lub więcej", + "infiniteRetention": "Ustaw na 0, aby uzyskać nieskończony okres przechowywania.", + "enableGRPCTls": "Zezwalaj na wysyłanie żądania gRPC z połączeniem TLS", + "grpcMethodDescription": "Nazwa metody jest konwertowana na format camelCase, taki jak sayHello, check, itp.", + "Guild ID": "ID gildii", + "Proto Content": "Zawartość Proto", + "Proto Method": "Metoda Proto", + "Proto Service Name": "Nazwa usługi Proto", + "Economy": "Ekonomia", + "Strategy": "Strategia", + "Free Mobile User Identifier": "Darmowy mobilny identyfikator użytkownika", + "Free Mobile API Key": "Darmowy mobilny klucz API", + "Lowcost": "Tani", + "high": "wysoki", + "General Monitor Type": "Ogólny typ monitora", + "Packet Size": "Rozmiar pakietu", + "uninstalling": "Odinstalowywanie", + "loadingError": "Nie można pobrać danych, proszę spróbować ponownie później.", + "plugin": "Plugin | Pluginy", + "install": "Instaluj", + "installing": "Instalowanie", + "uninstall": "Odinstaluj", + "confirmUninstallPlugin": "Czy na pewno chcesz odinstalować tę wtyczkę?", + "Custom Monitor Type": "Własny typ monitora", + "markdownSupported": "Obsługiwana składnia Markdown", + "Google Analytics ID": "Identyfikator Google Analytics", + "Edit Tag": "Edytuj Tag", + "Server Address": "Adres Serwera", + "Learn More": "Dowiedz się więcej", + "Body Encoding": "Kodowanie treści", + "Expiry": "Wygasa", + "Expiry date": "Data wygaśnięcia", + "Don't expire": "Nie wygaszaj", + "Continue": "Kontynuuj", + "Add Another": "Dodaj kolejne", + "Add API Key": "Dodaj klucz API", + "No API Keys": "Brak kluczy API", + "apiKey-active": "Aktywny", + "apiKey-expired": "Wygasły", + "apiKey-inactive": "Nieaktywny", + "Expires": "Wygasa", + "Generate": "Generuj", + "disableAPIKeyMsg": "Czy na pewno chcesz wyłączyć ten klucz API?", + "deleteAPIKeyMsg": "Czy na pewno chcesz usunąć ten klucz API?", + "pagertreeIntegrationUrl": "URL integracji", + "pagertreeUrgency": "Pilność", + "pagertreeSilent": "Cichy", + "pagertreeLow": "Niski", + "pagertreeMedium": "Średni", + "pagertreeHigh": "Wysoki", + "pagertreeCritical": "Krytyczny", + "pagertreeResolve": "Automatyczne rozwiązywanie", + "Clone Monitor": "Klonuj monitor", + "Clone": "Klonuj", + "cloneOf": "Klon {0}", + "API Keys": "Klucze API", + "Key Added": "Klucz dodany", + "pagertreeDoNothing": "Nie rób nic", + "wayToGetPagerTreeIntegrationURL": "Po utworzeniu integracji Uptime Kuma w PagerTree, należy skopiować Endpoint. Zobacz pełne szczegóły {0}", + "notificationRegional": "Regionalne", + "twilioFromNumber": "Z numeru", + "twilioToNumber": "Do numeru", + "lunaseaTarget": "Cel", + "twilioAccountSID": "SID konta", + "twilioAuthToken": "Token autoryzacji / klucz Api Secret", + "apiKeyAddedMsg": "Twój klucz API został dodany. Prosimy o zanotowanie go, ponieważ nie będzie on już więcej pokazywany.", + "telegramMessageThreadID": "(Opcjonalne) ID wątku wiadomości", + "telegramMessageThreadIDDescription": "Opcjonalny Unikalny identyfikator dla docelowego wątku wiadomości (tematu) forum; tylko dla supergrup forum", + "telegramProtectContent": "Ochrona przekazywania/zapisywania", + "telegramProtectContentDescription": "Jeśli włączona, wiadomości bota w Telegramie będą chronione przed przekazywaniem i zapisywaniem.", + "telegramSendSilently": "Wyślij po cichu", + "telegramSendSilentlyDescription": "Wysyła wiadomość po cichu. Użytkownicy otrzymają powiadomienie bez dźwięku.", + "statusPageRefreshIn": "Odświeżenie w ciągu: {0}", + "lunaseaDeviceID": "ID urządzenia", + "lunaseaUserID": "ID użytkownika", + "Add New Tag": "Dodaj nowy tag", + "startDateTime": "Data/godzina rozpoczęcia", + "cronSchedule": "Harmonogram: ", + "invalidCronExpression": "Nieprawidłowe sformułowanie Cron: {0}", + "sameAsServerTimezone": "Tak jak strefa czasowa serwera", + "endDateTime": "Data/godzina zakończenia", + "cronExpression": "Wyrażenie Cron", + "ntfyAuthenticationMethod": "Metoda uwierzytelniania", + "ntfyUsernameAndPassword": "Nazwa użytkownika i hasło", + "noGroupMonitorMsg": "Niedostępna. Stwórz najpierw grupę monitorów.", + "Close": "Zamknij", + "pushoverMessageTtl": "TTL wiadomości (sekundy)", + "Home": "Strona główna", + "Group": "Grupa", + "Monitor Group": "Grupa monitora", + "Reconnecting...": "Ponowne łączenie...", + "Cannot connect to the socket server": "Nie można połączyć się z serwerem gniazda", + "Badge Label Suffix": "Sufiks etykiety odznaki", + "Badge Warn Color": "Kolor ostrzeżenia odznaki", + "Badge Style": "Styl odznaki", + "Badge value (For Testing only.)": "Wartość odznaki (tylko do testów.)", + "Show Clickable Link": "Pokaż klikalne łącze", + "Show Clickable Link Description": "Jeśli to pole jest zaznaczone, każdy, kto ma dostęp do tej strony stanu, może mieć dostęp do adresu URL monitora.", + "Open Badge Generator": "Generator odznak Open Badge", + "Badge Generator": "{0} Generator odznak", + "Monitor Setting": "{0} Ustawienia monitora", + "Badge Duration": "Czas trwania odznaki", + "Badge Label": "Etykieta odznaki", + "Badge Suffix": "Sufiks wartości odznaki", + "chromeExecutable": "Plik wykonywalny Chrome/Chromium", + "chromeExecutableAutoDetect": "Wykryj automatycznie", + "chromeExecutableDescription": "W przypadku użytkowników Dockera, jeśli Chromium nie jest jeszcze zainstalowany, instalacja i wyświetlenie wyniku testu może zająć kilka minut. Zajmuje 1 GB miejsca na dysku.", + "Edit Maintenance": "Edycja konserwacji", + "Badge Type": "Typ odznaki", + "Badge Prefix": "Prefiks wartości odznaki", + "Badge Color": "Kolor odznaki", + "Badge Label Color": "Kolor etykiety Odznaki", + "Badge Label Prefix": "Prefiks etykiety identyfikatora", + "Badge Pending Color": "Oczekujący kolor odznaki", + "Badge Maintenance Color": "Kolor utrzymania odznaki", + "Badge URL": "Adres URL odznaki", + "gamedigGuessPort": "Gamedig: Port Guess", + "filterActive": "Aktywny", + "webhookCustomBodyDesc": "Definiuje niestandardową treść HTTP dla żądania. Akceptowane są zmienne szablonowe {msg}, {heartbeat}, {monitor}.", + "Select": "Wybierz", + "aboutNotifyChannel": "Powiadomienie kanału wywoła powiadomienie na komputerze lub urządzeniu mobilnym dla wszystkich członków kanału, niezależnie od tego, czy ich dostępność jest ustawiona jako aktywna, czy nie.", + "twilioApiKey": "Klucz API (opcjonalnie)", + "styleElapsedTime": "Czas, który upłynął pod paskiem bicia serca", + "tailscalePingWarning": "Aby korzystać z monitora Tailscale Ping, należy zainstalować Uptime Kuma bez Dockera, a także zainstalować klienta Tailscale na serwerze.", + "invertKeywordDescription": "Słowo kluczowe powinno być raczej nieobecne niż obecne.", + "Server URL should not contain the nfty topic": "Adres URL serwera nie powinien zawierać tematu nfty", + "Badge Duration (in hours)": "Czas trwania odznaki (w godzinach)", + "Enter the list of brokers": "Wprowadź listę brokerów", + "Enable Kafka Producer Auto Topic Creation": "Włącz automatyczne tworzenie tematów w producencie Kafka", + "showCertificateExpiry": "Pokaż wygaśnięcie certyfikatu", + "gamedigGuessPortDescription": "Port używany przez Valve Server Query Protocol może różnić się od portu klienta. Spróbuj tego, jeśli monitor nie może połączyć się z serwerem.", + "Secret AccessKey": "Tajny klucz AccessKey", + "wayToGetFlashDutyKey": "Możesz przejść do Channel -> (Select a Channel) -> Integrations -> Add a new integration' page, dodać \"Uptime Kuma\", aby uzyskać adres push, skopiować klucz integracji w adresie. Więcej informacji można znaleźć na stronie", + "Badge Down Color": "Kolor odznaki Offline", + "Notify Channel": "Powiadom kanał", + "Request Timeout": "Limit czasu żądania", + "timeoutAfter": "Przekroczenie limitu czasu po {0} sekundach", + "styleElapsedTimeShowNoLine": "Pokaż (bez linii)", + "styleElapsedTimeShowWithLine": "Pokaż (z linią)", + "filterActivePaused": "Wstrzymany", + "webhookBodyCustomOption": "Niestandardowa treść", + "webhookBodyPresetOption": "Wstępne ustawienie - {0}", + "selectedMonitorCount": "Wybrano: {0}", + "Check/Uncheck": "Zaznacz/Odznacz", + "PushDeer Server": "Serwer PushDeer", + "pushDeerServerDescription": "Pozostaw puste, aby korzystać z oficjalnego serwera", + "Badge Preview": "Podgląd odznaki", + "Kafka Brokers": "Broker Kafka", + "Press Enter to add broker": "Naciśnij Enter, aby dodać brokera", + "Kafka Topic Name": "Nazwa tematu Kafka", + "Kafka Producer Message": "Wiadomość producenta Kafka", + "Enable Kafka SSL": "Włącz Kafka SSL", + "Kafka SASL Options": "Opcje SASL Kafki", + "Mechanism": "Mechanizm", + "Pick a SASL Mechanism...": "Wybierz mechanizm SASL…", + "nostrRelaysHelp": "Jeden adres URL przekaźnika w wierszu", + "nostrRecipients": "Klucze publiczne odbiorców (npub)", + "nostrRecipientsHelp": "format npub, po jednym w wierszu", + "Authorization Identity": "Identyfikacja autoryzacji", + "AccessKey Id": "Identyfikator klucza AccessKey", + "Session Token": "Token sesji", + "Request Body": "Treść żądania", + "FlashDuty Severity": "Poziom istotności", + "nostrRelays": "Przekaźniki Nostr", + "nostrSender": "Prywatny klucz nadawcy (nsec)", + "Badge Up Color": "Kolor odznaki Online", + "Badge Down Days": "Odznaka dni offline", + "Badge Warn Days": "Odznaka dni z ostrzeżeniem", + "noOrBadCertificate": "Brak/zły certyfikat", + "Invert Keyword": "Odwróć słowo kluczowe", + "Expected Value": "Oczekiwana wartość", + "Json Query": "Zapytanie Json", + "enableNSCD": "Włącz NSCD (Name Service Cache Daemon) do buforowania wszystkich żądań DNS", + "Saved.": "Zapisano.", + "setupDatabaseChooseDatabase": "Której bazy danych chcesz używać?", + "setupDatabaseEmbeddedMariaDB": "Nie musisz niczego ustawiać. Ten obraz docker automatycznie osadził i skonfigurował MariaDB. Uptime Kuma połączy się z tą bazą danych za pośrednictwem gniazda Unix.", + "setupDatabaseMariaDB": "Połącz z zewnętrzną bazą danych MariaDB. Należy ustawić informacje o połączeniu z bazą danych.", + "setupDatabaseSQLite": "Prosty plik bazy danych, zalecany do wdrożeń na małą skalę. Przed wersją 2.0.0 Uptime Kuma używała SQLite jako domyślnej bazy danych.", + "dbName": "Nazwa bazy danych", + "toastErrorTimeout": "Limit czasu dla powiadomień o błędach", + "monitorToastMessagesLabel": "Powiadomienie Toast Monitora", + "monitorToastMessagesDescription": "Powiadomienia toast dla monitorów znikają po określonym czasie w sekundach. Ustawienie -1 wyłącza limit czasu. Ustawienie 0 wyłącza powiadomienia toast.", + "authInvalidToken": "Nieprawidłowy token.", + "authIncorrectCreds": "Nieprawidłowa nazwa użytkownika lub hasło.", + "2faAlreadyEnabled": "2FA jest już włączone.", + "2faEnabled": "2FA włączone.", + "2faDisabled": "2FA wyłączone.", + "successAdded": "Pomyślnie dodano.", + "successPaused": "Wstrzymano pomyślnie.", + "successDeleted": "Usunięto pomyślnie.", + "successEdited": "Edytowano pomyślnie.", + "successAuthChangePassword": "Hasło zostało pomyślnie zaktualizowane.", + "successDisabled": "Wyłączono pomyślnie.", + "successEnabled": "Włączono pomyślnie.", + "tagNotFound": "Nie znaleziono tagu.", + "foundChromiumVersion": "Znaleziono Chromium/Chrome. Wersja: {0}", + "authUserInactiveOrDeleted": "Użytkownik jest nieaktywny lub usunięty.", + "successResumed": "Wznowiono pomyślnie.", + "successBackupRestored": "Kopia zapasowa została pomyślnie przywrócona.", + "pushViewCode": "Jak korzystać z monitora Push? (wyświetl kod)", + "Bark API Version": "Wersja API Bark", + "pushOthers": "Inne", + "programmingLanguages": "Języki programowania", + "toastSuccessTimeout": "Limit czasu dla powiadomień o powodzeniu", + "Reset Token": "Zresetuj token", + "liquidIntroduction": "Szablonowość jest osiągana za pomocą języka szablonów Liquid. Instrukcje użytkowania znajdują się w {0}. Oto dostępne zmienne:", + "templateLimitedToUpDownCertNotifications": "dostępne tylko dla powiadomień UP/DOWN/wygaśnięcia certyfikatu", + "emailTemplateLimitedToUpDownNotification": "dostępne tylko dla uderzeń serca UP/DOWN, w przeciwnym razie null", + "emailCustomisableContent": "Personalizowana zawartość", + "smtpLiquidIntroduction": "Poniższe dwa pola można szablonować za pomocą języka szablonów Liquid. Instrukcje użytkowania znajdują się w {0}. Są to dostępne zmienne:", + "leave blank for default subject": "pozostaw puste dla domyślnego tematu", + "emailCustomBody": "Niestandardowa treść wiadomości e-mail", + "leave blank for default body": "pozostaw puste dla domyślnej treści", + "emailTemplateServiceName": "Nazwa usługi", + "emailTemplateHostnameOrURL": "Nazwa hosta lub adres URL", + "emailTemplateStatus": "Status", + "emailTemplateMonitorJSON": "obiekt opisujący monitor", + "emailTemplateHeartbeatJSON": "obiekt opisujący bicie serca", + "emailTemplateMsg": "wiadomość powiadomienia", + "templateMsg": "wiadomość powiadomienia", + "templateHeartbeatJSON": "obiekt opisujący bicie serca", + "templateMonitorJSON": "obiekt opisujący monitor", + "templateLimitedToUpDownNotifications": "dostępne tylko dla powiadomień UP/DOWN", + "Browser Screenshot": "Zrzut ekranu przeglądarki", + "noDockerHostMsg": "Niedostępne. Najpierw skonfiguruj host Dockera.", + "DockerHostRequired": "Ustaw host Dockera dla tego monitora.", + "successKeyword": "Słowo kluczowe sukcesu", + "successKeywordExplanation": "Słowo kluczowe MQTT, które zostanie uznane za sukces", + "ntfyPriorityHelptextAllExceptDown": "Wszystkie zdarzenia są wysyłane z tym priorytetem, z wyjątkiem zdarzeń {0}, które mają priorytet {1}", + "remoteBrowsersDescription": "Przeglądarki zdalne są alternatywą dla lokalnego uruchamiania Chromium. Skonfiguruj za pomocą usługi takiej jak browserless.io lub połącz z własną", + "deleteRemoteBrowserMessage": "Czy na pewno chcesz usunąć tę zdalną przeglądarkę dla wszystkich monitorów?", + "GrafanaOncallUrl": "Adres URL Grafana Oncall", + "Remote Browsers": "Zdalne przeglądarki", + "self-hosted container": "kontener hostowany samodzielnie", + "settingUpDatabaseMSG": "Konfigurowanie bazy danych. Może to zająć chwilę, bądź cierpliwy.", + "statusPageSpecialSlugDesc": "Specjalny slug {0}: ta strona zostanie wyświetlona, jeśli nie podano żadnego slugu", + "Search monitored sites": "Wyszukiwanie monitorowanych witryn", + "setup a new monitor group": "konfiguracja nowej grupy monitorów", + "openModalTo": "otwórz modal na {0}", + "Add a domain": "Dodaj domenę", + "Remove domain": "Usuń domenę '{0}'", + "ntfyPriorityHelptextAllEvents": "Wszystkie zdarzenia są wysyłane z maksymalnym priorytetem", + "Remote Browser": "Zdalna przeglądarka", + "Add a Remote Browser": "Dodaj zdalną przeglądarkę", + "Remote Browser not found!": "Nie znaleziono zdalnej przeglądarki!", + "remoteBrowserToggle": "Domyślnie Chromium działa wewnątrz kontenera Uptime Kuma. Możesz użyć zdalnej przeglądarki, przełączając ten przełącznik.", + "useRemoteBrowser": "Używaj zdalnej przeglądarki", + "Add a new expiry notification day": "Dodaj nowy dzień wygaśnięcia powiadomienia", + "Remove the expiry notification": "Usunąć dzień powiadomienia o wygaśnięciu", + "What is a Remote Browser?": "Co to jest zdalna przeglądarka?", + "Mentioning": "Oznaczenia", + "Don't mention people": "Nie oznaczaj nikogo", + "Mention group": "Oznacz {group}", + "Channel access token (Long-lived)": "Token dostępu do kanału (długotrwały)", + "Your User ID": "Twój identyfikator użytkownika", + "locally configured mail transfer agent": "lokalnie skonfigurowany serwer poczty", + "documentationOf": "{0} Dokumentacja", + "wayToGetHeiiOnCallDetails": "Jak uzyskać identyfikator wyzwalacza i klucze API wyjaśniono w {dokumentacji}", + "Select message type": "Wybierz typ wiadomości", + "Create new forum post": "Utwórz nowy post na forum", + "whatHappensAtForumPost": "Utwórz nowy post na forum. NIE powoduje to opublikowania wiadomości w istniejącym poście. Aby opublikować wiadomość w istniejącym poście, użyj \"{option}\"", + "callMeBotGet": "Tutaj możesz wygenerować punkt końcowy dla {0}, {1} i {2}. Należy pamiętać, że mogą wystąpić ograniczenia szybkości. Limity szybkości wydają się być następujące: {3}", + "Command": "Polecenie", + "mongodbCommandDescription": "Uruchom polecenie MongoDB względem bazy danych. Aby uzyskać informacje na temat dostępnych poleceń, sprawdź {documentation}", + "max 11 alphanumeric characters": "maksymalnie 11 znaków alfanumerycznych", + "Originator type": "Typ nadawcy", + "Alphanumeric (recommended)": "Alfanumeryczne (zalecane)", + "smspartnerApiurl": "Klucz API można znaleźć na pulpicie nawigacyjnym pod adresem {0}", + "smspartnerPhoneNumber": "Numer(y) telefonu(ów)", + "smspartnerPhoneNumberHelptext": "Numer musi być w międzynarodowym formacie {0}, {1}. Kilka numerów musi być oddzielonych znakiem {2}", + "smspartnerSenderName": "Nazwa nadawcy wiadomości SMS", + "smspartnerSenderNameInfo": "Musi zawierać między 3..=11 zwykłych znaków", + "Telephone number": "Nr telefonu", + "To Phone Number": "Na numer telefonu", + "Destination": "Miejsce docelowe", + "Bitrix24 Webhook URL": "Adres URL usługi Bitrix24 Webhook", + "wayToGetBitrix24Webhook": "Webhook można utworzyć, wykonując czynności opisane na stronie {0}", + "gtxMessagingToHint": "Format międzynarodowy, z początkowym \"+\" ({e164}, {e212} lub {e214})", + "wayToGetSevenIOApiKey": "Odwiedź pulpit nawigacyjny pod adresem app.seven.io > deweloper > klucz api > zielony przycisk dodawania", + "cellsyntOriginator": "Widoczny na telefonie komórkowym odbiorcy jako inicjator wiadomości. Dozwolone wartości i funkcja zależą od parametru originatortype.", + "cellsyntSplitLongMessages": "Dzielenie długich wiadomości na maksymalnie 6 części. 153 x 6 = 918 znaków.", + "max 15 digits": "maksymalnie 15 cyfr", + "bitrix24SupportUserID": "Wprowadź swój identyfikator użytkownika w Bitrix24. Identyfikator można znaleźć w linku, przechodząc do profilu użytkownika.", + "gtxMessagingApiKeyHint": "Klucz API można znaleźć na stronie: My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)", + "cellsyntOriginatortypeAlphanumeric": "Ciąg alfanumeryczny (maksymalnie 11 znaków alfanumerycznych). Odbiorcy nie mogą odpowiedzieć na wiadomość.", + "Send to channel": "Wyślij do kanału", + "postToExistingThread": "Opublikuj w istniejącym wątku / poście na forum", + "forumPostName": "Nazwa posta na forum", + "threadForumPostID": "Identyfikator wątku/postu na forum", + "e.g. {discordThreadID}": "np. {discordThreadID}", + "wayToGetDiscordThreadId": "Uzyskiwanie identyfikatora wątku / postu na forum jest podobne do uzyskiwania identyfikatora kanału. Przeczytaj więcej o tym, jak uzyskać identyfikatory {0}", + "cellsyntDestination": "Numer telefonu odbiorcy w formacie międzynarodowym z początkowym 00, po którym następuje numer kierunkowy kraju, np. 00447920110000 dla numeru w Wielkiej Brytanii 07920 110 000 (łącznie maksymalnie 17 cyfr). Maksymalnie 25000 odbiorców oddzielonych przecinkami na żądanie HTTP.", + "Allow Long SMS": "Zezwalaj na długie wiadomości SMS", + "Host URL": "Adres URL hosta", + "Refresh Interval": "Częstotliwość odświeżania", + "Refresh Interval Description": "Strona stanu będzie odświeżać całą witrynę co {0} sekund", + "ignoreTLSErrorGeneral": "Ignorowanie błędu TLS/SSL dla połączenia", + "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Wprowadź nazwę hosta serwera, z którym chcesz się połączyć lub {localhost}, jeśli zamierzasz użyć {local_mta}", + "senderSevenIO": "Wysyłany numer lub nazwa", + "receiverSevenIO": "Numer odbiorcy", + "receiverInfoSevenIO": "Jeśli numer odbiorczy nie znajduje się w Niemczech, należy dodać kod kraju przed numerem (np. dla kodu kraju 1 z USA należy użyć 117612121212 zamiast 017612121212)", + "apiKeySevenIO": "Klucz API SevenIO", + "wayToWriteWhapiRecipient": "Numer telefonu z prefiksem międzynarodowym, ale bez znaku plus na początku ({0}), identyfikator kontaktu ({1}) lub identyfikator grupy ({2}).", + "wayToGetWhapiUrlAndToken": "Adres URL API i token można uzyskać, przechodząc do żądanego kanału z {0}", + "Originator": "Nadawca", + "whapiRecipient": "Nr telefonu / ID kontaktu / ID grupy", + "API URL": "URL dla API", + "From Phone Number / Transmission Path Originating Address (TPOA)": "Od numeru telefonu / adresu początkowego ścieżki transmisji (TPOA)", + "gtxMessagingFromHint": "W telefonach komórkowych odbiorcy widzą TPOA jako nadawcę wiadomości. Dozwolone jest do 11 znaków alfanumerycznych, krótki kod, lokalny długi kod lub numery międzynarodowe ({e164}, {e212} lub {e214})", + "cellsyntOriginatortypeNumeric": "Wartość numeryczna (maks. 15 cyfr) z numerem telefonu w formacie międzynarodowym bez początkowego 00 (np. brytyjski numer 07920 110 000 powinien być ustawiony jako 447920110000). Odbiorcy mogą odpowiedzieć na wiadomość.", + "threemaRecipient": "Odbiorca", + "threemaRecipientType": "Typ odbiorcy", + "threemaRecipientTypeIdentity": "Threema ID", + "threemaRecipientTypeIdentityFormat": "8 znaków", + "threemaRecipientTypePhone": "Numer telefonu", + "threemaRecipientTypePhoneFormat": "E.164, bez znaku + na początku", + "threemaRecipientTypeEmail": "Adres e-mail", + "threemaSenderIdentity": "Gateway ID", + "threemaApiAuthenticationSecret": "Hasło Gateway ID", + "wayToGetThreemaGateway": "Możesz zarejestrować się w Threema Gateway {0}.", + "threemaSenderIdentityFormat": "8 znaków, zwykle zaczyna się od *", + "threemaBasicModeInfo": "Uwaga: Ta integracja korzysta z Threema Gateway w trybie podstawowym (szyfrowanie po stronie serwera). Więcej szczegółów można znaleźć {0}.", + "apiKeysDisabledMsg": "Klucze API są wyłączone, ponieważ wyłączone jest uwierzytelnianie.", + "-year": "-rok", + "and": "i", + "now": "teraz", + "cacheBusterParam": "Dodaj parametr {0}" +} diff --git a/src/lang/pt-BR.json b/src/lang/pt-BR.json index d345434ae..c5b7e7468 100644 --- a/src/lang/pt-BR.json +++ b/src/lang/pt-BR.json @@ -1,984 +1,984 @@ -{ - "languageName": "Português (Brasileiro)", - "checkEverySecond": "Verificar a cada {0} segundos", - "retryCheckEverySecond": "Tentar novamente a cada {0} segundos", - "retriesDescription": "Máximo de tentativas antes que o serviço seja marcado como inativo e uma notificação seja enviada", - "ignoreTLSError": "Ignorar erros TLS/SSL para sites HTTPS", - "upsideDownModeDescription": "Inverta o status. Se o serviço estiver acessível, ele está DESLIGADO.", - "maxRedirectDescription": "Número máximo de redirecionamentos a seguir. Defina como 0 para desativar redirecionamentos.", - "acceptedStatusCodesDescription": "Selecione os códigos de status que são considerados uma resposta bem-sucedida.", - "passwordNotMatchMsg": "A senha repetida não corresponde.", - "notificationDescription": "Atribua uma notificação ao (s) monitor (es) para que funcione.", - "keywordDescription": "Pesquise a palavra-chave em html simples ou resposta JSON e diferencia maiúsculas de minúsculas.", - "pauseDashboardHome": "Pausado", - "deleteMonitorMsg": "Tem certeza de que deseja excluir este monitor?", - "deleteNotificationMsg": "Tem certeza de que deseja excluir esta notificação para todos os monitores?", - "resolverserverDescription": "Cloudflare é o servidor padrão, você pode alterar o servidor resolvedor a qualquer momento.", - "rrtypeDescription": "Selecione o RR-Type que você deseja monitorar", - "pauseMonitorMsg": "Tem certeza que deseja fazer uma pausa?", - "enableDefaultNotificationDescription": "Para cada novo monitor, esta notificação será habilitada por padrão. Você ainda pode desativar a notificação separadamente para cada monitor.", - "clearEventsMsg": "Tem certeza de que deseja excluir todos os eventos deste monitor?", - "clearHeartbeatsMsg": "Tem certeza de que deseja excluir todos os heartbeats deste monitor?", - "confirmClearStatisticsMsg": "Tem certeza que deseja excluir TODAS as estatísticas?", - "importHandleDescription": "Escolha 'Ignorar existente' se quiser ignorar todos os monitores ou notificações com o mesmo nome. 'Substituir' excluirá todos os monitores e notificações existentes.", - "confirmImportMsg": "Tem certeza que deseja importar o backup? Certifique-se de que selecionou a opção de importação correta.", - "twoFAVerifyLabel": "Digite seu token para verificar se 2FA está funcionando:", - "tokenValidSettingsMsg": "O token é válido! Agora você pode salvar as configurações 2FA.", - "confirmEnableTwoFAMsg": "Tem certeza de que deseja habilitar 2FA?", - "confirmDisableTwoFAMsg": "Tem certeza de que deseja desativar 2FA?", - "Settings": "Configurações", - "Dashboard": "Painel", - "New Update": "Nova Atualização", - "Language": "Idioma", - "Appearance": "Aparência", - "Theme": "Tema", - "General": "Geral", - "Version": "Versão", - "Check Update On GitHub": "Verificar atualização no Github", - "List": "Lista", - "Add": "Adicionar", - "Add New Monitor": "Adicionar novo monitor", - "Quick Stats": "Estatísticas rápidas", - "Up": "Ligado", - "Down": "Desligado", - "Pending": "Pendente", - "Unknown": "Desconhecido", - "Pause": "Pausar", - "Name": "Nome", - "Status": "Status", - "DateTime": "Data hora", - "Message": "Mensagem", - "No important events": "Nenhum evento importante", - "Resume": "Retomar", - "Edit": "Editar", - "Delete": "Apagar", - "Current": "Atual", - "Uptime": "Tempo de atividade", - "Cert Exp.": "Expiração Do Certificado.", - "day": "dia | dias", - "-day": "-dia", - "hour": "hora", - "-hour": "-hora", - "Response": "Resposta", - "Ping": "Ping", - "Monitor Type": "Tipo de Monitor", - "Keyword": "Palavra-Chave", - "Friendly Name": "Apelido", - "URL": "URL", - "Hostname": "Hostname", - "Port": "Porta", - "Heartbeat Interval": "Intervalo de Heartbeat", - "Retries": "Novas tentativas", - "Heartbeat Retry Interval": "Intervalo de repetição de Heartbeat", - "Advanced": "Avançado", - "Upside Down Mode": "Modo Invertido", - "Max. Redirects": "Redirecionamentos Máx", - "Accepted Status Codes": "Códigos HTTP Aceitáveis", - "Save": "Salvar", - "Notifications": "Notificações", - "Not available, please setup.": "Não disponível, por favor configure.", - "Setup Notification": "Configurar Notificação", - "Light": "Claro", - "Dark": "Escuro", - "Auto": "Auto", - "Theme - Heartbeat Bar": "Tema - Barra de Heartbeat", - "Normal": "Normal", - "Bottom": "Inferior", - "None": "Nenhum", - "Timezone": "Fuso horário", - "Search Engine Visibility": "Visibilidade do mecanismo de pesquisa", - "Allow indexing": "Permitir Indexação", - "Discourage search engines from indexing site": "Desencoraje os motores de busca de indexar o site", - "Change Password": "Mudar senha", - "Current Password": "Senha atual", - "New Password": "Nova Senha", - "Repeat New Password": "Repetir Nova Senha", - "Update Password": "Atualizar Senha", - "Disable Auth": "Desativar Autenticação", - "Enable Auth": "Ativar Autenticação", - "disableauth.message1": "Você tem certeza que deseja {disableAuth}?", - "disable authentication": "desativar a autenticação", - "disableauth.message2": "Isso é para {intendThirdPartyAuth} na frente do 'UpTime Kuma' como o Cloudflare Access.", - "where you intend to implement third-party authentication": "alguém que tem autenticação de terceiros", - "Please use this option carefully!": "Por favor, utilize isso com cautela!", - "Logout": "Deslogar", - "Leave": "Sair", - "I understand, please disable": "Eu entendo, por favor desative", - "Confirm": "Confirmar", - "Yes": "Sim", - "No": "Não", - "Username": "Usuário", - "Password": "Senha", - "Remember me": "Lembre-me", - "Login": "Autenticar", - "No Monitors, please": "Nenhum monitor, por favor", - "add one": "adicionar um", - "Notification Type": "Tipo de Notificação", - "Email": "Email", - "Test": "Testar", - "Certificate Info": "Info. do Certificado", - "Resolver Server": "Resolver Servidor", - "Resource Record Type": "Tipo de registro de aplicação", - "Last Result": "Último resultado", - "Create your admin account": "Crie sua conta de admin", - "Repeat Password": "Repita a senha", - "Import Backup": "Importar Backup", - "Export Backup": "Exportar Backup", - "Export": "Exportar", - "Import": "Importar", - "respTime": "Tempo de Resp. (ms)", - "notAvailableShort": "N/A", - "Default enabled": "Padrão habilitado", - "Apply on all existing monitors": "Aplicar em todos os monitores existentes", - "Create": "Criar", - "Clear Data": "Limpar Dados", - "Events": "Eventos", - "Heartbeats": "Batimentos Cardíacos", - "Auto Get": "Obter Automático", - "backupDescription": "Você pode fazer backup de todos os monitores e todas as notificações em um arquivo JSON.", - "backupDescription2": "OBS: Os dados do histórico e do evento não estão incluídos.", - "backupDescription3": "Dados confidenciais, como tokens de notificação, estão incluídos no arquivo de exportação, mantenha-o com cuidado.", - "alertNoFile": "Selecione um arquivo para importar.", - "alertWrongFileType": "Selecione um arquivo JSON.", - "Clear all statistics": "Limpar todas as estatísticas", - "Skip existing": "Pular existente", - "Overwrite": "Sobrescrever", - "Options": "Opções", - "Keep both": "Manter os dois", - "Verify Token": "Verificar Token", - "Setup 2FA": "Configurar 2FA", - "Enable 2FA": "Ativar 2FA", - "Disable 2FA": "Desativar 2FA", - "2FA Settings": "Configurações do 2FA", - "Two Factor Authentication": "Autenticação e Dois Fatores", - "Active": "Ativo", - "Inactive": "Inativo", - "Token": "Token", - "Show URI": "Mostrar URI", - "Tags": "Tag", - "Add New below or Select...": "Adicionar Novo abaixo ou Selecionar…", - "Tag with this name already exist.": "Já existe uma etiqueta com este nome.", - "Tag with this value already exist.": "Já existe uma etiqueta com este valor.", - "color": "cor", - "value (optional)": "valor (opcional)", - "Gray": "Cinza", - "Red": "Vermelho", - "Orange": "Laranja", - "Green": "Verde", - "Blue": "Azul", - "Indigo": "Índigo", - "Purple": "Roxo", - "Pink": "Rosa", - "Search...": "Buscar…", - "Avg. Ping": "Ping Médio", - "Avg. Response": "Resposta Média", - "Status Page": "Página de Status", - "Status Pages": "Página de Status", - "Entry Page": "Página de entrada", - "statusPageNothing": "Nada aqui, por favor, adicione um grupo ou monitor.", - "No Services": "Nenhum Serviço", - "All Systems Operational": "Todos os Serviços Operacionais", - "Partially Degraded Service": "Serviço parcialmente degradado", - "Degraded Service": "Serviço Degradado", - "Add Group": "Adicionar Grupo", - "Add a monitor": "Adicionar um monitor", - "Edit Status Page": "Editar Página de Status", - "Go to Dashboard": "Ir para a dashboard", - "apprise": "Apprise (Suporta mais de 50 serviços de notificação)", - "Help": "Ajuda", - "Select status pages...": "Selecionar status pages…", - "Game": "Jogo", - "Passive Monitor Type": "Tipo de monitoramento passivo", - "Specific Monitor Type": "Tipo de monitoramento específico", - "Monitor": "Monitoramento | Monitoramentos", - "needPushEvery": "Você deve chamar esta URL a cada {0} segundos.", - "Push URL": "URL de push", - "Custom": "Personalizado", - "here": "aqui", - "Required": "Requerido", - "webhookJsonDesc": "{0} é bom para qualquer servidor HTTP moderno, como Express.js", - "webhookAdditionalHeadersTitle": "Cabeçalhos Adicionais", - "webhookAdditionalHeadersDesc": "Define cabeçalhos adicionais enviados com o webhook. Cada cabeçalho pode ser definido como um JSON chave/valor.", - "Webhook URL": "URL Do Webhook", - "Priority": "Prioridade", - "Read more": "Ver mais", - "appriseInstalled": "Apprise está instalado.", - "appriseNotInstalled": "Apprise não está instalado. {0}", - "Headers": "Cabeçalhos", - "BodyInvalidFormat": "O corpo da solicitação não é um JSON válido: ", - "Monitor History": "Histórico de monitoramento", - "clearDataOlderThan": "Mantenha os dados do histórico do monitoramento por {0} dias.", - "PasswordsDoNotMatch": "As senhas não coincidem.", - "records": "registros", - "One record": "Um registro", - "Current User": "Usuário atual", - "successMessage": "Mensagem de sucesso", - "Post URL": "Posto URL", - "Application Token": "Token de aplicativo", - "Server URL": "URL do servidor", - "Body": "Corpo", - "PushUrl": "Push URL", - "recent": "Recente", - "Done": "Feito", - "Info": "Informação", - "Security": "Segurança", - "Steam API Key": "API Key da Steam", - "Default": "Padrão", - "HTTP Options": "Opções HTTP", - "Create Incident": "Criar incidente", - "Title": "Título", - "Style": "Estilo", - "info": "informação", - "danger": "perigo", - "Please input title and content": "Por favor, inclua título e o conteúdo", - "Created": "Criado", - "Last Updated": "Última atualização", - "Switch to Light Theme": "Mudar para tema claro", - "Show Tags": "Mostrar tags", - "Hide Tags": "Esconder tags", - "Description": "Descrição", - "No monitors available.": "Nenhum monitoramento disponível.", - "Add one": "Adicionar um", - "No Monitors": "Sem monitoramentos", - "Services": "Serviços", - "Discard": "Descartar", - "Cancel": "Cancelar", - "Customize": "Customizar", - "Custom CSS": "CSS personalizado", - "deleteStatusPageMsg": "Tem certeza que deseja apagar essa status page?", - "Proxies": "Proxies", - "default": "Padrão", - "enabled": "Ativado", - "setAsDefault": "Definir como padrão", - "Primary Base URL": "URL base principal", - "Resend Notification if Down X times consecutively": "Reenviar Notificação se OFFLINE X vezes consecutivamente", - "pushOptionalParams": "Parâmetros opcionais: {0}", - "webhookFormDataDesc": "{multipart} é bom para PHP. O JSON precisará ser analisado com {decodeFunction}", - "HeadersInvalidFormat": "Os cabeçalhos da solicitação não são um JSON válidos: ", - "steamApiKeyDescription": "Para monitorar um Steam Game Server, você precisa de uma chave Steam Web-API. Você pode registrar sua chave de API aqui: ", - "warning": "atenção", - "Switch to Dark Theme": "Mudar para tema escuro", - "Custom Footer": "Rodapé personalizado", - "error": "erro", - "critical": "crítico", - "dark": "escuro", - "statusMaintenance": "Manutenção", - "Maintenance": "Manutenção", - "resendEveryXTimes": "Reenviar a cada {0} vezes", - "resendDisabled": "Reenvio desativado", - "Schedule maintenance": "Manutenção agendada", - "Affected Monitors": "Monitoramentos afetados", - "Start of maintenance": "Iniciar manutenção", - "All Status Pages": "Todas as Status Pages", - "Method": "Método", - "General Monitor Type": "Tipo de monitoramento geral", - "markdownSupported": "Markdown suportado", - "emojiCheatSheet": "Dicas de Emojis", - "topic": "Tópico", - "topicExplanation": "Tópico MQTT para monitorar", - "successMessageExplanation": "Mensagem MQTT que será considerada como sucesso", - "Content Type": "Tipo do Conteúdo", - "Shrink Database": "Encolher Banco de Dados", - "Content": "Conteúdo", - "Pick a RR-Type...": "Selecione um RR-Type…", - "Pick Accepted Status Codes...": "Selecione Os Códigos de Status Aceitos…", - "Pick Affected Monitors...": "Selecione os Monitores Afetados…", - "Channel Name": "Nome Do Canal", - "Don't know how to get the token? Please read the guide:": "Não sabe com pegar o token? Por favor, leia o guia:", - "smtpDkimheaderFieldNames": "Chaves Do Cabeçalho para assinar (Opcional)", - "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "A conexão atual pode ser perdida se você estiver se conectando pelo túnel da Cloudflare. Você tem certeza que deseja pará-lo? Digite a sua senha para confirmar.", - "Powered by": "Fornecido por", - "deleteProxyMsg": "Você tem certeza que deseja deletar este proxy para todos os monitores?", - "proxyDescription": "Os proxies devem ser atribuídos a um monitor para funcionar.", - "Certificate Chain": "Cadeia De Certificados", - "Domain Name Expiry Notification": "Notificação De Expiração Do Nome Do Domínio", - "Proxy": "Proxy", - "wayToGetTelegramChatID": "Você pode pegar o Chat ID enviando uma mensagem marcando o bot no grupo e indo nessa URL para ver o chat_id:", - "wayToGetLineNotifyToken": "Você pode pegar o token de acesso de {0}", - "disableCloudflaredNoAuthMsg": "Você está no modo sem autenticação, a senha não é necessária.", - "Frontend Version do not match backend version!": "Versão do frontend é diferente da versão do backend!", - "strategyManual": "Ativar/Desativar Manualmente", - "weekdayShortThu": "Qui", - "Basic Settings": "Configurações Básicas", - "User ID": "ID Do Usuário", - "Line Developers Console": "Linha Do Terminal De Desenvolvimento", - "lineDevConsoleTo": "Linha Do Terminal De Desenvolvimento- {0}", - "smseagleToken": "Token De Acesso Da API", - "Notification Service": "Serviço De Notificação", - "default: notify all devices": "padrão: notificar todos os dispositivos", - "Trigger type:": "Tipo Do Acionamento:", - "Then choose an action, for example switch the scene to where an RGB light is red.": "Em seguida, escolha uma ação, por exemplo, mudar a cena para onde uma luz RGB fica vermelha.", - "Enable": "Habilitado", - "Disable": "Desabilitado", - "IconUrl": "URL Do Ícone", - "Enable DNS Cache": "(Descontinuado) Habilitar Cache de DNS para monitores HTTP(s)", - "Single Maintenance Window": "Janela Única De Manutenção", - "dnsCacheDescription": "Pode não funcionar em alguns ambientes com IPv6, desabita caso encontre qualquer problema.", - "Messaging API": "API Da Mensageira", - "Icon URL": "URL Do Ícone", - "Clone Monitor": "Clonar Monitoramento", - "Clone": "Clonar", - "cloneOf": "Clone do {0}", - "deleteMaintenanceMsg": "Você tem certeza que deseja apagar essa manutenção?", - "sameAsServerTimezone": "O mesmo do servidor de fuso-horário", - "startDateTime": "Início Data/Horário", - "endDateTime": "Fim Data/Horário", - "cronExpression": "Expressão Do Cron", - "cronSchedule": "Agendar: ", - "invalidCronExpression": "Expressão Cron inválida: {0}", - "Display Timezone": "Mostrar Fuso-horário", - "Server Timezone": "Servidor De Fuso-horário", - "statusPageMaintenanceEndDate": "Fim", - "Schedule Maintenance": "Agendar Manutenção", - "Date and Time": "Data E Horário", - "DateTime Range": "Intervalo De Tempo", - "Maintenance Time Window of a Day": "Janela de tempo de manutenção de um dia", - "uninstalling": "Desinstalando", - "confirmUninstallPlugin": "Você tem certeza were quer desinstalar esse plugin?", - "notificationRegional": "Região", - "dnsPortDescription": "Porta do servidor DNS. O padrão é 53. Você pode mudar a porta em qualquer momento.", - "affectedMonitorsDescription": "Selecione os monitores afetados pela manutenção atual", - "Icon Emoji": "Ícone Do Emoji", - "wayToGetKookBotToken": "Criar aplicação e pegar o token do bot em {0}", - "Notification Sound": "Som De Notificação", - "More info on:": "Mais informações em: {0}", - "SMS Type": "Tipo Do SMS", - "Internal Room Id": "ID Interno Da Sala", - "Platform": "Plataforma", - "serwersmsAPIPassword": "Senha Da API", - "serwersmsPhoneNumber": "Número Do Telefone", - "documentation": "documentação", - "smtpDkimDomain": "Nome Do Domínio", - "smtpDkimKeySelector": "Chave Selecionadora", - "smtpDkimPrivateKey": "Chave Privada", - "smtpDkimHashAlgo": "Algoritmo Hash (Opcional)", - "smtpDkimskipFields": "Chaves Do Cabeçalho para não assinar (Opcional)", - "alertaEnvironment": "Ambiente", - "alertaRecoverState": "Estado De Recuperação", - "smseagleEncoding": "Enviar como Unicode", - "onebotGroupMessage": "Grupo", - "onebotPrivateMessage": "Privado", - "onebotUserOrGroupId": "ID do Grupo/Usuário", - "No Maintenance": "Sem Manutenção", - "telegramProtectContentDescription": "Se ativado, a mensagens do bot do Telegram serão protegidas contra encaminhamentos e salvamento.", - "telegramProtectContent": "Proteger Contra Encaminhamento/Salvamento", - "affectedStatusPages": "Mostrar essa mensagem de manutenção nas páginas de status selecionadas", - "loadingError": "Não foi possível pegar os dados, por favor tente novamente.", - "Bot Display Name": "Nome Visível Do Bot", - "Access Token": "Token De Acesso", - "Unpin": "Desfixar", - "telegramSendSilently": "Enviar Silenciosamente", - "telegramSendSilentlyDescription": "Enviar a mensagem silenciosamente. Os usuários não receberam uma notificação com som.", - "YOUR BOT TOKEN HERE": "O SEU TOKEN DO BOT VAI AQUI", - "warningTimezone": "Está usando os servidores de fuso-horários", - "dayOfWeek": "Dia Da Semana", - "dayOfMonth": "Dia Do Mês", - "lastDay": "Último Dia", - "lastDay1": "Último Dia Do Mês", - "lastDay2": "Penúltimo Dia Do Mês", - "lastDay3": "Antepenúltimo Dia Do Mês", - "lastDay4": "Quarto Último Dia Do Mês", - "weekdayShortMon": "Seg", - "weekdayShortTue": "Ter", - "weekdayShortWed": "Qua", - "weekdayShortFri": "Sex", - "weekdayShortSat": "Sab", - "weekdayShortSun": "Dom", - "wayToGetTeamsURL": "Você pode aprender a como criar a URL do webhook {0}.", - "Hello @everyone is...": "Olá {'@'}everyone é…", - "Number": "Número", - "install": "Instalar", - "installing": "Instalando", - "uninstall": "Desinstalar", - "Ignore TLS Error": "Ignorar Erro De TLS", - "Discord Webhook URL": "URL Do Webhook Do Discord", - "emailCustomSubject": "Assunto Personalizado", - "Prefix Custom Message": "Prefixo Personalizado Da Mensagem", - "wayToGetZohoCliqURL": "Você pode aprender a como criar uma URL de Webhook {0}.", - "Channel access token": "Canal do token de acesso", - "promosmsPassword": "Senha Da API", - "promosmsLogin": "Nome Do Login Da API", - "atLeastOneMonitor": "Selecione pelo menos um monitoramento afetado", - "apiCredentials": "Credenciais Da API", - "For safety, must use secret key": "Para segurança deve se usar uma chave secreta", - "Device Token": "Token Do Dispositivo", - "Retry": "Tentar Novamente", - "Topic": "Tópico", - "Setup Proxy": "Configuração do Proxy", - "Proxy Protocol": "Protocolo Do Proxy", - "Proxy Server": "Servidor Proxy", - "Proxy server has authentication": "O servidor proxy tem autenticação", - "aboutWebhooks": "Mais informações sobre Webhooks em: {0}", - "Integration Key": "Chave De Integração", - "Integration URL": "URL De Integração", - "do nothing": "fazendo nada", - "onebotSafetyTips": "Por segurança deve adicionar o token de acesso", - "Subject:": "Assunto:", - "Valid To:": "Válido para:", - "For example: nginx, Apache and Traefik.": "Por exemplo: Nginx, Apache e Traefik.", - "Please read": "Por favor, leia", - "RadiusCallingStationIdDescription": "Identificador do dispositivo de chamada", - "certificationExpiryDescription": "O monitoramento por HTTPS envia a notificação quando o certificado TLS expirar em:", - "or": "ou", - "Effective Date Range": "Intervalo Efetivo De Data (Opcional)", - "recurringIntervalMessage": "Rodar diariamente | Rodar a cada {0} dias", - "Status:": "Status: {0}", - "smtpDkimSettings": "Configurações DKIM", - "alertaApiKey": "Chave Da API", - "alertaAlertState": "Estado Do Alerta", - "statusPageRefreshIn": "Atualizando em: {0}", - "Untitled Group": "Grupo Sem Título", - "primary": "primário", - "setAsDefaultProxyDescription": "Este proxy será habilitado por padrão em todos os novos monitores. Você pode desabilitar o proxy individualmente para cada monitor.", - "Valid": "Válido", - "Invalid": "Inválido", - "User": "Usuário", - "Installed": "Instalado", - "Not installed": "Não instalado", - "enableProxyDescription": "Este proxy não afetará as solicitações do monitor até que seja ativado. Você pode controlar temporariamente a desativação do proxy de todos os monitores pelo status de ativação.", - "Not running": "Desabilitado", - "Remove Token": "Remover Token", - "Start": "Iniciar", - "Stop": "Parar", - "Add New Status Page": "Adicionar Nova Página De Status", - "Accept characters:": "Caracteres aceitos:", - "Running": "Habilitado", - "startOrEndWithOnly": "Apenas iniciar ou parar com {0}", - "No consecutive dashes": "Sem traços consecutivos", - "Next": "Próximo", - "No Proxy": "Sem Proxy", - "Authentication": "Autenticação", - "HTTP Basic Auth": "Autenticação Básica No HTTP", - "New Status Page": "Nova Página De Status", - "Page Not Found": "Página Não Encontrada", - "Reverse Proxy": "Proxy Reverso", - "About": "Sobre", - "Message:": "Mensagem:", - "HTTP Headers": "Cabeçalhos HTTP", - "Trust Proxy": "Proxy Confiável", - "Other Software": "Outros Programas", - "Days Remaining:": "Dias Restantes:", - "No status pages": "Sem página de status", - "Date Created": "Data De Criação", - "Backup": "Cópia de Segurança", - "wayToGetCloudflaredURL": "(Baixe o CloudFlareD de {0})", - "cloudflareWebsite": "Site Da CloudaFlare", - "Issuer:": "Emissor:", - "Fingerprint:": "Impressão Digital:", - "Footer Text": "Texto Do Rodapé", - "Domain Names": "Nome Dos Domínios", - "signedInDispDisabled": "Autenticação Desabilitada.", - "RadiusSecretDescription": "Compartilhe o Segredo entre o cliente e o servidor", - "Certificate Expiry Notification": "Notificação De Certificado Expirado", - "The resource is no longer available.": "O recurso não está mais disponível.", - "There might be a typing error in the address.": "Pode ter um erro de digitação no endereço.", - "Retype the address.": "Digitar novamente o endereço.", - "Go back to the previous page.": "Voltar para a página anterior.", - "Query": "Query", - "settingsCertificateExpiry": "O Certificado TLS Expira", - "Connection Type": "Tipo Da Conexão", - "signedInDisp": "Logado como {0}", - "RadiusCallingStationId": "ID Da Estação De Chamada", - "RadiusCalledStationIdDescription": "Identificador do dispositivo de chamada", - "Coming Soon": "Em Breve", - "Connection String": "String De Conexão", - "Docker Daemon": "Daemon Do Docker", - "Show Powered By": "Mostrar Fornecido Por", - "RadiusSecret": "Segredo Radius", - "RadiusCalledStationId": "ID Da Estação Chamada", - "deleteDockerHostMsg": "Você tem certeza que quer deletar esse host do Docker para todos os monitores?", - "tcp": "TCP / HTTP", - "Docker Container": "Container Docker", - "Container Name / ID": "Nome / ID do Container", - "Domain": "Domínio", - "Workstation": "Estação De Trabalho", - "Packet Size": "Tamanho Do Pacote", - "Bot Token": "Token do Bot", - "wayToGetTelegramToken": "Você pode pegar o token de {0}.", - "chatIDNotFound": "Chat ID não encontrado; por favor envia uma mensagem para o bot primeiro", - "Chat ID": "Chat ID", - "Docker Hosts": "Hosts Do Docker", - "Docker Host": "Host Do Docker", - "Examples": "Exemplos", - "maintenanceStatus-under-maintenance": "Em Manutenção", - "Long-Lived Access Token": "Token De Acesso De Longa Duração", - "Home Assistant URL": "URL Do Home Assinant", - "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "O token de acessos de longa duração pode ser criado clicando no nome do seu perfil, com o botão esquerdo, ir até o final da lista e clicar em Criar Token. ", - "Event type:": "Tipo Do Evento:", - "Event data:": "Dados Do Evento:", - "Frontend Version": "Versão Do Frontend", - "backupRecommend": "Por favor faça uma cópia do volume ou da pasta com dados(./data/) diretamente ao invés.", - "Optional": "Opcional", - "recurringInterval": "Intervalo", - "Recurring": "Recorrente", - "pauseMaintenanceMsg": "Você tem certeza que quer pausar?", - "maintenanceStatus-inactive": "Inativo", - "maintenanceStatus-scheduled": "Agendado", - "maintenanceStatus-ended": "Terminando", - "maintenanceStatus-unknown": "Desconhecido", - "enableGRPCTls": "Permita para enviar requisições gRPC com conexões TLS", - "confirmDeleteTagMsg": "Você tem certeza que deseja apagar essa tag? Monitores associados a essa tag não serão apagados.", - "grpcMethodDescription": "O nome do método é convertido para o formato camelCase, exemplos: sayHello, check, etc.", - "infiniteRetention": "Defina como 0 para um tempo infinito de retenção.", - "octopushLegacyHint": "Você usa a versão legada do Octopush (2011-2020) ou a nova versão?", - "Example:": "Exemplo: {0}", - "Read more:": "Leia mais em: {0}", - "promosmsAllowLongSMS": "Permitir SMS grandes", - "Huawei": "Huawei", - "smseagleTo": "Números Dos Telefones", - "smseaglePriority": "Prioridade da mensagem (0-9, padrão=0)", - "dataRetentionTimeError": "O período de retenção tem que ser maior ou igual a 0", - "User Key": "Chave Do Usuário", - "Device": "Dispositivo", - "Message Title": "Título Da Mensagem", - "defaultNotificationName": "Minha {notification} Alerta({number})", - "light": "claro", - "socket": "Soquete", - "Add New Tag": "Adicionar Nova Tag", - "API Username": "Usuário Da API", - "API Key": "Chave Da API", - "Show update if available": "Mostrar atualização se disponível", - "Also check beta release": "Também verificar lançamentos em beta", - "Using a Reverse Proxy?": "Está usando um Proxy Reverso?", - "Check how to config it for WebSocket": "Verifique como configurar para o WebSocket", - "Steam Game Server": "Servidor De Jogo Da Steam", - "Most likely causes:": "Causas mais prováveis:", - "What you can try:": "O que você pode tentar:", - "apiKey-active": "Ativa", - "Expiry": "Expiração", - "endpoint": "endpoint (URL Serviço)", - "pagertreeIntegrationUrl": "URL de Integração", - "pagertreeUrgency": "Urgência", - "telegramMessageThreadID": "(Opcional) ID da thread", - "Edit Tag": "Editar Etiqueta", - "Server Address": "Endereço do Servidor", - "Learn More": "Aprender Mais", - "needSignalAPI": "Você precisa ter um cliente Signal com uma API REST.", - "Generate": "Gerar", - "deleteAPIKeyMsg": "Você tem certeza de que quer apagar essa chave de API?", - "plugin": "Plugin | Plugins", - "Expiry date": "Data de expiração", - "Don't expire": "Não expira", - "Continue": "Continuar", - "Add Another": "Adicionar Outro", - "Key Added": "Chave Adicionada", - "Add API Key": "Adicionar chave de API", - "No API Keys": "Sem chaves de API", - "apiKey-expired": "Expirada", - "apiKey-inactive": "Inativa", - "Expires": "Expira", - "disableAPIKeyMsg": "Você tem certeza de que quer desativar essa chave de API?", - "smtp": "Email (SMTP)", - "secureOptionTLS": "TLS (465)", - "From Email": "Remetente", - "smtpCC": "CC", - "smtpBCC": "BCC", - "To Email": "Destinatário", - "Recipients": "Destinatários", - "Google Analytics ID": "ID Google Analytics", - "Post": "Post", - "Slug": "Apelido", - "The slug is already taken. Please choose another slug.": "Este apelido já está em uso. Por favor escolha outro apelido.", - "Setup Docker Host": "Configurar um host Docker", - "trustProxyDescription": "Confiar nos cabeçalhos 'X-Forwarded-*'. Se você quer obter o endereço IP correto do cliente mas seu Uptime Kuma está atrás de um proxy como Nginx ou Apache, você deve habilitar isso.", - "Automations can optionally be triggered in Home Assistant:": "Automações podem ser acionadas opcionalmente no Home Assistant:", - "secureOptionNone": "Nenhum / STARTTLS (25, 587)", - "apiKeyAddedMsg": "Sua chave de API foi adicionada. Por favor anote essa chave, ela não será mostrada novamente.", - "Show Clickable Link": "Mostrar Link Clicável", - "backupOutdatedWarning": "Obsoleto: Já que muitos recursos foram adicionados e este recurso de backup não foi atualizado, ele não consegue gerar ou restaurar um backup completo.", - "wayToGetDiscordURL": "Voce pode configurar isso indo à Configurações do Servidor -> Integrações -> Ver Webhooks -> Novo Webhook", - "Home": "Início", - "Reconnecting...": "Reconectando...", - "Cannot connect to the socket server": "Não foi possível conectar ao servidor socket", - "Uptime Kuma URL": "URL do Uptime Kuma", - "Saved.": "Salvo.", - "Feishu WebHookUrl": "URL de Webhook do Feishu", - "serwersmsAPIUser": "Nome de usuário da API (incluindo o prefixo webapi_)", - "setupDatabaseEmbeddedMariaDB": "Você não precisa definir nada. Esta imagem docker incorporou e configurou um MariaDB para você automaticamente. Uptime Kuma se conectará a este banco de dados via soquete unix.", - "Select": "Selecione", - "supportTelegramChatID": "Suporte para o ID de bate-papo direto / grupo / canal do chat", - "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Uma lista de Serviços de Notificação pode ser encontrada no Home Assistant em \"Ferramentas de Desenvolvimento > Serviços\". Pesquise por \"notificação\" para encontrar o nome do seu dispositivo/telefone.", - "chromeExecutableAutoDetect": "Auto Detectar", - "chromeExecutableDescription": "Para os usuários do Docker, se o Chromium ainda não estiver instalado, pode demorar alguns minutos para instalar e exibir o resultado do teste. Ele ocupa 1GB de espaço em disco.", - "wayToCheckSignalURL": "Você pode checar esse link para ver como configurar um:", - "wayToGetLineChannelToken": "Primeiro acesse o {0}, crie um provedor e um canal (API de Mensagens), então você pode obter o token de acesso do canal e o ID do usuário nos itens de menu mencionados acima.", - "aboutMattermostChannelName": "Você pode substituir o canal padrão para o qual o Webhook envia postagens, inserindo o nome do canal no campo \"Nome do Canal\". Isso precisa ser habilitado nas configurações do Webhook do Mattermost. Por exemplo: #outro-canal", - "invertKeywordDescription": "Procure pela palavra-chave estar ausente em vez de presente.", - "octopushTypePremium": "Premium (Rápido - recomendado para alertas)", - "octopushTypeLowCost": "Baixo Custo (Lento - às vezes bloqueado pelo operador)", - "octopushSMSSender": "Nome do Remetente de SMS: 3-11 caracteres alfanuméricos e espaço (a-zA-Z0-9)", - "pushoversounds pianobar": "Piano Bar", - "SendKey": "\"SendKey\" é uma palavra usada para notificação do ServerChan", - "goAlertInfo": "GoAlert é uma aplicação de código aberto para escalas de plantão, escalonamentos automatizados e notificações (como SMS ou chamadas de voz). Engage automaticamente a pessoa certa, da maneira certa e no momento certo! {0}", - "promosmsTypeFlash": "SMS FLASH - A mensagem será exibida automaticamente no dispositivo do destinatário. Limitado apenas aos destinatários poloneses.", - "promosmsTypeSpeed": "SMS SPEED - Maior prioridade no sistema. Muito rápido e confiável, mas custoso (cerca de duas vezes o preço do SMS FULL).", - "matrixDesc1": "Você pode encontrar o ID da sala interna olhando na seção avançada das configurações da sala em seu cliente Matrix. Deve parecer algo como !QMdRCpUIfLwsfjxye6:home.server.", - "matrixDesc2": "É altamente recomendado que você crie um novo usuário e não use o token de acesso do seu próprio usuário Matrix, pois isso permitirá acesso total à sua conta e todas as salas às quais você se juntou. Em vez disso, crie um novo usuário e convide-o apenas para a sala na qual você deseja receber a notificação. Você pode obter o token de acesso executando {0}", - "aboutChannelName": "Digite o nome do canal no campo Nome do Canal em {0} se você deseja ignorar o canal do Webhook. Exemplo: #outro-canal", - "wayToGetPagerDutyKey": "Você pode obter isso indo para Serviço -> Diretório de Serviço -> (Selecionar um serviço) -> Integrações -> Adicionar integração. Aqui você pode procurar por \"Events API V2\". Mais informações {0}", - "From Name/Number": "Nome/Número de Origem", - "Server URL should not contain the nfty topic": "A URL do servidor não deve conter o tópico do nfty", - "pushDeerServerDescription": "Deixe em branco para usar o servidor oficial", - "wayToGetPagerTreeIntegrationURL": "Após criar a integração do Uptime Kuma no PagerTree, copie o Endpoint. Veja detalhes completos {0}", - "setupDatabaseChooseDatabase": "Qual banco de dados você deseja usar?", - "setupDatabaseMariaDB": "Conectar a um banco de dados MariaDB externo. Você precisa definir as informações de conexão com o banco de dados.", - "setupDatabaseSQLite": "Um arquivo de banco de dados simples, recomendado para implantações de pequena escala. Antes da versão 2.0.0, o Uptime Kuma usava o SQLite como banco de dados padrão.", - "dbName": "Nome do Banco de Dados", - "styleElapsedTimeShowNoLine": "Mostrar (Sem Linha)", - "styleElapsedTimeShowWithLine": "Mostrar (Com Linha)", - "filterActive": "Ativo", - "filterActivePaused": "Pausado", - "selectedMonitorCount": "Selecione: {0}", - "enableNSCD": "Habilitar o NSCD (Name Service Cache Daemon) para o cache de todas as solicitações DNS", - "chromeExecutable": "Executável do Chrome/Chromium", - "Edit Maintenance": "Editar Manutenção", - "aboutIconURL": "Você pode fornecer um link para uma imagem em \"URL do Ícone\" para substituir a imagem de perfil padrão. Não será usado se o \"Ícone Emoji\" estiver configurado.", - "octopushAPIKey": "\"Chave de API\" das credenciais da API HTTP no painel de controle", - "octopushLogin": "\"Login\" das credenciais da API HTTP no painel de controle", - "pushoversounds pushover": "Pushover (padrão)", - "pushoversounds bike": "Bicicleta", - "pushoversounds bugle": "Corneta", - "pushoversounds cashregister": "Caixa registradora", - "pushoversounds classical": "Clássico", - "pushoversounds cosmic": "Cósmico", - "pushoversounds falling": "Cair", - "pushoversounds gamelan": "Gamelão", - "pushoversounds incoming": "Entrada", - "checkPrice": "Verifique os preços de {0}:", - "Check octopush prices": "Verifique os preços da octopush {0}.", - "octopushPhoneNumber": "Número de telefone (formato internacional, por exemplo: +33612345678) ", - "LunaSea Device ID": "ID do Dispositivo LunaSea", - "Apprise URL": "URL do Apprise", - "Strategy": "Estratégia", - "Free Mobile User Identifier": "Identificador de Usuário Free Mobile", - "Free Mobile API Key": "Chave da API Free Mobile", - "Enable TLS": "Habilitar TLS", - "Proto Service Name": "Nome do Serviço Proto", - "Proto Method": "Método Proto", - "Proto Content": "Conteúdo Proto", - "Economy": "Economia", - "Lowcost": "Baixo Custo", - "high": "alto", - "pushoversounds intermission": "Intervalo", - "pushoversounds magic": "Mágico", - "pushoversounds mechanical": "Mecânico", - "pushoversounds siren": "Sirene", - "pushoversounds spacealarm": "Alarme Espacial", - "pushoversounds tugboat": "Rebocador", - "pushoversounds alien": "Alarme Alienígena (longo)", - "pushoversounds climb": "Subir (longo)", - "pushoversounds persistent": "Persistente (longo)", - "pushoversounds echo": "Eco pushover (longo)", - "pushoversounds updown": "Up Down (longo)", - "SMSManager API Docs": "Docs da API SMSManager ", - "Gateway Type": "Tipo de gateway", - "You can divide numbers with": "Você pode dividir números com", - "Base URL": "URL base", - "goAlertIntegrationKeyInfo": "Obtenha a chave de integração genérica da API para o serviço neste formato \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\", geralmente o valor do parâmetro token da URL copiada.", - "AccessKeyId": "ID da Chave de Acesso", - "promosmsTypeFull": "SMS FULL - Nível premium de SMS, você pode usar o seu Nome do Remetente (é necessário registrar o nome primeiro). Confiável para alertas.", - "promosmsPhoneNumber": "Número de telefone (para destinatários poloneses, você pode pular os códigos de área)", - "promosmsSMSSender": "Nome do Remetente de SMS: Nome pré-registrado ou um dos padrões: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "matrixHomeserverURL": "URL do Servidor (com http(s):// e opcionalmente a porta)", - "Notify Channel": "Canal de Notificação", - "aboutNotifyChannel": "O canal de notificação acionará uma notificação na área de trabalho ou no dispositivo móvel para todos os membros do canal, independentemente de sua disponibilidade estar definida como ativa ou ausente.", - "signalImportant": "IMPORTANTE: Você não pode misturar grupos e números nos destinatários!", - "aboutKumaURL": "Se você deixar o campo URL do Uptime Kuma em branco, ele será definido como padrão para a página do GitHub do projeto.", - "smtpDkimDesc": "Por favor, consulte o DKIM do Nodemailer em {0} para obter instruções de uso.", - "Auto resolve or acknowledged": "Auto resolva ou reconhecido", - "auto acknowledged": "reconhecimento automático", - "auto resolve": "resolução automática", - "alertaApiEndpoint": "Endpoint da API", - "serwersmsSenderName": "Nome do Remetente de SMS (registrado via portal do cliente)", - "smseagleGroup": "Nome(s) do grupo(s) da agenda telefônica", - "smseagleContact": "Nome(s) do(s) contato(s) da agenda telefônica", - "smseagleRecipientType": "Tipo de destinatário", - "smseagleRecipient": "Destinatário(s) (múltiplos devem ser separados por vírgula)", - "smseagleUrl": "URL do seu dispositivo SMSEagle", - "Recipient Number": "Número do Destinatário", - "Leave blank to use a shared sender number.": "Deixe em branco para usar um número de remetente compartilhado.", - "Octopush API Version": "Versão da API Octopush", - "Legacy Octopush-DM": "Octopush-DM Legado", - "ntfy Topic": "Tópico do ntfy", - "onebotHttpAddress": "Endereço HTTP do OneBot", - "onebotMessageType": "Tipo de Mensagem do OneBot", - "PushDeer Server": "Servidor PushDeer", - "PushDeer Key": "Chave PushDeer", - "wayToGetClickSendSMSToken": "Você pode obter o Nome de Usuário da API e a Chave da API em {0}.", - "Custom Monitor Type": "Tipo de Monitor Personalizado", - "Body Encoding": "Codificação do Corpo", - "API Keys": "Chaves da API", - "pagertreeSilent": "Silencioso", - "pagertreeLow": "Baixo", - "pagertreeMedium": "Médio", - "pagertreeHigh": "Alto", - "pagertreeCritical": "Crítico", - "pagertreeResolve": "Resolução Automática", - "pagertreeDoNothing": "Não fazer nada", - "lunaseaTarget": "Alvo", - "lunaseaDeviceID": "ID do Dispositivo", - "lunaseaUserID": "ID do Usuário", - "ntfyAuthenticationMethod": "Método de Autenticação", - "ntfyUsernameAndPassword": "Usuário e Senha", - "twilioAccountSID": "SID da Conta", - "twilioApiKey": "Chave da API (opcional)", - "twilioAuthToken": "Token de Autenticação / Segredo da Chave da API", - "twilioFromNumber": "Número de origem", - "twilioToNumber": "Número de destino", - "Monitor Setting": "Configuração do monitor de {0}", - "Show Clickable Link Description": "Se marcada, todos que têm acesso a esta página de status podem ter acesso ao URL do monitor.", - "Group": "Grupo", - "Monitor Group": "Grupo do Monitor", - "Request Timeout": "Tempo esgotado da requisição", - "timeoutAfter": "Tempo esgotado após {0} segundos", - "webhookBodyPresetOption": "Predefinição - {0}", - "webhookBodyCustomOption": "Corpo Customizado", - "Check/Uncheck": "Marcar/Desmarcar", - "tailscalePingWarning": "Para usar o monitor Tailscale Ping, você precisa instalar o Uptime Kuma sem o Docker e também instalar o cliente Tailscale em seu servidor.", - "telegramMessageThreadIDDescription": "Identificador único opcional para o tópico da mensagem alvo do fórum; apenas para supergrupos de fóruns", - "pushoversounds none": "Nenhum (Silencioso)", - "pushyAPIKey": "Chave Secreta da API", - "pushyToken": "Token do Dispositivo", - "GoogleChat": "Chat Google (Apenas para Google Workspace)", - "wayToGetKookGuildID": "Ative o 'Modo Desenvolvedor' nas configurações do Kook e clique com o botão direito do mouse no servidor para obter seu ID", - "Guild ID": "ID do Servidor (Guild)", - "pushoverDesc1": "A prioridade de emergência (2) possui um intervalo de 30 segundos entre as tentativas padrão e expirará após 1 hora.", - "pushoverDesc2": "Se você deseja enviar notificações para diferentes dispositivos, preencha o campo \"Dispositivo\".", - "pushoverMessageTtl": "Tempo de Vida da Mensagem (Segundos)", - "pushoversounds vibrate": "Somente Vibrar", - "SecretAccessKey": "Segredo da Chave de Acesso", - "PhoneNumbers": "Números de Telefone", - "TemplateCode": "Código de Modelo", - "SignName": "Nome de Assinatura", - "Sms template must contain parameters: ": "O modelo de SMS deve conter parâmetros: ", - "Bark Endpoint": "Endpoint do Bark", - "Bark Group": "Grupo do Bark", - "Bark Sound": "Som do Bark", - "WebHookUrl": "URL de Webhook", - "SecretKey": "Chave Secreta", - "High": "Alto", - "WeCom Bot Key": "Chave do Bot do WeCom", - "promosmsTypeEco": "SMS ECO - barato, mas lento e frequentemente sobrecarregado. Limitado apenas aos destinatários poloneses.", - "styleElapsedTime": "Tempo decorrido na barra de heartbeat", - "Expected Value": "Valor Esperado", - "webhookCustomBodyDesc": "Defina um corpo HTTP personalizado para a solicitação. Variáveis de modelo {msg}, {heartbeat}, {monitor} são aceitas.", - "Invert Keyword": "Palavra-chave de Inversão", - "Json Query": "Consulta JSON", - "toastErrorTimeout": "Tempo limite para Notificações de Erro", - "toastSuccessTimeout": "Tempo limite para Notificações de Sucesso", - "monitorToastMessagesLabel": "Monitorar notificações Toast", - "monitorToastMessagesDescription": "As notificações Toast para monitores desaparecem após um determinado tempo em segundos. Definir como -1 desativa o tempo limite. Definir como 0 desativa as notificações Toast.", - "Open Badge Generator": "Gerador de Distintivo", - "Badge Label Color": "Cor do Nome do Distintivo", - "Badge Color": "Cor do Distintivo", - "Badge Label Prefix": "Prefixo do Nome do Distintivo", - "Badge Preview": "Prévia do Distintivo", - "Badge Label Suffix": "Sufixo do Nome do Distintivo", - "Badge Up Color": "Cor de Cima do Distintivo", - "Badge Down Color": "Cor de Baixo do Distintivo", - "Badge Pending Color": "Cor do Distintivo Pendente", - "Badge Maintenance Color": "Cor do Distintivo Em Manutenção", - "Badge Warn Color": "Cor do Distintivo de Aviso", - "Badge Warn Days": "Dias de Aviso do Distintivo", - "Badge Down Days": "Dias Desligado do Distintivo", - "Badge Style": "Estilo do Distintivo", - "Badge value (For Testing only.)": "Valor do Selo (Apenas para Testes.)", - "Badge URL": "URL do Distintivo", - "Badge Generator": "Gerador de Distintivo de {0}", - "Badge Type": "Tipo de Distintivo", - "Badge Duration (in hours)": "Duração do Distintivo (em horas)", - "Badge Label": "Nome do Distintivo", - "Badge Prefix": "Prefixo do Valor do Distintivo", - "Badge Suffix": "Sufixo do Valor do Distintivo", - "Kafka SASL Options": "Opções Kafka SASL", - "Reset Token": "Redefinir Token", - "Kafka Brokers": "Kafka Brokers", - "Kafka Producer Message": "Mensagem do produtor Kafka", - "pushViewCode": "Como Utilizar o Monitor de Push ( Visualizar Codigo)", - "Enter the list of brokers": "Entre a lista de brokers", - "Press Enter to add broker": "Pressione Enter para adicionar broker", - "Kafka Topic Name": "Nome do tópico Kafka", - "Enable Kafka SSL": "Habilitar Kafka SSL", - "Enable Kafka Producer Auto Topic Creation": "Ativar a criação automática de tópicos do Kafka Producer", - "Mechanism": "Mecanismo", - "Pick a SASL Mechanism...": "Escolha um mecanismo SASL…", - "Bark API Version": "Versão da API Bark", - "pushOthers": "Outros", - "programmingLanguages": "Linguagens de Programação", - "liquidIntroduction": "A modelabilidade é obtida por meio da linguagem de modelagem Liquid. Consulte {0} para obter instruções de uso. Estas são as variáveis disponíveis:", - "Secret AccessKey": "Chave de acesso secreta", - "Authorization Identity": "Identidade de autorização", - "emailCustomisableContent": "Conteúdo personalizável", - "smtpLiquidIntroduction": "Os dois campos a seguir podem ser modelados por meio da linguagem de modelagem Liquid. Consulte {0} para obter instruções de uso. Estas são as variáveis disponíveis:", - "leave blank for default subject": "deixe em branco para o assunto padrão", - "emailCustomBody": "Corpo personalizado", - "leave blank for default body": "deixe em branco para o corpo padrão", - "emailTemplateServiceName": "Nome do Serviço", - "emailTemplateHostnameOrURL": "Nome do host ou URL", - "emailTemplateStatus": "Status", - "emailTemplateMonitorJSON": "objeto que descreve o monitor", - "emailTemplateHeartbeatJSON": "objeto que descreve o batimento cardíaco", - "emailTemplateMsg": "mensagem da notificação", - "emailTemplateLimitedToUpDownNotification": "disponível apenas para pulsações UP/DOWN, caso contrário, nulo", - "wayToGetFlashDutyKey": "Você pode ir em Canal -> (Selecionar um Canal) -> Integrações -> Adicionar uma nova integração, adicione um 'Uptime Kuma' para obter um endereço de push, copie a Chave de Integração no endereço. Para mais informações, visite", - "FlashDuty Severity": "Gravidade", - "templateMsg": "mensagem da notificação", - "templateHeartbeatJSON": "objeto que descreve o batimento cardíaco", - "templateMonitorJSON": "objeto que descreve o monitor", - "templateLimitedToUpDownCertNotifications": "disponível apenas para notificações UP/DOWN/expiração de certificado", - "templateLimitedToUpDownNotifications": "disponível apenas para notificações UP/DOWN", - "Session Token": "Token de sessão", - "noGroupMonitorMsg": "Não disponível. Crie primeiro um monitor de grupo.", - "Close": "Fechar", - "Request Body": "Corpo da Solicitação", - "AccessKey Id": "ID da chave de acesso", - "nostrRelays": "Repetidor Nostr", - "nostrRecipientsHelp": "formato npub, um por linha", - "gamedigGuessPortDescription": "A porta usada pelo Valve Server Query Protocol pode ser diferente da porta do cliente. Tente fazer isso se o monitor não conseguir se conectar ao seu servidor.", - "authUserInactiveOrDeleted": "O usuário está inativo ou excluído.", - "authInvalidToken": "Token inválido.", - "authIncorrectCreds": "Usuário ou senha incorretos.", - "2faAlreadyEnabled": "2FA já está ativado.", - "2faEnabled": "2FA habilitado.", - "2faDisabled": "2FA desativado.", - "nostrSender": "Chave privada do remetente (nsec)", - "nostrRecipients": "Chaves Públicas dos Destinatários (npub)", - "GrafanaOncallUrl": "URL do Grafana Oncall", - "noDockerHostMsg": "Não disponível. Configure primeiro um Host Docker.", - "DockerHostRequired": "Defina o Docker Host para este monitor.", - "nostrRelaysHelp": "Um URL de retransmissão por linha", - "showCertificateExpiry": "Mostrar expiração do certificado", - "noOrBadCertificate": "Certificado Ruim/Ausente", - "successAdded": "Adicionado com sucesso.", - "successResumed": "Reiniciado com sucesso.", - "successPaused": "Pausado com sucesso.", - "successDeleted": "Apagado com sucesso.", - "successEdited": "Editado com sucesso.", - "successAuthChangePassword": "A senha foi atualizada com sucesso.", - "successBackupRestored": "Backup restaurado com sucesso.", - "successDisabled": "Desativado com sucesso.", - "successEnabled": "Habilitado com sucesso.", - "tagNotFound": "Etiqueta não encontrada.", - "gamedigGuessPort": "Gamedig: Adivinhar Porta", - "foundChromiumVersion": "Chromium/Chrome encontrado. Versão: {0}", - "successKeywordExplanation": "Palavra-chave MQTT que será considerada bem-sucedida", - "Add a new expiry notification day": "Adicione um novo dia de notificação de expiração", - "Remove the expiry notification": "Remova o dia de notificação de expiração", - "setup a new monitor group": "Configure um novo grupo de monitoramento", - "successKeyword": "Palavra-chave de Sucesso", - "Browser Screenshot": "Captura de tela do navegador", - "Remote Browsers": "Navegadores Remotos", - "Remote Browser": "Navegador Remoto", - "Add a Remote Browser": "Adicione um Navegador Remoto", - "Remote Browser not found!": "Navegador Remoto não encontrado!", - "remoteBrowsersDescription": "Os navegadores remotos são uma alternativa para executar o Chromium localmente. Configure com um serviço como browserless.io ou conecte-se ao seu próprio", - "self-hosted container": "Contêiner auto-hospedado", - "remoteBrowserToggle": "Por padrão, o Chromium é executado dentro do contêiner Uptime Kuma. Você pode usar um navegador remoto diferente, substituindo esse.", - "useRemoteBrowser": "Use um navegador remoto", - "deleteRemoteBrowserMessage": "Tem certeza de que deseja excluir este Navegador Remoto para todos os monitores?", - "Add a domain": "Adicione um domínio", - "Remove domain": "Remover domínio '{0}'", - "openModalTo": "Abrir modal para {0}", - "ntfyPriorityHelptextAllExceptDown": "Todos os eventos são enviados com esta prioridade, exceto {0}-events, que têm prioridade de {1}", - "statusPageSpecialSlugDesc": "Slug especial {0}: esta página será mostrada quando nenhum slug for fornecido", - "settingUpDatabaseMSG": "Configurando o banco de dados. Pode demorar um pouco, por favor, seja paciente.", - "Search monitored sites": "Pesquisar sites monitorados", - "ntfyPriorityHelptextAllEvents": "Todos os eventos são enviados com prioridade máxima", - "What is a Remote Browser?": "O que é um Navegador Remoto ?", - "wayToGetHeiiOnCallDetails": "Como obter o ID do Trigger e as chaves de API é explicado na {documentação}", - "gtxMessagingApiKeyHint": "Você pode encontrar sua chave de API em: Minhas contas de roteamento > Mostrar informações da conta > Credenciais de API > API REST (v2.x)", - "From Phone Number / Transmission Path Originating Address (TPOA)": "Do número de telefone/endereço de origem do caminho de transmissão (TPOA)", - "To Phone Number": "Para número de telefone", - "gtxMessagingToHint": "Formato internacional, com \"+\" inicial ({e164}, {e212} ou {e214})", - "Originator type": "Tipo de originador", - "Alphanumeric (recommended)": "Alfanumérico (recomendado)", - "Telephone number": "Número de telefone", - "cellsyntOriginatortypeAlphanumeric": "String alfanumérica (máximo de 11 caracteres alfanuméricos). Os destinatários não podem responder à mensagem.", - "cellsyntOriginatortypeNumeric": "Valor numérico (máximo de 15 dígitos) com número de telefone em formato internacional sem 00 inicial (por exemplo, o número do Reino Unido 07920 110 000 deve ser definido como 447920110000). Os destinatários podem responder à mensagem.", - "Originator": "Originador", - "Destination": "Destino", - "callMeBotGet": "Aqui você pode gerar um endpoint para {0}, {1} e {2}. Lembre-se de que você pode barrado por uma taxa limitadora. Os limites de taxa parecem ser: {3}", - "cellsyntOriginator": "Visível no celular do destinatário como originador da mensagem. Os valores permitidos e a função dependem do tipo de originador do parâmetro.", - "wayToGetWhapiUrlAndToken": "Você pode obter o URL da API e o token acessando o canal desejado em {0}", - "whapiRecipient": "Número de telefone/ID do contato/ID do grupo", - "API URL": "API URL", - "documentationOf": "{0} Documentação", - "Allow Long SMS": "Permitir SMS longos", - "cellsyntSplitLongMessages": "Divida mensagens longas em até 6 partes. 153 x 6 = 918 caracteres.", - "max 15 digits": "máximo de 15 dígitos", - "max 11 alphanumeric characters": "máximo de 11 caracteres alfanuméricos", - "wayToWriteWhapiRecipient": "O número de telefone com o prefixo internacional, mas sem o sinal de mais no início ({0}), o ID do contato ({1}) ou o ID do grupo ({2}).", - "cellsyntDestination": "Número de telefone do destinatário em formato internacional com 00 inicial seguido do código do país, por ex. 00447920110000 para o número do Reino Unido 07920 110 000 (máximo de 17 dígitos no total). Máximo de 25.000 destinatários separados por vírgula por solicitação HTTP.", - "Your User ID": "Sua ID de usuário", - "gtxMessagingFromHint": "Em telefones celulares, seus destinatários veem o TPOA exibido como remetente da mensagem. São permitidos até 11 caracteres alfanuméricos, um DDD, o DDI local ou números internacionais ({e164}, {e212} ou {e214})", - "Channel access token (Long-lived)": "Token de acesso ao canal (de longa duração)", - "apiKeySevenIO": "SevenIO chave de API", - "wayToGetThreemaGateway": "Você pode se registrar no Threema Gateway {0}.", - "threemaRecipient": "Destinatário", - "threemaRecipientType": "Tipo de destinatário", - "threemaRecipientTypeIdentity": "Threema-ID", - "threemaRecipientTypeIdentityFormat": "8 caracteres", - "threemaRecipientTypePhone": "Número de telefone", - "threemaRecipientTypeEmail": "Endereço de email", - "threemaSenderIdentity": "ID do Gateway", - "threemaSenderIdentityFormat": "8 caracteres, geralmente começa com *", - "Command": "Comando", - "mongodbCommandDescription": "Execute um comando MongoDB no banco de dados. Para informações sobre os comandos disponíveis confira a {documentação}", - "smspartnerApiurl": "Você pode encontrar sua chave de API em seu painel em {0}", - "smspartnerPhoneNumber": "Números de telefone)", - "smspartnerPhoneNumberHelptext": "O número deve estar no formato internacional {0}, {1}. Vários números devem ser separados por {2}", - "smspartnerSenderName": "Nome do remetente de SMS", - "smspartnerSenderNameInfo": "Deve ter entre 3..=11 caracteres regulares", - "wayToGetBitrix24Webhook": "Você pode criar um webhook seguindo as etapas em {0}", - "Mentioning": "Mencionando", - "Don't mention people": "Não mencione pessoas", - "Mention group": "Mencionar {grupo}", - "senderSevenIO": "Enviando número ou nome", - "receiverSevenIO": "Número de recebimento", - "wayToGetSevenIOApiKey": "Visite o painel em app.seven.io > desenvolvedor > chave de API > botão verde adicionar", - "Select message type": "Selecione o tipo de mensagem", - "Send to channel": "Enviar para o canal", - "Create new forum post": "Criar nova postagem no fórum", - "threadForumPostID": "ID da postagem do tópico/fórum", - "postToExistingThread": "Postar em tópico/postagem existente", - "forumPostName": "Nome da postagem no fórum", - "Host URL": "Host URL", - "Refresh Interval": "Intervalo de atualização", - "Refresh Interval Description": "A página de status fará uma atualização completa do site a cada {0} segundos", - "locally configured mail transfer agent": "configurado de agente de transferência de e-mail localmente", - "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Insira o nome do host do servidor ao qual deseja se conectar ou {localhost} se pretende usar um {local_mta}", - "ignoreTLSErrorGeneral": "Ignorar erro TLS/SSL para conexão", - "threemaRecipientTypePhoneFormat": "E.164, sem o sinal de \"+\" no início", - "threemaApiAuthenticationSecret": "ID secreto do Gateway", - "threemaBasicModeInfo": "Observação: Esta integração usa o Threema Gateway no modo básico (criptografia baseada em servidor). Mais detalhes podem ser encontrados em {0}.", - "bitrix24SupportUserID": "Insira seu ID de usuário no Bitrix24. Você pode encontrar o ID no link ao acessar o perfil do usuário.", - "Bitrix24 Webhook URL": "URL do Webhook do Bitrix24", - "wayToGetDiscordThreadId": "Obter o ID de uma thread/postagem em um fórum é similar a obter o ID de um canal. Saiba mais sobre como obter IDs {0}", - "whatHappensAtForumPost": "Criar um novo tópico no fórum. Isto NÃO publica mensagens em tópicos existentes. Para publicar em um tópico existente, use \"{option}\"", - "e.g. {discordThreadID}": "Por exemplo {discordThreadID}", - "receiverInfoSevenIO": "Se o número de destino não estiver localizado na Alemanha, você deve adicionar o código do país antes do número (por exemplo, para o código de país 1 dos EUA, use 117612121212 em vez de 017612121212)", - "apiKeysDisabledMsg": "As chaves de API estão desativadas porque a autenticação está desativada.", - "now": "agora", - "and": "e", - "jsonQueryDescription": "Analise e extraia dados específicos da resposta JSON do servidor usando uma query JSON ou use \"$\" para a resposta em raw, se não estiver esperando JSON. O resultado é então comparado ao valor esperado, como strings. Veja {0} para documentação e use {1} para experimentar com queries.", - "time ago": "atrás", - "-year": "-ano", - "Json Query Expression": "Expressão Json Query", - "cacheBusterParam": "Adicionar o parâmetro {0}", - "snmpCommunityStringHelptext": "Esta string funciona como uma senha para autenticar e controlar o acesso a dispositivos habilitados para SNMP. Combine-a com a configuração do seu dispositivo SNMP.", - "OID (Object Identifier)": "OID (Identificador do Objeto)", - "Condition": "Condição", - "Recipient Type": "Tipo de destinatário", - "wayToGetOnesenderUrlandToken": "Você pode obter a URL e o Token acessando o site da Onesender. Mais informações {0}", - "cacheBusterParamDescription": "Parâmetro gerado randomicamente para ignorar cache.", - "SNMP Version": "Versão SNMP", - "Please enter a valid OID.": "Por favor, insira um OID válido.", - "Private Number": "Número Privado", - "Group ID": "ID do Grupo", - "Add Remote Browser": "Adicionar Navegador Remoto", - "New Group": "Novo Grupo", - "Group Name": "Nome do Grupo", - "OAuth2: Client Credentials": "OAuth2: Client Credentials", - "Authentication Method": "Método de Autenticação", - "Authorization Header": "Header de Autorização" -} +{ + "languageName": "Português (Brasileiro)", + "checkEverySecond": "Verificar a cada {0} segundos", + "retryCheckEverySecond": "Tentar novamente a cada {0} segundos", + "retriesDescription": "Máximo de tentativas antes que o serviço seja marcado como inativo e uma notificação seja enviada", + "ignoreTLSError": "Ignorar erros TLS/SSL para sites HTTPS", + "upsideDownModeDescription": "Inverta o status. Se o serviço estiver acessível, ele está DESLIGADO.", + "maxRedirectDescription": "Número máximo de redirecionamentos a seguir. Defina como 0 para desativar redirecionamentos.", + "acceptedStatusCodesDescription": "Selecione os códigos de status que são considerados uma resposta bem-sucedida.", + "passwordNotMatchMsg": "A senha repetida não corresponde.", + "notificationDescription": "Atribua uma notificação ao (s) monitor (es) para que funcione.", + "keywordDescription": "Pesquise a palavra-chave em html simples ou resposta JSON e diferencia maiúsculas de minúsculas.", + "pauseDashboardHome": "Pausado", + "deleteMonitorMsg": "Tem certeza de que deseja excluir este monitor?", + "deleteNotificationMsg": "Tem certeza de que deseja excluir esta notificação para todos os monitores?", + "resolverserverDescription": "Cloudflare é o servidor padrão, você pode alterar o servidor resolvedor a qualquer momento.", + "rrtypeDescription": "Selecione o RR-Type que você deseja monitorar", + "pauseMonitorMsg": "Tem certeza que deseja fazer uma pausa?", + "enableDefaultNotificationDescription": "Para cada novo monitor, esta notificação será habilitada por padrão. Você ainda pode desativar a notificação separadamente para cada monitor.", + "clearEventsMsg": "Tem certeza de que deseja excluir todos os eventos deste monitor?", + "clearHeartbeatsMsg": "Tem certeza de que deseja excluir todos os heartbeats deste monitor?", + "confirmClearStatisticsMsg": "Tem certeza que deseja excluir TODAS as estatísticas?", + "importHandleDescription": "Escolha 'Ignorar existente' se quiser ignorar todos os monitores ou notificações com o mesmo nome. 'Substituir' excluirá todos os monitores e notificações existentes.", + "confirmImportMsg": "Tem certeza que deseja importar o backup? Certifique-se de que selecionou a opção de importação correta.", + "twoFAVerifyLabel": "Digite seu token para verificar se 2FA está funcionando:", + "tokenValidSettingsMsg": "O token é válido! Agora você pode salvar as configurações 2FA.", + "confirmEnableTwoFAMsg": "Tem certeza de que deseja habilitar 2FA?", + "confirmDisableTwoFAMsg": "Tem certeza de que deseja desativar 2FA?", + "Settings": "Configurações", + "Dashboard": "Painel", + "New Update": "Nova Atualização", + "Language": "Idioma", + "Appearance": "Aparência", + "Theme": "Tema", + "General": "Geral", + "Version": "Versão", + "Check Update On GitHub": "Verificar atualização no Github", + "List": "Lista", + "Add": "Adicionar", + "Add New Monitor": "Adicionar novo monitor", + "Quick Stats": "Estatísticas rápidas", + "Up": "Ligado", + "Down": "Desligado", + "Pending": "Pendente", + "Unknown": "Desconhecido", + "Pause": "Pausar", + "Name": "Nome", + "Status": "Status", + "DateTime": "Data hora", + "Message": "Mensagem", + "No important events": "Nenhum evento importante", + "Resume": "Retomar", + "Edit": "Editar", + "Delete": "Apagar", + "Current": "Atual", + "Uptime": "Tempo de atividade", + "Cert Exp.": "Expiração Do Certificado.", + "day": "dia | dias", + "-day": "-dia", + "hour": "hora", + "-hour": "-hora", + "Response": "Resposta", + "Ping": "Ping", + "Monitor Type": "Tipo de Monitor", + "Keyword": "Palavra-Chave", + "Friendly Name": "Apelido", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Porta", + "Heartbeat Interval": "Intervalo de Heartbeat", + "Retries": "Novas tentativas", + "Heartbeat Retry Interval": "Intervalo de repetição de Heartbeat", + "Advanced": "Avançado", + "Upside Down Mode": "Modo Invertido", + "Max. Redirects": "Redirecionamentos Máx", + "Accepted Status Codes": "Códigos HTTP Aceitáveis", + "Save": "Salvar", + "Notifications": "Notificações", + "Not available, please setup.": "Não disponível, por favor configure.", + "Setup Notification": "Configurar Notificação", + "Light": "Claro", + "Dark": "Escuro", + "Auto": "Auto", + "Theme - Heartbeat Bar": "Tema - Barra de Heartbeat", + "Normal": "Normal", + "Bottom": "Inferior", + "None": "Nenhum", + "Timezone": "Fuso horário", + "Search Engine Visibility": "Visibilidade do mecanismo de pesquisa", + "Allow indexing": "Permitir Indexação", + "Discourage search engines from indexing site": "Desencoraje os motores de busca de indexar o site", + "Change Password": "Mudar senha", + "Current Password": "Senha atual", + "New Password": "Nova Senha", + "Repeat New Password": "Repetir Nova Senha", + "Update Password": "Atualizar Senha", + "Disable Auth": "Desativar Autenticação", + "Enable Auth": "Ativar Autenticação", + "disableauth.message1": "Você tem certeza que deseja {disableAuth}?", + "disable authentication": "desativar a autenticação", + "disableauth.message2": "Isso é para {intendThirdPartyAuth} na frente do 'UpTime Kuma' como o Cloudflare Access.", + "where you intend to implement third-party authentication": "alguém que tem autenticação de terceiros", + "Please use this option carefully!": "Por favor, utilize isso com cautela!", + "Logout": "Deslogar", + "Leave": "Sair", + "I understand, please disable": "Eu entendo, por favor desative", + "Confirm": "Confirmar", + "Yes": "Sim", + "No": "Não", + "Username": "Usuário", + "Password": "Senha", + "Remember me": "Lembre-me", + "Login": "Autenticar", + "No Monitors, please": "Nenhum monitor, por favor", + "add one": "adicionar um", + "Notification Type": "Tipo de Notificação", + "Email": "Email", + "Test": "Testar", + "Certificate Info": "Info. do Certificado", + "Resolver Server": "Resolver Servidor", + "Resource Record Type": "Tipo de registro de aplicação", + "Last Result": "Último resultado", + "Create your admin account": "Crie sua conta de admin", + "Repeat Password": "Repita a senha", + "Import Backup": "Importar Backup", + "Export Backup": "Exportar Backup", + "Export": "Exportar", + "Import": "Importar", + "respTime": "Tempo de Resp. (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Padrão habilitado", + "Apply on all existing monitors": "Aplicar em todos os monitores existentes", + "Create": "Criar", + "Clear Data": "Limpar Dados", + "Events": "Eventos", + "Heartbeats": "Batimentos Cardíacos", + "Auto Get": "Obter Automático", + "backupDescription": "Você pode fazer backup de todos os monitores e todas as notificações em um arquivo JSON.", + "backupDescription2": "OBS: Os dados do histórico e do evento não estão incluídos.", + "backupDescription3": "Dados confidenciais, como tokens de notificação, estão incluídos no arquivo de exportação, mantenha-o com cuidado.", + "alertNoFile": "Selecione um arquivo para importar.", + "alertWrongFileType": "Selecione um arquivo JSON.", + "Clear all statistics": "Limpar todas as estatísticas", + "Skip existing": "Pular existente", + "Overwrite": "Sobrescrever", + "Options": "Opções", + "Keep both": "Manter os dois", + "Verify Token": "Verificar Token", + "Setup 2FA": "Configurar 2FA", + "Enable 2FA": "Ativar 2FA", + "Disable 2FA": "Desativar 2FA", + "2FA Settings": "Configurações do 2FA", + "Two Factor Authentication": "Autenticação e Dois Fatores", + "Active": "Ativo", + "Inactive": "Inativo", + "Token": "Token", + "Show URI": "Mostrar URI", + "Tags": "Tag", + "Add New below or Select...": "Adicionar Novo abaixo ou Selecionar…", + "Tag with this name already exist.": "Já existe uma etiqueta com este nome.", + "Tag with this value already exist.": "Já existe uma etiqueta com este valor.", + "color": "cor", + "value (optional)": "valor (opcional)", + "Gray": "Cinza", + "Red": "Vermelho", + "Orange": "Laranja", + "Green": "Verde", + "Blue": "Azul", + "Indigo": "Índigo", + "Purple": "Roxo", + "Pink": "Rosa", + "Search...": "Buscar…", + "Avg. Ping": "Ping Médio", + "Avg. Response": "Resposta Média", + "Status Page": "Página de Status", + "Status Pages": "Página de Status", + "Entry Page": "Página de entrada", + "statusPageNothing": "Nada aqui, por favor, adicione um grupo ou monitor.", + "No Services": "Nenhum Serviço", + "All Systems Operational": "Todos os Serviços Operacionais", + "Partially Degraded Service": "Serviço parcialmente degradado", + "Degraded Service": "Serviço Degradado", + "Add Group": "Adicionar Grupo", + "Add a monitor": "Adicionar um monitor", + "Edit Status Page": "Editar Página de Status", + "Go to Dashboard": "Ir para a dashboard", + "apprise": "Apprise (Suporta mais de 50 serviços de notificação)", + "Help": "Ajuda", + "Select status pages...": "Selecionar status pages…", + "Game": "Jogo", + "Passive Monitor Type": "Tipo de monitoramento passivo", + "Specific Monitor Type": "Tipo de monitoramento específico", + "Monitor": "Monitoramento | Monitoramentos", + "needPushEvery": "Você deve chamar esta URL a cada {0} segundos.", + "Push URL": "URL de push", + "Custom": "Personalizado", + "here": "aqui", + "Required": "Requerido", + "webhookJsonDesc": "{0} é bom para qualquer servidor HTTP moderno, como Express.js", + "webhookAdditionalHeadersTitle": "Cabeçalhos Adicionais", + "webhookAdditionalHeadersDesc": "Define cabeçalhos adicionais enviados com o webhook. Cada cabeçalho pode ser definido como um JSON chave/valor.", + "Webhook URL": "URL Do Webhook", + "Priority": "Prioridade", + "Read more": "Ver mais", + "appriseInstalled": "Apprise está instalado.", + "appriseNotInstalled": "Apprise não está instalado. {0}", + "Headers": "Cabeçalhos", + "BodyInvalidFormat": "O corpo da solicitação não é um JSON válido: ", + "Monitor History": "Histórico de monitoramento", + "clearDataOlderThan": "Mantenha os dados do histórico do monitoramento por {0} dias.", + "PasswordsDoNotMatch": "As senhas não coincidem.", + "records": "registros", + "One record": "Um registro", + "Current User": "Usuário atual", + "successMessage": "Mensagem de sucesso", + "Post URL": "Posto URL", + "Application Token": "Token de aplicativo", + "Server URL": "URL do servidor", + "Body": "Corpo", + "PushUrl": "Push URL", + "recent": "Recente", + "Done": "Feito", + "Info": "Informação", + "Security": "Segurança", + "Steam API Key": "API Key da Steam", + "Default": "Padrão", + "HTTP Options": "Opções HTTP", + "Create Incident": "Criar incidente", + "Title": "Título", + "Style": "Estilo", + "info": "informação", + "danger": "perigo", + "Please input title and content": "Por favor, inclua título e o conteúdo", + "Created": "Criado", + "Last Updated": "Última atualização", + "Switch to Light Theme": "Mudar para tema claro", + "Show Tags": "Mostrar tags", + "Hide Tags": "Esconder tags", + "Description": "Descrição", + "No monitors available.": "Nenhum monitoramento disponível.", + "Add one": "Adicionar um", + "No Monitors": "Sem monitoramentos", + "Services": "Serviços", + "Discard": "Descartar", + "Cancel": "Cancelar", + "Customize": "Customizar", + "Custom CSS": "CSS personalizado", + "deleteStatusPageMsg": "Tem certeza que deseja apagar essa status page?", + "Proxies": "Proxies", + "default": "Padrão", + "enabled": "Ativado", + "setAsDefault": "Definir como padrão", + "Primary Base URL": "URL base principal", + "Resend Notification if Down X times consecutively": "Reenviar Notificação se OFFLINE X vezes consecutivamente", + "pushOptionalParams": "Parâmetros opcionais: {0}", + "webhookFormDataDesc": "{multipart} é bom para PHP. O JSON precisará ser analisado com {decodeFunction}", + "HeadersInvalidFormat": "Os cabeçalhos da solicitação não são um JSON válidos: ", + "steamApiKeyDescription": "Para monitorar um Steam Game Server, você precisa de uma chave Steam Web-API. Você pode registrar sua chave de API aqui: ", + "warning": "atenção", + "Switch to Dark Theme": "Mudar para tema escuro", + "Custom Footer": "Rodapé personalizado", + "error": "erro", + "critical": "crítico", + "dark": "escuro", + "statusMaintenance": "Manutenção", + "Maintenance": "Manutenção", + "resendEveryXTimes": "Reenviar a cada {0} vezes", + "resendDisabled": "Reenvio desativado", + "Schedule maintenance": "Manutenção agendada", + "Affected Monitors": "Monitoramentos afetados", + "Start of maintenance": "Iniciar manutenção", + "All Status Pages": "Todas as Status Pages", + "Method": "Método", + "General Monitor Type": "Tipo de monitoramento geral", + "markdownSupported": "Markdown suportado", + "emojiCheatSheet": "Dicas de Emojis", + "topic": "Tópico", + "topicExplanation": "Tópico MQTT para monitorar", + "successMessageExplanation": "Mensagem MQTT que será considerada como sucesso", + "Content Type": "Tipo do Conteúdo", + "Shrink Database": "Encolher Banco de Dados", + "Content": "Conteúdo", + "Pick a RR-Type...": "Selecione um RR-Type…", + "Pick Accepted Status Codes...": "Selecione Os Códigos de Status Aceitos…", + "Pick Affected Monitors...": "Selecione os Monitores Afetados…", + "Channel Name": "Nome Do Canal", + "Don't know how to get the token? Please read the guide:": "Não sabe com pegar o token? Por favor, leia o guia:", + "smtpDkimheaderFieldNames": "Chaves Do Cabeçalho para assinar (Opcional)", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "A conexão atual pode ser perdida se você estiver se conectando pelo túnel da Cloudflare. Você tem certeza que deseja pará-lo? Digite a sua senha para confirmar.", + "Powered by": "Fornecido por", + "deleteProxyMsg": "Você tem certeza que deseja deletar este proxy para todos os monitores?", + "proxyDescription": "Os proxies devem ser atribuídos a um monitor para funcionar.", + "Certificate Chain": "Cadeia De Certificados", + "Domain Name Expiry Notification": "Notificação De Expiração Do Nome Do Domínio", + "Proxy": "Proxy", + "wayToGetTelegramChatID": "Você pode pegar o Chat ID enviando uma mensagem marcando o bot no grupo e indo nessa URL para ver o chat_id:", + "wayToGetLineNotifyToken": "Você pode pegar o token de acesso de {0}", + "disableCloudflaredNoAuthMsg": "Você está no modo sem autenticação, a senha não é necessária.", + "Frontend Version do not match backend version!": "Versão do frontend é diferente da versão do backend!", + "strategyManual": "Ativar/Desativar Manualmente", + "weekdayShortThu": "Qui", + "Basic Settings": "Configurações Básicas", + "User ID": "ID Do Usuário", + "Line Developers Console": "Linha Do Terminal De Desenvolvimento", + "lineDevConsoleTo": "Linha Do Terminal De Desenvolvimento- {0}", + "smseagleToken": "Token De Acesso Da API", + "Notification Service": "Serviço De Notificação", + "default: notify all devices": "padrão: notificar todos os dispositivos", + "Trigger type:": "Tipo Do Acionamento:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Em seguida, escolha uma ação, por exemplo, mudar a cena para onde uma luz RGB fica vermelha.", + "Enable": "Habilitado", + "Disable": "Desabilitado", + "IconUrl": "URL Do Ícone", + "Enable DNS Cache": "(Descontinuado) Habilitar Cache de DNS para monitores HTTP(s)", + "Single Maintenance Window": "Janela Única De Manutenção", + "dnsCacheDescription": "Pode não funcionar em alguns ambientes com IPv6, desabita caso encontre qualquer problema.", + "Messaging API": "API Da Mensageira", + "Icon URL": "URL Do Ícone", + "Clone Monitor": "Clonar Monitoramento", + "Clone": "Clonar", + "cloneOf": "Clone do {0}", + "deleteMaintenanceMsg": "Você tem certeza que deseja apagar essa manutenção?", + "sameAsServerTimezone": "O mesmo do servidor de fuso-horário", + "startDateTime": "Início Data/Horário", + "endDateTime": "Fim Data/Horário", + "cronExpression": "Expressão Do Cron", + "cronSchedule": "Agendar: ", + "invalidCronExpression": "Expressão Cron inválida: {0}", + "Display Timezone": "Mostrar Fuso-horário", + "Server Timezone": "Servidor De Fuso-horário", + "statusPageMaintenanceEndDate": "Fim", + "Schedule Maintenance": "Agendar Manutenção", + "Date and Time": "Data E Horário", + "DateTime Range": "Intervalo De Tempo", + "Maintenance Time Window of a Day": "Janela de tempo de manutenção de um dia", + "uninstalling": "Desinstalando", + "confirmUninstallPlugin": "Você tem certeza were quer desinstalar esse plugin?", + "notificationRegional": "Região", + "dnsPortDescription": "Porta do servidor DNS. O padrão é 53. Você pode mudar a porta em qualquer momento.", + "affectedMonitorsDescription": "Selecione os monitores afetados pela manutenção atual", + "Icon Emoji": "Ícone Do Emoji", + "wayToGetKookBotToken": "Criar aplicação e pegar o token do bot em {0}", + "Notification Sound": "Som De Notificação", + "More info on:": "Mais informações em: {0}", + "SMS Type": "Tipo Do SMS", + "Internal Room Id": "ID Interno Da Sala", + "Platform": "Plataforma", + "serwersmsAPIPassword": "Senha Da API", + "serwersmsPhoneNumber": "Número Do Telefone", + "documentation": "documentação", + "smtpDkimDomain": "Nome Do Domínio", + "smtpDkimKeySelector": "Chave Selecionadora", + "smtpDkimPrivateKey": "Chave Privada", + "smtpDkimHashAlgo": "Algoritmo Hash (Opcional)", + "smtpDkimskipFields": "Chaves Do Cabeçalho para não assinar (Opcional)", + "alertaEnvironment": "Ambiente", + "alertaRecoverState": "Estado De Recuperação", + "smseagleEncoding": "Enviar como Unicode", + "onebotGroupMessage": "Grupo", + "onebotPrivateMessage": "Privado", + "onebotUserOrGroupId": "ID do Grupo/Usuário", + "No Maintenance": "Sem Manutenção", + "telegramProtectContentDescription": "Se ativado, a mensagens do bot do Telegram serão protegidas contra encaminhamentos e salvamento.", + "telegramProtectContent": "Proteger Contra Encaminhamento/Salvamento", + "affectedStatusPages": "Mostrar essa mensagem de manutenção nas páginas de status selecionadas", + "loadingError": "Não foi possível pegar os dados, por favor tente novamente.", + "Bot Display Name": "Nome Visível Do Bot", + "Access Token": "Token De Acesso", + "Unpin": "Desfixar", + "telegramSendSilently": "Enviar Silenciosamente", + "telegramSendSilentlyDescription": "Enviar a mensagem silenciosamente. Os usuários não receberam uma notificação com som.", + "YOUR BOT TOKEN HERE": "O SEU TOKEN DO BOT VAI AQUI", + "warningTimezone": "Está usando os servidores de fuso-horários", + "dayOfWeek": "Dia Da Semana", + "dayOfMonth": "Dia Do Mês", + "lastDay": "Último Dia", + "lastDay1": "Último Dia Do Mês", + "lastDay2": "Penúltimo Dia Do Mês", + "lastDay3": "Antepenúltimo Dia Do Mês", + "lastDay4": "Quarto Último Dia Do Mês", + "weekdayShortMon": "Seg", + "weekdayShortTue": "Ter", + "weekdayShortWed": "Qua", + "weekdayShortFri": "Sex", + "weekdayShortSat": "Sab", + "weekdayShortSun": "Dom", + "wayToGetTeamsURL": "Você pode aprender a como criar a URL do webhook {0}.", + "Hello @everyone is...": "Olá {'@'}everyone é…", + "Number": "Número", + "install": "Instalar", + "installing": "Instalando", + "uninstall": "Desinstalar", + "Ignore TLS Error": "Ignorar Erro De TLS", + "Discord Webhook URL": "URL Do Webhook Do Discord", + "emailCustomSubject": "Assunto Personalizado", + "Prefix Custom Message": "Prefixo Personalizado Da Mensagem", + "wayToGetZohoCliqURL": "Você pode aprender a como criar uma URL de Webhook {0}.", + "Channel access token": "Canal do token de acesso", + "promosmsPassword": "Senha Da API", + "promosmsLogin": "Nome Do Login Da API", + "atLeastOneMonitor": "Selecione pelo menos um monitoramento afetado", + "apiCredentials": "Credenciais Da API", + "For safety, must use secret key": "Para segurança deve se usar uma chave secreta", + "Device Token": "Token Do Dispositivo", + "Retry": "Tentar Novamente", + "Topic": "Tópico", + "Setup Proxy": "Configuração do Proxy", + "Proxy Protocol": "Protocolo Do Proxy", + "Proxy Server": "Servidor Proxy", + "Proxy server has authentication": "O servidor proxy tem autenticação", + "aboutWebhooks": "Mais informações sobre Webhooks em: {0}", + "Integration Key": "Chave De Integração", + "Integration URL": "URL De Integração", + "do nothing": "fazendo nada", + "onebotSafetyTips": "Por segurança deve adicionar o token de acesso", + "Subject:": "Assunto:", + "Valid To:": "Válido para:", + "For example: nginx, Apache and Traefik.": "Por exemplo: Nginx, Apache e Traefik.", + "Please read": "Por favor, leia", + "RadiusCallingStationIdDescription": "Identificador do dispositivo de chamada", + "certificationExpiryDescription": "O monitoramento por HTTPS envia a notificação quando o certificado TLS expirar em:", + "or": "ou", + "Effective Date Range": "Intervalo Efetivo De Data (Opcional)", + "recurringIntervalMessage": "Rodar diariamente | Rodar a cada {0} dias", + "Status:": "Status: {0}", + "smtpDkimSettings": "Configurações DKIM", + "alertaApiKey": "Chave Da API", + "alertaAlertState": "Estado Do Alerta", + "statusPageRefreshIn": "Atualizando em: {0}", + "Untitled Group": "Grupo Sem Título", + "primary": "primário", + "setAsDefaultProxyDescription": "Este proxy será habilitado por padrão em todos os novos monitores. Você pode desabilitar o proxy individualmente para cada monitor.", + "Valid": "Válido", + "Invalid": "Inválido", + "User": "Usuário", + "Installed": "Instalado", + "Not installed": "Não instalado", + "enableProxyDescription": "Este proxy não afetará as solicitações do monitor até que seja ativado. Você pode controlar temporariamente a desativação do proxy de todos os monitores pelo status de ativação.", + "Not running": "Desabilitado", + "Remove Token": "Remover Token", + "Start": "Iniciar", + "Stop": "Parar", + "Add New Status Page": "Adicionar Nova Página De Status", + "Accept characters:": "Caracteres aceitos:", + "Running": "Habilitado", + "startOrEndWithOnly": "Apenas iniciar ou parar com {0}", + "No consecutive dashes": "Sem traços consecutivos", + "Next": "Próximo", + "No Proxy": "Sem Proxy", + "Authentication": "Autenticação", + "HTTP Basic Auth": "Autenticação Básica No HTTP", + "New Status Page": "Nova Página De Status", + "Page Not Found": "Página Não Encontrada", + "Reverse Proxy": "Proxy Reverso", + "About": "Sobre", + "Message:": "Mensagem:", + "HTTP Headers": "Cabeçalhos HTTP", + "Trust Proxy": "Proxy Confiável", + "Other Software": "Outros Programas", + "Days Remaining:": "Dias Restantes:", + "No status pages": "Sem página de status", + "Date Created": "Data De Criação", + "Backup": "Cópia de Segurança", + "wayToGetCloudflaredURL": "(Baixe o CloudFlareD de {0})", + "cloudflareWebsite": "Site Da CloudaFlare", + "Issuer:": "Emissor:", + "Fingerprint:": "Impressão Digital:", + "Footer Text": "Texto Do Rodapé", + "Domain Names": "Nome Dos Domínios", + "signedInDispDisabled": "Autenticação Desabilitada.", + "RadiusSecretDescription": "Compartilhe o Segredo entre o cliente e o servidor", + "Certificate Expiry Notification": "Notificação De Certificado Expirado", + "The resource is no longer available.": "O recurso não está mais disponível.", + "There might be a typing error in the address.": "Pode ter um erro de digitação no endereço.", + "Retype the address.": "Digitar novamente o endereço.", + "Go back to the previous page.": "Voltar para a página anterior.", + "Query": "Query", + "settingsCertificateExpiry": "O Certificado TLS Expira", + "Connection Type": "Tipo Da Conexão", + "signedInDisp": "Logado como {0}", + "RadiusCallingStationId": "ID Da Estação De Chamada", + "RadiusCalledStationIdDescription": "Identificador do dispositivo de chamada", + "Coming Soon": "Em Breve", + "Connection String": "String De Conexão", + "Docker Daemon": "Daemon Do Docker", + "Show Powered By": "Mostrar Fornecido Por", + "RadiusSecret": "Segredo Radius", + "RadiusCalledStationId": "ID Da Estação Chamada", + "deleteDockerHostMsg": "Você tem certeza que quer deletar esse host do Docker para todos os monitores?", + "tcp": "TCP / HTTP", + "Docker Container": "Container Docker", + "Container Name / ID": "Nome / ID do Container", + "Domain": "Domínio", + "Workstation": "Estação De Trabalho", + "Packet Size": "Tamanho Do Pacote", + "Bot Token": "Token do Bot", + "wayToGetTelegramToken": "Você pode pegar o token de {0}.", + "chatIDNotFound": "Chat ID não encontrado; por favor envia uma mensagem para o bot primeiro", + "Chat ID": "Chat ID", + "Docker Hosts": "Hosts Do Docker", + "Docker Host": "Host Do Docker", + "Examples": "Exemplos", + "maintenanceStatus-under-maintenance": "Em Manutenção", + "Long-Lived Access Token": "Token De Acesso De Longa Duração", + "Home Assistant URL": "URL Do Home Assinant", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "O token de acessos de longa duração pode ser criado clicando no nome do seu perfil, com o botão esquerdo, ir até o final da lista e clicar em Criar Token. ", + "Event type:": "Tipo Do Evento:", + "Event data:": "Dados Do Evento:", + "Frontend Version": "Versão Do Frontend", + "backupRecommend": "Por favor faça uma cópia do volume ou da pasta com dados(./data/) diretamente ao invés.", + "Optional": "Opcional", + "recurringInterval": "Intervalo", + "Recurring": "Recorrente", + "pauseMaintenanceMsg": "Você tem certeza que quer pausar?", + "maintenanceStatus-inactive": "Inativo", + "maintenanceStatus-scheduled": "Agendado", + "maintenanceStatus-ended": "Terminando", + "maintenanceStatus-unknown": "Desconhecido", + "enableGRPCTls": "Permita para enviar requisições gRPC com conexões TLS", + "confirmDeleteTagMsg": "Você tem certeza que deseja apagar essa tag? Monitores associados a essa tag não serão apagados.", + "grpcMethodDescription": "O nome do método é convertido para o formato camelCase, exemplos: sayHello, check, etc.", + "infiniteRetention": "Defina como 0 para um tempo infinito de retenção.", + "octopushLegacyHint": "Você usa a versão legada do Octopush (2011-2020) ou a nova versão?", + "Example:": "Exemplo: {0}", + "Read more:": "Leia mais em: {0}", + "promosmsAllowLongSMS": "Permitir SMS grandes", + "Huawei": "Huawei", + "smseagleTo": "Números Dos Telefones", + "smseaglePriority": "Prioridade da mensagem (0-9, padrão=0)", + "dataRetentionTimeError": "O período de retenção tem que ser maior ou igual a 0", + "User Key": "Chave Do Usuário", + "Device": "Dispositivo", + "Message Title": "Título Da Mensagem", + "defaultNotificationName": "Minha {notification} Alerta({number})", + "light": "claro", + "socket": "Soquete", + "Add New Tag": "Adicionar Nova Tag", + "API Username": "Usuário Da API", + "API Key": "Chave Da API", + "Show update if available": "Mostrar atualização se disponível", + "Also check beta release": "Também verificar lançamentos em beta", + "Using a Reverse Proxy?": "Está usando um Proxy Reverso?", + "Check how to config it for WebSocket": "Verifique como configurar para o WebSocket", + "Steam Game Server": "Servidor De Jogo Da Steam", + "Most likely causes:": "Causas mais prováveis:", + "What you can try:": "O que você pode tentar:", + "apiKey-active": "Ativa", + "Expiry": "Expiração", + "endpoint": "endpoint (URL Serviço)", + "pagertreeIntegrationUrl": "URL de Integração", + "pagertreeUrgency": "Urgência", + "telegramMessageThreadID": "(Opcional) ID da thread", + "Edit Tag": "Editar Etiqueta", + "Server Address": "Endereço do Servidor", + "Learn More": "Aprender Mais", + "needSignalAPI": "Você precisa ter um cliente Signal com uma API REST.", + "Generate": "Gerar", + "deleteAPIKeyMsg": "Você tem certeza de que quer apagar essa chave de API?", + "plugin": "Plugin | Plugins", + "Expiry date": "Data de expiração", + "Don't expire": "Não expira", + "Continue": "Continuar", + "Add Another": "Adicionar Outro", + "Key Added": "Chave Adicionada", + "Add API Key": "Adicionar chave de API", + "No API Keys": "Sem chaves de API", + "apiKey-expired": "Expirada", + "apiKey-inactive": "Inativa", + "Expires": "Expira", + "disableAPIKeyMsg": "Você tem certeza de que quer desativar essa chave de API?", + "smtp": "Email (SMTP)", + "secureOptionTLS": "TLS (465)", + "From Email": "Remetente", + "smtpCC": "CC", + "smtpBCC": "BCC", + "To Email": "Destinatário", + "Recipients": "Destinatários", + "Google Analytics ID": "ID Google Analytics", + "Post": "Post", + "Slug": "Apelido", + "The slug is already taken. Please choose another slug.": "Este apelido já está em uso. Por favor escolha outro apelido.", + "Setup Docker Host": "Configurar um host Docker", + "trustProxyDescription": "Confiar nos cabeçalhos 'X-Forwarded-*'. Se você quer obter o endereço IP correto do cliente mas seu Uptime Kuma está atrás de um proxy como Nginx ou Apache, você deve habilitar isso.", + "Automations can optionally be triggered in Home Assistant:": "Automações podem ser acionadas opcionalmente no Home Assistant:", + "secureOptionNone": "Nenhum / STARTTLS (25, 587)", + "apiKeyAddedMsg": "Sua chave de API foi adicionada. Por favor anote essa chave, ela não será mostrada novamente.", + "Show Clickable Link": "Mostrar Link Clicável", + "backupOutdatedWarning": "Obsoleto: Já que muitos recursos foram adicionados e este recurso de backup não foi atualizado, ele não consegue gerar ou restaurar um backup completo.", + "wayToGetDiscordURL": "Voce pode configurar isso indo à Configurações do Servidor -> Integrações -> Ver Webhooks -> Novo Webhook", + "Home": "Início", + "Reconnecting...": "Reconectando...", + "Cannot connect to the socket server": "Não foi possível conectar ao servidor socket", + "Uptime Kuma URL": "URL do Uptime Kuma", + "Saved.": "Salvo.", + "Feishu WebHookUrl": "URL de Webhook do Feishu", + "serwersmsAPIUser": "Nome de usuário da API (incluindo o prefixo webapi_)", + "setupDatabaseEmbeddedMariaDB": "Você não precisa definir nada. Esta imagem docker incorporou e configurou um MariaDB para você automaticamente. Uptime Kuma se conectará a este banco de dados via soquete unix.", + "Select": "Selecione", + "supportTelegramChatID": "Suporte para o ID de bate-papo direto / grupo / canal do chat", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Uma lista de Serviços de Notificação pode ser encontrada no Home Assistant em \"Ferramentas de Desenvolvimento > Serviços\". Pesquise por \"notificação\" para encontrar o nome do seu dispositivo/telefone.", + "chromeExecutableAutoDetect": "Auto Detectar", + "chromeExecutableDescription": "Para os usuários do Docker, se o Chromium ainda não estiver instalado, pode demorar alguns minutos para instalar e exibir o resultado do teste. Ele ocupa 1GB de espaço em disco.", + "wayToCheckSignalURL": "Você pode checar esse link para ver como configurar um:", + "wayToGetLineChannelToken": "Primeiro acesse o {0}, crie um provedor e um canal (API de Mensagens), então você pode obter o token de acesso do canal e o ID do usuário nos itens de menu mencionados acima.", + "aboutMattermostChannelName": "Você pode substituir o canal padrão para o qual o Webhook envia postagens, inserindo o nome do canal no campo \"Nome do Canal\". Isso precisa ser habilitado nas configurações do Webhook do Mattermost. Por exemplo: #outro-canal", + "invertKeywordDescription": "Procure pela palavra-chave estar ausente em vez de presente.", + "octopushTypePremium": "Premium (Rápido - recomendado para alertas)", + "octopushTypeLowCost": "Baixo Custo (Lento - às vezes bloqueado pelo operador)", + "octopushSMSSender": "Nome do Remetente de SMS: 3-11 caracteres alfanuméricos e espaço (a-zA-Z0-9)", + "pushoversounds pianobar": "Piano Bar", + "SendKey": "\"SendKey\" é uma palavra usada para notificação do ServerChan", + "goAlertInfo": "GoAlert é uma aplicação de código aberto para escalas de plantão, escalonamentos automatizados e notificações (como SMS ou chamadas de voz). Engage automaticamente a pessoa certa, da maneira certa e no momento certo! {0}", + "promosmsTypeFlash": "SMS FLASH - A mensagem será exibida automaticamente no dispositivo do destinatário. Limitado apenas aos destinatários poloneses.", + "promosmsTypeSpeed": "SMS SPEED - Maior prioridade no sistema. Muito rápido e confiável, mas custoso (cerca de duas vezes o preço do SMS FULL).", + "matrixDesc1": "Você pode encontrar o ID da sala interna olhando na seção avançada das configurações da sala em seu cliente Matrix. Deve parecer algo como !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "É altamente recomendado que você crie um novo usuário e não use o token de acesso do seu próprio usuário Matrix, pois isso permitirá acesso total à sua conta e todas as salas às quais você se juntou. Em vez disso, crie um novo usuário e convide-o apenas para a sala na qual você deseja receber a notificação. Você pode obter o token de acesso executando {0}", + "aboutChannelName": "Digite o nome do canal no campo Nome do Canal em {0} se você deseja ignorar o canal do Webhook. Exemplo: #outro-canal", + "wayToGetPagerDutyKey": "Você pode obter isso indo para Serviço -> Diretório de Serviço -> (Selecionar um serviço) -> Integrações -> Adicionar integração. Aqui você pode procurar por \"Events API V2\". Mais informações {0}", + "From Name/Number": "Nome/Número de Origem", + "Server URL should not contain the nfty topic": "A URL do servidor não deve conter o tópico do nfty", + "pushDeerServerDescription": "Deixe em branco para usar o servidor oficial", + "wayToGetPagerTreeIntegrationURL": "Após criar a integração do Uptime Kuma no PagerTree, copie o Endpoint. Veja detalhes completos {0}", + "setupDatabaseChooseDatabase": "Qual banco de dados você deseja usar?", + "setupDatabaseMariaDB": "Conectar a um banco de dados MariaDB externo. Você precisa definir as informações de conexão com o banco de dados.", + "setupDatabaseSQLite": "Um arquivo de banco de dados simples, recomendado para implantações de pequena escala. Antes da versão 2.0.0, o Uptime Kuma usava o SQLite como banco de dados padrão.", + "dbName": "Nome do Banco de Dados", + "styleElapsedTimeShowNoLine": "Mostrar (Sem Linha)", + "styleElapsedTimeShowWithLine": "Mostrar (Com Linha)", + "filterActive": "Ativo", + "filterActivePaused": "Pausado", + "selectedMonitorCount": "Selecione: {0}", + "enableNSCD": "Habilitar o NSCD (Name Service Cache Daemon) para o cache de todas as solicitações DNS", + "chromeExecutable": "Executável do Chrome/Chromium", + "Edit Maintenance": "Editar Manutenção", + "aboutIconURL": "Você pode fornecer um link para uma imagem em \"URL do Ícone\" para substituir a imagem de perfil padrão. Não será usado se o \"Ícone Emoji\" estiver configurado.", + "octopushAPIKey": "\"Chave de API\" das credenciais da API HTTP no painel de controle", + "octopushLogin": "\"Login\" das credenciais da API HTTP no painel de controle", + "pushoversounds pushover": "Pushover (padrão)", + "pushoversounds bike": "Bicicleta", + "pushoversounds bugle": "Corneta", + "pushoversounds cashregister": "Caixa registradora", + "pushoversounds classical": "Clássico", + "pushoversounds cosmic": "Cósmico", + "pushoversounds falling": "Cair", + "pushoversounds gamelan": "Gamelão", + "pushoversounds incoming": "Entrada", + "checkPrice": "Verifique os preços de {0}:", + "Check octopush prices": "Verifique os preços da octopush {0}.", + "octopushPhoneNumber": "Número de telefone (formato internacional, por exemplo: +33612345678) ", + "LunaSea Device ID": "ID do Dispositivo LunaSea", + "Apprise URL": "URL do Apprise", + "Strategy": "Estratégia", + "Free Mobile User Identifier": "Identificador de Usuário Free Mobile", + "Free Mobile API Key": "Chave da API Free Mobile", + "Enable TLS": "Habilitar TLS", + "Proto Service Name": "Nome do Serviço Proto", + "Proto Method": "Método Proto", + "Proto Content": "Conteúdo Proto", + "Economy": "Economia", + "Lowcost": "Baixo Custo", + "high": "alto", + "pushoversounds intermission": "Intervalo", + "pushoversounds magic": "Mágico", + "pushoversounds mechanical": "Mecânico", + "pushoversounds siren": "Sirene", + "pushoversounds spacealarm": "Alarme Espacial", + "pushoversounds tugboat": "Rebocador", + "pushoversounds alien": "Alarme Alienígena (longo)", + "pushoversounds climb": "Subir (longo)", + "pushoversounds persistent": "Persistente (longo)", + "pushoversounds echo": "Eco pushover (longo)", + "pushoversounds updown": "Up Down (longo)", + "SMSManager API Docs": "Docs da API SMSManager ", + "Gateway Type": "Tipo de gateway", + "You can divide numbers with": "Você pode dividir números com", + "Base URL": "URL base", + "goAlertIntegrationKeyInfo": "Obtenha a chave de integração genérica da API para o serviço neste formato \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\", geralmente o valor do parâmetro token da URL copiada.", + "AccessKeyId": "ID da Chave de Acesso", + "promosmsTypeFull": "SMS FULL - Nível premium de SMS, você pode usar o seu Nome do Remetente (é necessário registrar o nome primeiro). Confiável para alertas.", + "promosmsPhoneNumber": "Número de telefone (para destinatários poloneses, você pode pular os códigos de área)", + "promosmsSMSSender": "Nome do Remetente de SMS: Nome pré-registrado ou um dos padrões: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "matrixHomeserverURL": "URL do Servidor (com http(s):// e opcionalmente a porta)", + "Notify Channel": "Canal de Notificação", + "aboutNotifyChannel": "O canal de notificação acionará uma notificação na área de trabalho ou no dispositivo móvel para todos os membros do canal, independentemente de sua disponibilidade estar definida como ativa ou ausente.", + "signalImportant": "IMPORTANTE: Você não pode misturar grupos e números nos destinatários!", + "aboutKumaURL": "Se você deixar o campo URL do Uptime Kuma em branco, ele será definido como padrão para a página do GitHub do projeto.", + "smtpDkimDesc": "Por favor, consulte o DKIM do Nodemailer em {0} para obter instruções de uso.", + "Auto resolve or acknowledged": "Auto resolva ou reconhecido", + "auto acknowledged": "reconhecimento automático", + "auto resolve": "resolução automática", + "alertaApiEndpoint": "Endpoint da API", + "serwersmsSenderName": "Nome do Remetente de SMS (registrado via portal do cliente)", + "smseagleGroup": "Nome(s) do grupo(s) da agenda telefônica", + "smseagleContact": "Nome(s) do(s) contato(s) da agenda telefônica", + "smseagleRecipientType": "Tipo de destinatário", + "smseagleRecipient": "Destinatário(s) (múltiplos devem ser separados por vírgula)", + "smseagleUrl": "URL do seu dispositivo SMSEagle", + "Recipient Number": "Número do Destinatário", + "Leave blank to use a shared sender number.": "Deixe em branco para usar um número de remetente compartilhado.", + "Octopush API Version": "Versão da API Octopush", + "Legacy Octopush-DM": "Octopush-DM Legado", + "ntfy Topic": "Tópico do ntfy", + "onebotHttpAddress": "Endereço HTTP do OneBot", + "onebotMessageType": "Tipo de Mensagem do OneBot", + "PushDeer Server": "Servidor PushDeer", + "PushDeer Key": "Chave PushDeer", + "wayToGetClickSendSMSToken": "Você pode obter o Nome de Usuário da API e a Chave da API em {0}.", + "Custom Monitor Type": "Tipo de Monitor Personalizado", + "Body Encoding": "Codificação do Corpo", + "API Keys": "Chaves da API", + "pagertreeSilent": "Silencioso", + "pagertreeLow": "Baixo", + "pagertreeMedium": "Médio", + "pagertreeHigh": "Alto", + "pagertreeCritical": "Crítico", + "pagertreeResolve": "Resolução Automática", + "pagertreeDoNothing": "Não fazer nada", + "lunaseaTarget": "Alvo", + "lunaseaDeviceID": "ID do Dispositivo", + "lunaseaUserID": "ID do Usuário", + "ntfyAuthenticationMethod": "Método de Autenticação", + "ntfyUsernameAndPassword": "Usuário e Senha", + "twilioAccountSID": "SID da Conta", + "twilioApiKey": "Chave da API (opcional)", + "twilioAuthToken": "Token de Autenticação / Segredo da Chave da API", + "twilioFromNumber": "Número de origem", + "twilioToNumber": "Número de destino", + "Monitor Setting": "Configuração do monitor de {0}", + "Show Clickable Link Description": "Se marcada, todos que têm acesso a esta página de status podem ter acesso ao URL do monitor.", + "Group": "Grupo", + "Monitor Group": "Grupo do Monitor", + "Request Timeout": "Tempo esgotado da requisição", + "timeoutAfter": "Tempo esgotado após {0} segundos", + "webhookBodyPresetOption": "Predefinição - {0}", + "webhookBodyCustomOption": "Corpo Customizado", + "Check/Uncheck": "Marcar/Desmarcar", + "tailscalePingWarning": "Para usar o monitor Tailscale Ping, você precisa instalar o Uptime Kuma sem o Docker e também instalar o cliente Tailscale em seu servidor.", + "telegramMessageThreadIDDescription": "Identificador único opcional para o tópico da mensagem alvo do fórum; apenas para supergrupos de fóruns", + "pushoversounds none": "Nenhum (Silencioso)", + "pushyAPIKey": "Chave Secreta da API", + "pushyToken": "Token do Dispositivo", + "GoogleChat": "Chat Google (Apenas para Google Workspace)", + "wayToGetKookGuildID": "Ative o 'Modo Desenvolvedor' nas configurações do Kook e clique com o botão direito do mouse no servidor para obter seu ID", + "Guild ID": "ID do Servidor (Guild)", + "pushoverDesc1": "A prioridade de emergência (2) possui um intervalo de 30 segundos entre as tentativas padrão e expirará após 1 hora.", + "pushoverDesc2": "Se você deseja enviar notificações para diferentes dispositivos, preencha o campo \"Dispositivo\".", + "pushoverMessageTtl": "Tempo de Vida da Mensagem (Segundos)", + "pushoversounds vibrate": "Somente Vibrar", + "SecretAccessKey": "Segredo da Chave de Acesso", + "PhoneNumbers": "Números de Telefone", + "TemplateCode": "Código de Modelo", + "SignName": "Nome de Assinatura", + "Sms template must contain parameters: ": "O modelo de SMS deve conter parâmetros: ", + "Bark Endpoint": "Endpoint do Bark", + "Bark Group": "Grupo do Bark", + "Bark Sound": "Som do Bark", + "WebHookUrl": "URL de Webhook", + "SecretKey": "Chave Secreta", + "High": "Alto", + "WeCom Bot Key": "Chave do Bot do WeCom", + "promosmsTypeEco": "SMS ECO - barato, mas lento e frequentemente sobrecarregado. Limitado apenas aos destinatários poloneses.", + "styleElapsedTime": "Tempo decorrido na barra de heartbeat", + "Expected Value": "Valor Esperado", + "webhookCustomBodyDesc": "Defina um corpo HTTP personalizado para a solicitação. Variáveis de modelo {msg}, {heartbeat}, {monitor} são aceitas.", + "Invert Keyword": "Palavra-chave de Inversão", + "Json Query": "Consulta JSON", + "toastErrorTimeout": "Tempo limite para Notificações de Erro", + "toastSuccessTimeout": "Tempo limite para Notificações de Sucesso", + "monitorToastMessagesLabel": "Monitorar notificações Toast", + "monitorToastMessagesDescription": "As notificações Toast para monitores desaparecem após um determinado tempo em segundos. Definir como -1 desativa o tempo limite. Definir como 0 desativa as notificações Toast.", + "Open Badge Generator": "Gerador de Distintivo", + "Badge Label Color": "Cor do Nome do Distintivo", + "Badge Color": "Cor do Distintivo", + "Badge Label Prefix": "Prefixo do Nome do Distintivo", + "Badge Preview": "Prévia do Distintivo", + "Badge Label Suffix": "Sufixo do Nome do Distintivo", + "Badge Up Color": "Cor de Cima do Distintivo", + "Badge Down Color": "Cor de Baixo do Distintivo", + "Badge Pending Color": "Cor do Distintivo Pendente", + "Badge Maintenance Color": "Cor do Distintivo Em Manutenção", + "Badge Warn Color": "Cor do Distintivo de Aviso", + "Badge Warn Days": "Dias de Aviso do Distintivo", + "Badge Down Days": "Dias Desligado do Distintivo", + "Badge Style": "Estilo do Distintivo", + "Badge value (For Testing only.)": "Valor do Selo (Apenas para Testes.)", + "Badge URL": "URL do Distintivo", + "Badge Generator": "Gerador de Distintivo de {0}", + "Badge Type": "Tipo de Distintivo", + "Badge Duration (in hours)": "Duração do Distintivo (em horas)", + "Badge Label": "Nome do Distintivo", + "Badge Prefix": "Prefixo do Valor do Distintivo", + "Badge Suffix": "Sufixo do Valor do Distintivo", + "Kafka SASL Options": "Opções Kafka SASL", + "Reset Token": "Redefinir Token", + "Kafka Brokers": "Kafka Brokers", + "Kafka Producer Message": "Mensagem do produtor Kafka", + "pushViewCode": "Como Utilizar o Monitor de Push ( Visualizar Codigo)", + "Enter the list of brokers": "Entre a lista de brokers", + "Press Enter to add broker": "Pressione Enter para adicionar broker", + "Kafka Topic Name": "Nome do tópico Kafka", + "Enable Kafka SSL": "Habilitar Kafka SSL", + "Enable Kafka Producer Auto Topic Creation": "Ativar a criação automática de tópicos do Kafka Producer", + "Mechanism": "Mecanismo", + "Pick a SASL Mechanism...": "Escolha um mecanismo SASL…", + "Bark API Version": "Versão da API Bark", + "pushOthers": "Outros", + "programmingLanguages": "Linguagens de Programação", + "liquidIntroduction": "A modelabilidade é obtida por meio da linguagem de modelagem Liquid. Consulte {0} para obter instruções de uso. Estas são as variáveis disponíveis:", + "Secret AccessKey": "Chave de acesso secreta", + "Authorization Identity": "Identidade de autorização", + "emailCustomisableContent": "Conteúdo personalizável", + "smtpLiquidIntroduction": "Os dois campos a seguir podem ser modelados por meio da linguagem de modelagem Liquid. Consulte {0} para obter instruções de uso. Estas são as variáveis disponíveis:", + "leave blank for default subject": "deixe em branco para o assunto padrão", + "emailCustomBody": "Corpo personalizado", + "leave blank for default body": "deixe em branco para o corpo padrão", + "emailTemplateServiceName": "Nome do Serviço", + "emailTemplateHostnameOrURL": "Nome do host ou URL", + "emailTemplateStatus": "Status", + "emailTemplateMonitorJSON": "objeto que descreve o monitor", + "emailTemplateHeartbeatJSON": "objeto que descreve o batimento cardíaco", + "emailTemplateMsg": "mensagem da notificação", + "emailTemplateLimitedToUpDownNotification": "disponível apenas para pulsações UP/DOWN, caso contrário, nulo", + "wayToGetFlashDutyKey": "Você pode ir em Canal -> (Selecionar um Canal) -> Integrações -> Adicionar uma nova integração, adicione um 'Uptime Kuma' para obter um endereço de push, copie a Chave de Integração no endereço. Para mais informações, visite", + "FlashDuty Severity": "Gravidade", + "templateMsg": "mensagem da notificação", + "templateHeartbeatJSON": "objeto que descreve o batimento cardíaco", + "templateMonitorJSON": "objeto que descreve o monitor", + "templateLimitedToUpDownCertNotifications": "disponível apenas para notificações UP/DOWN/expiração de certificado", + "templateLimitedToUpDownNotifications": "disponível apenas para notificações UP/DOWN", + "Session Token": "Token de sessão", + "noGroupMonitorMsg": "Não disponível. Crie primeiro um monitor de grupo.", + "Close": "Fechar", + "Request Body": "Corpo da Solicitação", + "AccessKey Id": "ID da chave de acesso", + "nostrRelays": "Repetidor Nostr", + "nostrRecipientsHelp": "formato npub, um por linha", + "gamedigGuessPortDescription": "A porta usada pelo Valve Server Query Protocol pode ser diferente da porta do cliente. Tente fazer isso se o monitor não conseguir se conectar ao seu servidor.", + "authUserInactiveOrDeleted": "O usuário está inativo ou excluído.", + "authInvalidToken": "Token inválido.", + "authIncorrectCreds": "Usuário ou senha incorretos.", + "2faAlreadyEnabled": "2FA já está ativado.", + "2faEnabled": "2FA habilitado.", + "2faDisabled": "2FA desativado.", + "nostrSender": "Chave privada do remetente (nsec)", + "nostrRecipients": "Chaves Públicas dos Destinatários (npub)", + "GrafanaOncallUrl": "URL do Grafana Oncall", + "noDockerHostMsg": "Não disponível. Configure primeiro um Host Docker.", + "DockerHostRequired": "Defina o Docker Host para este monitor.", + "nostrRelaysHelp": "Um URL de retransmissão por linha", + "showCertificateExpiry": "Mostrar expiração do certificado", + "noOrBadCertificate": "Certificado Ruim/Ausente", + "successAdded": "Adicionado com sucesso.", + "successResumed": "Reiniciado com sucesso.", + "successPaused": "Pausado com sucesso.", + "successDeleted": "Apagado com sucesso.", + "successEdited": "Editado com sucesso.", + "successAuthChangePassword": "A senha foi atualizada com sucesso.", + "successBackupRestored": "Backup restaurado com sucesso.", + "successDisabled": "Desativado com sucesso.", + "successEnabled": "Habilitado com sucesso.", + "tagNotFound": "Etiqueta não encontrada.", + "gamedigGuessPort": "Gamedig: Adivinhar Porta", + "foundChromiumVersion": "Chromium/Chrome encontrado. Versão: {0}", + "successKeywordExplanation": "Palavra-chave MQTT que será considerada bem-sucedida", + "Add a new expiry notification day": "Adicione um novo dia de notificação de expiração", + "Remove the expiry notification": "Remova o dia de notificação de expiração", + "setup a new monitor group": "Configure um novo grupo de monitoramento", + "successKeyword": "Palavra-chave de Sucesso", + "Browser Screenshot": "Captura de tela do navegador", + "Remote Browsers": "Navegadores Remotos", + "Remote Browser": "Navegador Remoto", + "Add a Remote Browser": "Adicione um Navegador Remoto", + "Remote Browser not found!": "Navegador Remoto não encontrado!", + "remoteBrowsersDescription": "Os navegadores remotos são uma alternativa para executar o Chromium localmente. Configure com um serviço como browserless.io ou conecte-se ao seu próprio", + "self-hosted container": "Contêiner auto-hospedado", + "remoteBrowserToggle": "Por padrão, o Chromium é executado dentro do contêiner Uptime Kuma. Você pode usar um navegador remoto diferente, substituindo esse.", + "useRemoteBrowser": "Use um navegador remoto", + "deleteRemoteBrowserMessage": "Tem certeza de que deseja excluir este Navegador Remoto para todos os monitores?", + "Add a domain": "Adicione um domínio", + "Remove domain": "Remover domínio '{0}'", + "openModalTo": "Abrir modal para {0}", + "ntfyPriorityHelptextAllExceptDown": "Todos os eventos são enviados com esta prioridade, exceto {0}-events, que têm prioridade de {1}", + "statusPageSpecialSlugDesc": "Slug especial {0}: esta página será mostrada quando nenhum slug for fornecido", + "settingUpDatabaseMSG": "Configurando o banco de dados. Pode demorar um pouco, por favor, seja paciente.", + "Search monitored sites": "Pesquisar sites monitorados", + "ntfyPriorityHelptextAllEvents": "Todos os eventos são enviados com prioridade máxima", + "What is a Remote Browser?": "O que é um Navegador Remoto ?", + "wayToGetHeiiOnCallDetails": "Como obter o ID do Trigger e as chaves de API é explicado na {documentação}", + "gtxMessagingApiKeyHint": "Você pode encontrar sua chave de API em: Minhas contas de roteamento > Mostrar informações da conta > Credenciais de API > API REST (v2.x)", + "From Phone Number / Transmission Path Originating Address (TPOA)": "Do número de telefone/endereço de origem do caminho de transmissão (TPOA)", + "To Phone Number": "Para número de telefone", + "gtxMessagingToHint": "Formato internacional, com \"+\" inicial ({e164}, {e212} ou {e214})", + "Originator type": "Tipo de originador", + "Alphanumeric (recommended)": "Alfanumérico (recomendado)", + "Telephone number": "Número de telefone", + "cellsyntOriginatortypeAlphanumeric": "String alfanumérica (máximo de 11 caracteres alfanuméricos). Os destinatários não podem responder à mensagem.", + "cellsyntOriginatortypeNumeric": "Valor numérico (máximo de 15 dígitos) com número de telefone em formato internacional sem 00 inicial (por exemplo, o número do Reino Unido 07920 110 000 deve ser definido como 447920110000). Os destinatários podem responder à mensagem.", + "Originator": "Originador", + "Destination": "Destino", + "callMeBotGet": "Aqui você pode gerar um endpoint para {0}, {1} e {2}. Lembre-se de que você pode barrado por uma taxa limitadora. Os limites de taxa parecem ser: {3}", + "cellsyntOriginator": "Visível no celular do destinatário como originador da mensagem. Os valores permitidos e a função dependem do tipo de originador do parâmetro.", + "wayToGetWhapiUrlAndToken": "Você pode obter o URL da API e o token acessando o canal desejado em {0}", + "whapiRecipient": "Número de telefone/ID do contato/ID do grupo", + "API URL": "API URL", + "documentationOf": "{0} Documentação", + "Allow Long SMS": "Permitir SMS longos", + "cellsyntSplitLongMessages": "Divida mensagens longas em até 6 partes. 153 x 6 = 918 caracteres.", + "max 15 digits": "máximo de 15 dígitos", + "max 11 alphanumeric characters": "máximo de 11 caracteres alfanuméricos", + "wayToWriteWhapiRecipient": "O número de telefone com o prefixo internacional, mas sem o sinal de mais no início ({0}), o ID do contato ({1}) ou o ID do grupo ({2}).", + "cellsyntDestination": "Número de telefone do destinatário em formato internacional com 00 inicial seguido do código do país, por ex. 00447920110000 para o número do Reino Unido 07920 110 000 (máximo de 17 dígitos no total). Máximo de 25.000 destinatários separados por vírgula por solicitação HTTP.", + "Your User ID": "Sua ID de usuário", + "gtxMessagingFromHint": "Em telefones celulares, seus destinatários veem o TPOA exibido como remetente da mensagem. São permitidos até 11 caracteres alfanuméricos, um DDD, o DDI local ou números internacionais ({e164}, {e212} ou {e214})", + "Channel access token (Long-lived)": "Token de acesso ao canal (de longa duração)", + "apiKeySevenIO": "SevenIO chave de API", + "wayToGetThreemaGateway": "Você pode se registrar no Threema Gateway {0}.", + "threemaRecipient": "Destinatário", + "threemaRecipientType": "Tipo de destinatário", + "threemaRecipientTypeIdentity": "Threema-ID", + "threemaRecipientTypeIdentityFormat": "8 caracteres", + "threemaRecipientTypePhone": "Número de telefone", + "threemaRecipientTypeEmail": "Endereço de email", + "threemaSenderIdentity": "ID do Gateway", + "threemaSenderIdentityFormat": "8 caracteres, geralmente começa com *", + "Command": "Comando", + "mongodbCommandDescription": "Execute um comando MongoDB no banco de dados. Para informações sobre os comandos disponíveis confira a {documentação}", + "smspartnerApiurl": "Você pode encontrar sua chave de API em seu painel em {0}", + "smspartnerPhoneNumber": "Números de telefone)", + "smspartnerPhoneNumberHelptext": "O número deve estar no formato internacional {0}, {1}. Vários números devem ser separados por {2}", + "smspartnerSenderName": "Nome do remetente de SMS", + "smspartnerSenderNameInfo": "Deve ter entre 3..=11 caracteres regulares", + "wayToGetBitrix24Webhook": "Você pode criar um webhook seguindo as etapas em {0}", + "Mentioning": "Mencionando", + "Don't mention people": "Não mencione pessoas", + "Mention group": "Mencionar {grupo}", + "senderSevenIO": "Enviando número ou nome", + "receiverSevenIO": "Número de recebimento", + "wayToGetSevenIOApiKey": "Visite o painel em app.seven.io > desenvolvedor > chave de API > botão verde adicionar", + "Select message type": "Selecione o tipo de mensagem", + "Send to channel": "Enviar para o canal", + "Create new forum post": "Criar nova postagem no fórum", + "threadForumPostID": "ID da postagem do tópico/fórum", + "postToExistingThread": "Postar em tópico/postagem existente", + "forumPostName": "Nome da postagem no fórum", + "Host URL": "Host URL", + "Refresh Interval": "Intervalo de atualização", + "Refresh Interval Description": "A página de status fará uma atualização completa do site a cada {0} segundos", + "locally configured mail transfer agent": "configurado de agente de transferência de e-mail localmente", + "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Insira o nome do host do servidor ao qual deseja se conectar ou {localhost} se pretende usar um {local_mta}", + "ignoreTLSErrorGeneral": "Ignorar erro TLS/SSL para conexão", + "threemaRecipientTypePhoneFormat": "E.164, sem o sinal de \"+\" no início", + "threemaApiAuthenticationSecret": "ID secreto do Gateway", + "threemaBasicModeInfo": "Observação: Esta integração usa o Threema Gateway no modo básico (criptografia baseada em servidor). Mais detalhes podem ser encontrados em {0}.", + "bitrix24SupportUserID": "Insira seu ID de usuário no Bitrix24. Você pode encontrar o ID no link ao acessar o perfil do usuário.", + "Bitrix24 Webhook URL": "URL do Webhook do Bitrix24", + "wayToGetDiscordThreadId": "Obter o ID de uma thread/postagem em um fórum é similar a obter o ID de um canal. Saiba mais sobre como obter IDs {0}", + "whatHappensAtForumPost": "Criar um novo tópico no fórum. Isto NÃO publica mensagens em tópicos existentes. Para publicar em um tópico existente, use \"{option}\"", + "e.g. {discordThreadID}": "Por exemplo {discordThreadID}", + "receiverInfoSevenIO": "Se o número de destino não estiver localizado na Alemanha, você deve adicionar o código do país antes do número (por exemplo, para o código de país 1 dos EUA, use 117612121212 em vez de 017612121212)", + "apiKeysDisabledMsg": "As chaves de API estão desativadas porque a autenticação está desativada.", + "now": "agora", + "and": "e", + "jsonQueryDescription": "Analise e extraia dados específicos da resposta JSON do servidor usando uma query JSON ou use \"$\" para a resposta em raw, se não estiver esperando JSON. O resultado é então comparado ao valor esperado, como strings. Veja {0} para documentação e use {1} para experimentar com queries.", + "time ago": "atrás", + "-year": "-ano", + "Json Query Expression": "Expressão Json Query", + "cacheBusterParam": "Adicionar o parâmetro {0}", + "snmpCommunityStringHelptext": "Esta string funciona como uma senha para autenticar e controlar o acesso a dispositivos habilitados para SNMP. Combine-a com a configuração do seu dispositivo SNMP.", + "OID (Object Identifier)": "OID (Identificador do Objeto)", + "Condition": "Condição", + "Recipient Type": "Tipo de destinatário", + "wayToGetOnesenderUrlandToken": "Você pode obter a URL e o Token acessando o site da Onesender. Mais informações {0}", + "cacheBusterParamDescription": "Parâmetro gerado randomicamente para ignorar cache.", + "SNMP Version": "Versão SNMP", + "Please enter a valid OID.": "Por favor, insira um OID válido.", + "Private Number": "Número Privado", + "Group ID": "ID do Grupo", + "Add Remote Browser": "Adicionar Navegador Remoto", + "New Group": "Novo Grupo", + "Group Name": "Nome do Grupo", + "OAuth2: Client Credentials": "OAuth2: Client Credentials", + "Authentication Method": "Método de Autenticação", + "Authorization Header": "Header de Autorização" +} diff --git a/src/lang/ru-RU.json b/src/lang/ru-RU.json index d71a43971..386f0f26f 100644 --- a/src/lang/ru-RU.json +++ b/src/lang/ru-RU.json @@ -1,975 +1,975 @@ -{ - "languageName": "Русский", - "checkEverySecond": "Проверка каждые {0} секунд", - "retriesDescription": "Максимальное количество попыток перед пометкой сервиса, как недоступного, и отправкой уведомления", - "ignoreTLSError": "Игнорировать ошибки TLS/SSL для HTTPS сайтов", - "upsideDownModeDescription": "Инверсия статуса. Если сервис доступен, он будет отмечен как недоступный.", - "maxRedirectDescription": "Максимальное количество перенаправлений. Поставьте 0, чтобы отключить перенаправления.", - "acceptedStatusCodesDescription": "Выберите коды статусов для определения доступности сервиса.", - "passwordNotMatchMsg": "Введённые пароли не совпадают.", - "notificationDescription": "Привяжите уведомления к мониторам.", - "keywordDescription": "Поиск слова в чистом HTML или в JSON-ответе (чувствительно к регистру).", - "pauseDashboardHome": "Пауза", - "deleteMonitorMsg": "Вы действительно хотите удалить данный монитор?", - "deleteNotificationMsg": "Вы действительно хотите удалить это уведомление для всех мониторов?", - "resolverserverDescription": "Cloudflare является сервером по умолчанию. Вы всегда можете сменить данный сервер.", - "rrtypeDescription": "Выберите тип ресурсной записи, который вы хотите отслеживать", - "pauseMonitorMsg": "Вы действительно хотите приостановить?", - "Settings": "Настройки", - "Dashboard": "Панель управления", - "New Update": "Новое обновление", - "Language": "Язык", - "Appearance": "Внешний вид", - "Theme": "Тема", - "General": "Общее", - "Version": "Версия", - "Check Update On GitHub": "Проверить наличие обновления в GitHub", - "List": "Список", - "Add": "Добавить", - "Add New Monitor": "Добавить Новый Сенсор", - "Quick Stats": "Статистика", - "Up": "Доступен", - "Down": "Не доступен", - "Pending": "В ожидании", - "Unknown": "Неизвестно", - "Pause": "Пауза", - "Name": "Имя", - "Status": "Статус", - "DateTime": "Дата и время", - "Message": "Сообщение", - "No important events": "Нет важных событий", - "Resume": "Возобновить", - "Edit": "Изменить", - "Delete": "Удалить", - "Current": "Текущий", - "Uptime": "Uptime", - "Cert Exp.": "Сертификат ист.", - "day": "день | дней", - "-day": "-дней", - "hour": "час", - "-hour": "-часа", - "Response": "Ответ", - "Ping": "Пинг", - "Monitor Type": "Тип Монитора", - "Keyword": "Ключевое слово", - "Friendly Name": "Имя", - "URL": "URL-ссылка", - "Hostname": "Имя хоста", - "Port": "Порт", - "Heartbeat Interval": "Частота опроса", - "Retries": "Попыток", - "Advanced": "Дополнительно", - "Upside Down Mode": "Режим инверсии статуса", - "Max. Redirects": "Макс. количество перенаправлений", - "Accepted Status Codes": "Допустимые коды статуса", - "Save": "Сохранить", - "Notifications": "Уведомления", - "Not available, please setup.": "Уведомления не доступны, требуется настройка.", - "Setup Notification": "Настройка уведомления", - "Light": "Светлая", - "Dark": "Тёмная", - "Auto": "Как в системе", - "Theme - Heartbeat Bar": "Полоса частоты опроса", - "Normal": "Обычный", - "Bottom": "Внизу", - "None": "Отсутствует", - "Timezone": "Часовой пояс TZ", - "Search Engine Visibility": "Индексация поисковыми системами", - "Allow indexing": "Разрешить индексирование", - "Discourage search engines from indexing site": "Запретить индексирование", - "Change Password": "Изменить пароль", - "Current Password": "Текущий пароль", - "New Password": "Новый пароль", - "Repeat New Password": "Повтор нового пароля", - "Update Password": "Обновить пароль", - "Disable Auth": "Отключить авторизацию", - "Enable Auth": "Включить авторизацию", - "disableauth.message1": "Вы уверены, что хотите {disableAuth}?", - "disable authentication": "отключить авторизацию", - "disableauth.message2": "Это подходит для {intendThirdPartyAuth} перед открытием Uptime Kuma, такие как Cloudflare Access, Authelia или другие.", - "where you intend to implement third-party authentication": "тех, у кого настроена сторонняя система авторизации", - "Please use this option carefully!": "Пожалуйста, используйте с осторожностью!", - "Logout": "Выйти", - "Leave": "Оставить", - "I understand, please disable": "Я понимаю, всё равно отключить", - "Confirm": "Подтвердить", - "Yes": "Да", - "No": "Нет", - "Username": "Логин", - "Password": "Пароль", - "Remember me": "Запомнить меня", - "Login": "Вход в систему", - "No Monitors, please": "Нет Мониторов, пожалуйста", - "No Monitors": "Мониторы отсутствуют", - "add one": "добавить", - "Notification Type": "Тип уведомления", - "Email": "Электронная почта", - "Test": "Тест", - "Certificate Info": "Информация о сертификате", - "Resolver Server": "DNS сервер", - "Resource Record Type": "Тип ресурсной записи", - "Last Result": "Последний результат", - "Create your admin account": "Создайте аккаунт администратора", - "Repeat Password": "Повторите пароль", - "respTime": "Время ответа (мс)", - "notAvailableShort": "N/A", - "Create": "Создать", - "clearEventsMsg": "Вы действительно хотите удалить всю статистику событий данного монитора?", - "clearHeartbeatsMsg": "Вы действительно хотите удалить всю статистику опросов данного монитора?", - "confirmClearStatisticsMsg": "Вы действительно хотите удалить ВСЮ статистику?", - "Clear Data": "Стереть данные", - "Events": "События", - "Heartbeats": "Опросы", - "Auto Get": "Авто-получение", - "enableDefaultNotificationDescription": "Для каждого нового монитора это уведомление будет включено по умолчанию. Вы всё ещё можете отключить уведомления в каждом мониторе отдельно.", - "Default enabled": "По умолчанию включён", - "Also apply to existing monitors": "Применить к существующим мониторам", - "Export": "Экспорт", - "Import": "Импорт", - "backupDescription": "Вы можете сохранить резервную копию всех мониторов и уведомлений в виде JSON-файла.", - "backupDescription2": "Важно: история и события сохранены не будут.", - "backupDescription3": "Важные данные, такие как токены уведомлений, добавляются при экспорте, поэтому храните файлы в безопасном месте.", - "alertNoFile": "Выберите файл для импорта.", - "alertWrongFileType": "Выберите JSON-файл.", - "twoFAVerifyLabel": "Пожалуйста, введите свой токен, чтобы проверить работу 2FA:", - "tokenValidSettingsMsg": "Токен действителен! Теперь вы можете сохранить настройки 2FA.", - "confirmEnableTwoFAMsg": "Вы действительно хотите включить 2FA?", - "confirmDisableTwoFAMsg": "Вы действительно хотите выключить 2FA?", - "Apply on all existing monitors": "Применить ко всем существующим мониторам", - "Verify Token": "Проверить токен", - "Setup 2FA": "Настройка 2FA", - "Enable 2FA": "Включить 2FA", - "Disable 2FA": "Выключить 2FA", - "2FA Settings": "Настройки 2FA", - "Two Factor Authentication": "Двухфакторная аутентификация", - "Active": "Активно", - "Inactive": "Неактивно", - "Token": "Токен", - "Show URI": "Показать URI", - "Clear all statistics": "Очистить статистику", - "retryCheckEverySecond": "Повторять каждые {0} секунд", - "importHandleDescription": "Выберите \"Пропустить существующие\", если вы хотите пропустить каждый монитор или уведомление с таким же именем. \"Перезаписать\" удалит каждый существующий монитор или уведомление и добавит заново. Вариант \"Не проверять\" принудительно восстанавливает все мониторы и уведомления, даже если они уже существуют.", - "confirmImportMsg": "Вы действительно хотите восстановить резервную копию? Убедитесь, что вы выбрали подходящий вариант импорта.", - "Heartbeat Retry Interval": "Интервал повтора запроса", - "Import Backup": "Импорт резервной копии", - "Export Backup": "Скачать резервную копию", - "Skip existing": "Пропустить существующие", - "Overwrite": "Перезаписать", - "Options": "Опции", - "Keep both": "Оставить оба", - "Tags": "Теги", - "Add New below or Select...": "Добавить новый или выбрать…", - "Tag with this name already exist.": "Тег с таким именем уже существует.", - "Tag with this value already exist.": "Тег с таким значением уже существует.", - "color": "Цвет", - "value (optional)": "значение (необязательно)", - "Gray": "Серый", - "Red": "Красный", - "Orange": "Оранжевый", - "Green": "Зелёный", - "Blue": "Синий", - "Indigo": "Индиго", - "Purple": "Пурпурный", - "Pink": "Розовый", - "Search...": "Поиск…", - "Avg. Ping": "Средний пинг", - "Avg. Response": "Средний отклик", - "Entry Page": "Главная", - "statusPageNothing": "Тут ничего нет, добавьте группу или монитор.", - "No Services": "Нет Сервисов", - "All Systems Operational": "Все системы работают", - "Partially Degraded Service": "Частичная работа сервисов", - "Degraded Service": "Отказ всех сервисов", - "Add Group": "Добавить Группу", - "Add a monitor": "Добавить монитор", - "Edit Status Page": "Редактировать Страницу Статусов", - "Go to Dashboard": "В Панель Управления", - "Status Page": "Страница статуса", - "Status Pages": "Страницы статуса", - "Discard": "Отмена", - "Create Incident": "Создать инцидент", - "Switch to Dark Theme": "Тёмная тема", - "Switch to Light Theme": "Светлая тема", - "telegram": "Telegram", - "webhook": "Вебхук", - "smtp": "Email (SMTP)", - "discord": "Discord", - "teams": "Microsoft Teams", - "signal": "Signal", - "gotify": "Gotify", - "slack": "Slack", - "rocket.chat": "Rocket.chat", - "pushover": "Pushover", - "pushy": "Pushy", - "octopush": "Octopush", - "promosms": "PromoSMS", - "lunasea": "LunaSea", - "apprise": "Apprise (Поддержка 50+ сервисов уведомлений)", - "pushbullet": "Pushbullet", - "line": "Line Messenger", - "mattermost": "Mattermost", - "Primary Base URL": "Основной URL", - "Push URL": "URL-ссылка push уведомлений", - "needPushEvery": "К этому URL необходимо обращаться каждые {0} секунд.", - "pushOptionalParams": "Опциональные параметры: {0}", - "defaultNotificationName": "Уведомления {notification} ({number})", - "here": "здесь", - "Required": "Обязательно", - "Bot Token": "Токен бота", - "wayToGetTelegramToken": "Вы можете взять токен здесь - {0}.", - "Chat ID": "ID чата", - "supportTelegramChatID": "Поддерживаются ID чатов, групп и каналов", - "wayToGetTelegramChatID": "Вы можете взять ID вашего чата, отправив сообщение боту и перейдя по этому URL для просмотра chat_id:", - "YOUR BOT TOKEN HERE": "ВАШ ТОКЕН БОТА ЗДЕСЬ", - "chatIDNotFound": "ID чата не найден; пожалуйста отправьте сначала сообщение боту", - "Post URL": "Post URL", - "Content Type": "Тип контента", - "webhookJsonDesc": "{0} подходит для любых современных HTTP-серверов, например Express.js", - "webhookFormDataDesc": "{multipart} подходит для PHP. JSON-вывод необходимо будет обработать с помощью {decodeFunction}", - "secureOptionNone": "Нет / STARTTLS (25, 587)", - "secureOptionTLS": "TLS (465)", - "Ignore TLS Error": "Игнорировать ошибки TLS", - "From Email": "От кого", - "emailCustomSubject": "Своя тема", - "To Email": "Кому", - "smtpCC": "Копия", - "smtpBCC": "Скрытая копия", - "Discord Webhook URL": "Discord вебхук URL", - "wayToGetDiscordURL": "Вы можете создать его в настройках канала \"Настройки -> Интеграции -> Создать Вебхук\"", - "Bot Display Name": "Отображаемое имя бота", - "Prefix Custom Message": "Свой префикс сообщения", - "Hello @everyone is...": "Привет {'@'}everyone это…", - "Webhook URL": "URL вебхука", - "wayToGetTeamsURL": "Как создать URL Вебхука вы можете узнать здесь - {0}.", - "Number": "Номер", - "Recipients": "Получатели", - "needSignalAPI": "Вам необходим клиент Signal с поддержкой REST API.", - "wayToCheckSignalURL": "Пройдите по этому URL, чтобы узнать как настроить такой клиент:", - "signalImportant": "ВАЖНО: Нельзя смешивать в Получателях группы и номера!", - "Application Token": "Токен приложения", - "Server URL": "URL сервера", - "Priority": "Приоритет", - "Icon Emoji": "Иконка Emoji", - "Channel Name": "Имя канала", - "Uptime Kuma URL": "Uptime Kuma URL", - "aboutWebhooks": "Больше информации о вебхуках: {0}", - "aboutChannelName": "Введите имя канала в поле {0} Имя канала, если вы хотите обойти канал вебхука. Например: #other-channel", - "aboutKumaURL": "Если поле Uptime Kuma URL в настройках останется пустым, по умолчанию будет использоваться ссылка на проект на GitHub.", - "emojiCheatSheet": "Шпаргалка по Emoji: {0}", - "User Key": "Ключ пользователя", - "Device": "Устройство", - "Message Title": "Заголовок сообщения", - "Notification Sound": "Звук уведомления", - "More info on:": "Больше информации: {0}", - "pushoverDesc1": "Экстренный приоритет (2) имеет таймаут повтора по умолчанию 30 секунд и истекает через 1 час.", - "pushoverDesc2": "Если вы хотите отправлять уведомления различным устройствам, необходимо заполнить поле Устройство.", - "SMS Type": "Тип SMS", - "octopushTypePremium": "Премиум (Быстрый - рекомендуется для алертов)", - "octopushTypeLowCost": "Дешёвый (Медленный - иногда блокируется операторами)", - "checkPrice": "Тарифы {0}:", - "octopushLegacyHint": "Вы используете старую версию Octopush (2011-2020) или новую?", - "Check octopush prices": "Тарифы Octopush {0}.", - "octopushPhoneNumber": "Номер телефона (межд. формат, например: +79831234567) ", - "octopushSMSSender": "Имя отправителя SMS: 3-11 символов алвафита, цифр и пробелов (a-zA-Z0-9)", - "LunaSea Device ID": "ID устройства LunaSea", - "Apprise URL": "Ссылка Уведомления", - "Example:": "Пример: {0}", - "Read more:": "Подробнее: {0}", - "Status:": "Статус: {0}", - "Read more": "Подробнее", - "appriseInstalled": "Информирование установлено.", - "appriseNotInstalled": "Информирование не установлено. {0}", - "Access Token": "Токен доступа", - "Channel access token": "Токен доступа канала", - "Line Developers Console": "Консоль разработчиков Line", - "lineDevConsoleTo": "Консоль разработчиков Line - {0}", - "Basic Settings": "Базовые настройки", - "User ID": "ID пользователя", - "Messaging API": "API сообщений", - "wayToGetLineChannelToken": "Сначала зайдите в {0}, создайте провайдера и канал (API сообщений), затем вы сможете получить токен доступа канала и ID пользователя из вышеупомянутых пунктов меню.", - "Icon URL": "URL иконки", - "aboutIconURL": "Вы можете вставить ссылку на иконку в поле \"URL иконки\" чтобы изменить картинку профиля по умолчанию. Не используется, если задана иконка Emoji.", - "aboutMattermostChannelName": "Вы можете переопределить канал по умолчанию, в который вебхук пишет, введя имя канала в поле \"Имя канала\". Это необходимо включить в настройках вебхука Mattermost. Например: #other-channel", - "matrix": "Matrix", - "promosmsTypeEco": "SMS ECO - дёшево и медленно, часто перегружен. Только для получателей из Польши.", - "promosmsTypeFlash": "SMS FLASH - сообщения автоматически появятся на устройстве получателя. Только для получателей из Польши.", - "promosmsTypeFull": "SMS FULL - премиум-уровень SMS, можно использовать своё имя отправителя (предварительно зарегистрировав его). Надёжно для алертов.", - "promosmsTypeSpeed": "SMS SPEED - наивысший приоритет в системе. Очень быстро и надёжно, но очень дорого (в два раза дороже, чем SMS FULL).", - "promosmsPhoneNumber": "Номер телефона (для получателей из Польши можно пропустить код региона)", - "promosmsSMSSender": "Имя отправителя SMS: Зарегистрированное или одно из имён по умолчанию: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - "matrixHomeserverURL": "URL сервера (вместе с http(s):// и по желанию порт)", - "Internal Room Id": "Внутренний ID комнаты", - "matrixDesc1": "Внутренний ID комнаты можно найти в Подробностях в параметрах канала вашего Matrix клиента. Он должен выглядеть примерно как !QMdRCpUIfLwsfjxye6:home.server.", - "matrixDesc2": "Рекомендуется создать нового пользователя и не использовать токен доступа личного пользователя Matrix, т.к. это влечёт за собой полный доступ к аккаунту и к комнатам, в которых вы состоите. Вместо этого создайте нового пользователя и пригласите его только в ту комнату, в которой вы хотите получать уведомления. Токен доступа можно получить, выполнив команду {0}", - "Method": "Метод", - "Body": "Объект", - "Headers": "Заголовки", - "PushUrl": "URL пуша", - "HeadersInvalidFormat": "Заголовки запроса не являются валидным JSON: ", - "BodyInvalidFormat": "Тело запроса не является валидным JSON: ", - "Monitor History": "История мониторинга", - "clearDataOlderThan": "Сохранять статистику за {0} дней.", - "PasswordsDoNotMatch": "Пароли не совпадают.", - "records": "записей", - "One record": "Одна запись", - "steamApiKeyDescription": "Для мониторинга игрового сервера Steam вам необходим Web-API ключ Steam. Зарегистрировать его можно здесь: ", - "Certificate Chain": "Цепочка сертификатов", - "Valid": "Действительный", - "Hide Tags": "Скрыть тэги", - "Title": "Название инцидента", - "Content": "Содержание инцидента", - "Post": "Опубликовать", - "Cancel": "Отмена", - "Created": "Создано", - "Unpin": "Открепить", - "Show Tags": "Показать тэги", - "recent": "Последнее", - "3h": "3 часа", - "6h": "6 часов", - "24h": "24 часа", - "1w": "1 неделя", - "No monitors available.": "Нет доступных мониторов.", - "Add one": "Добавить новый", - "Backup": "Резервная копия", - "Security": "Безопасность", - "Shrink Database": "Сжать Базу Данных", - "Current User": "Текущий пользователь", - "About": "О программе", - "Description": "Описание", - "Powered by": "Работает на", - "deleteStatusPageMsg": "Вы действительно хотите удалить эту страницу статуса?", - "Style": "Стиль", - "info": "ИНФО", - "warning": "ВНИМАНИЕ", - "danger": "ОШИБКА", - "primary": "ОСНОВНОЙ", - "light": "СВЕТЛЫЙ", - "dark": "ТЕМНЫЙ", - "New Status Page": "Новая страница статуса", - "Show update if available": "Показывать доступные обновления", - "Also check beta release": "Проверять обновления для бета версий", - "Add New Status Page": "Добавить страницу статуса", - "Next": "Далее", - "Accept characters: a-z 0-9 -": "Разрешены символы: a-z 0-9 -", - "Start or end with a-z 0-9 only": "Начало и окончание имени только на символы: a-z 0-9", - "No consecutive dashes --": "Запрещено использовать тире --", - "HTTP Options": "HTTP Опции", - "Authentication": "Аутентификация", - "HTTP Basic Auth": "HTTP Авторизация", - "PushByTechulus": "Push by Techulus", - "clicksendsms": "ClickSend SMS", - "GoogleChat": "Google Chat (только Google Workspace)", - "apiCredentials": "API реквизиты", - "Done": "Готово", - "Info": "Инфо", - "Steam API Key": "Steam API-Ключ", - "Pick a RR-Type...": "Выберите RR-Тип…", - "Pick Accepted Status Codes...": "Выберите принятые коды статуса…", - "Default": "По умолчанию", - "Please input title and content": "Пожалуйста, введите название и содержание", - "Last Updated": "Последнее обновление", - "Untitled Group": "Группа без названия", - "Services": "Сервисы", - "serwersms": "SerwerSMS.pl", - "serwersmsAPIUser": "API Пользователь (включая префикс webapi_)", - "serwersmsAPIPassword": "API Пароль", - "serwersmsPhoneNumber": "Номер телефона", - "serwersmsSenderName": "SMS Имя Отправителя (регистрированный через пользовательский портал)", - "stackfield": "Stackfield", - "smtpDkimSettings": "DKIM Настройки", - "smtpDkimDesc": "Пожалуйста ознакомьтесь с {0} Nodemailer DKIM для использования.", - "documentation": "документацией", - "smtpDkimDomain": "Имя домена", - "smtpDkimKeySelector": "Ключ", - "smtpDkimPrivateKey": "Приватный ключ", - "smtpDkimHashAlgo": "Алгоритм хэша (необязательно)", - "smtpDkimheaderFieldNames": "Заголовок ключей для подписи (необязательно)", - "smtpDkimskipFields": "Заголовок ключей не для подписи (опционально)", - "gorush": "Gorush", - "alerta": "Alerta", - "alertaApiEndpoint": "Конечная точка API", - "alertaEnvironment": "Среда", - "alertaApiKey": "Ключ API", - "alertaAlertState": "Состояние алерта", - "alertaRecoverState": "Состояние восстановления", - "Proxies": "Прокси", - "Setup Proxy": "Настройка Прокси", - "Proxy Protocol": "Протокол Прокси", - "Proxy Server": "Прокси", - "Proxy server has authentication": "Прокси имеет аутентификацию", - "Reverse Proxy": "Обратный прокси", - "No Proxy": "Без прокси", - "default": "По умолчанию", - "enabled": "Включено", - "setAsDefault": "Установить по умолчанию", - "deleteProxyMsg": "Вы действительно хотите удалить этот прокси для всех мониторов?", - "proxyDescription": "Прокси должны быть привязаны к монитору, чтобы работать.", - "enableProxyDescription": "Этот прокси не будет влиять на запросы монитора, пока не будет активирован. Вы можете контролировать временное отключение прокси для всех мониторов через статус активации.", - "setAsDefaultProxyDescription": "Этот прокси будет по умолчанию включен для новых мониторов. Вы всё ещё можете отдельно отключать прокси в каждом мониторе.", - "Invalid": "Недействительный", - "AccessKeyId": "ID ключа доступа", - "SecretAccessKey": "Секретный ключ доступа", - "PhoneNumbers": "Номера телефонов", - "TemplateCode": "ШаблонКод", - "SignName": "SignName", - "Sms template must contain parameters: ": "Шаблон СМС должен содержать параметры: ", - "Bark Endpoint": "Конечная точка Bark", - "Bark Group": "Bark Group", - "Bark Sound": "Bark Sound", - "WebHookUrl": "WebHookUrl", - "SecretKey": "Секретный Ключ", - "For safety, must use secret key": "В целях безопасности необходимо использовать секретный ключ", - "Device Token": "Токен устройства", - "Platform": "Платформа", - "Huawei": "Huawei", - "High": "High", - "Retry": "Повторить", - "Topic": "Тема", - "WeCom Bot Key": "WeCom Bot Key", - "User": "Пользователь", - "Installed": "Установлено", - "Not installed": "Не установлено", - "Running": "Работает", - "Not running": "Не работает", - "Remove Token": "Удалить токен", - "Start": "Запустить", - "Stop": "Остановить", - "Uptime Kuma": "Uptime Kuma", - "Slug": "Slug", - "Accept characters:": "Принимаемые символы:", - "startOrEndWithOnly": "Начинается или заканчивается только на {0}", - "No consecutive dashes": "Без последовательных тире", - "The slug is already taken. Please choose another slug.": "Этот slug уже занят. Пожалуйста, выберите другой.", - "Page Not Found": "Страница не найдена", - "wayToGetCloudflaredURL": "(Скачать cloudflared с {0})", - "cloudflareWebsite": "Веб-сайт Cloudflare", - "Message:": "Сообщение:", - "Don't know how to get the token? Please read the guide:": "Не знаете, как получить токен? Пожалуйста, прочтите руководство:", - "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Текущее соединение может быть потеряно, если вы в данный момент подключаетесь через туннель Cloudflare. Вы уверены, что хотите это остановить? Введите свой текущий пароль, чтобы подтвердить это.", - "HTTP Headers": "Заголовки HTTP", - "Trust Proxy": "Доверенный прокси", - "Other Software": "Другое программное обеспечение", - "For example: nginx, Apache and Traefik.": "К примеру: nginx, Apache и Traefik.", - "Please read": "Пожалуйста, прочитайте", - "Subject:": "Тема:", - "Valid To:": "Действителен до:", - "Days Remaining:": "Дней осталось:", - "Issuer:": "Издатель:", - "Fingerprint:": "Отпечаток:", - "No status pages": "Нет статусных страниц", - "Domain Name Expiry Notification": "Уведомление об истечении срока действия доменного имени", - "Proxy": "Прокси", - "Date Created": "Дата создания", - "HomeAssistant": "Home Assistant", - "onebotHttpAddress": "HTTP-адрес OneBot", - "onebotMessageType": "Тип сообщения OneBot", - "onebotGroupMessage": "Группа", - "onebotPrivateMessage": "Private", - "onebotUserOrGroupId": "ID группы/пользователя", - "onebotSafetyTips": "В целях безопасности необходимо установить токен доступа", - "PushDeer Key": "ключ PushDeer", - "Footer Text": "Текст нижнего колонтитула", - "Show Powered By": "Показывать на чем создано", - "Domain Names": "Доменные имена", - "signedInDisp": "Вы вошли как {0}", - "signedInDispDisabled": "Аутентификация отключена.", - "RadiusSecret": "Секрет Radius", - "RadiusSecretDescription": "Общий секрет между клиентом и сервером", - "RadiusCalledStationId": "Идентификатор вызываемой станции", - "RadiusCalledStationIdDescription": "Идентификатор вызываемого устройства", - "RadiusCallingStationId": "Идентификатор вызывающей станции", - "RadiusCallingStationIdDescription": "Идентификатор вызывающего устройства", - "Certificate Expiry Notification": "Уведомление об истечении срока действия сертификата", - "API Username": "Имя пользователя API", - "API Key": "API ключ", - "Recipient Number": "Номер получателя", - "From Name/Number": "Имя/номер отправителя", - "Leave blank to use a shared sender number.": "Оставьте пустым, чтобы использовать общий номер отправителя.", - "Octopush API Version": "Версия API Octopush", - "Legacy Octopush-DM": "устаревший Octopush-DM", - "endpoint": "конечная точка", - "octopushAPIKey": "\"API key\" из учетных данных HTTP API в панели управления", - "octopushLogin": "\"Login\" из учетных данных HTTP API в панели управления", - "promosmsLogin": "Логин API", - "promosmsPassword": "Пароль API", - "pushoversounds pushover": "Pushover (по умолчанию)", - "pushoversounds bike": "Велосипед", - "pushoversounds bugle": "Горн", - "pushoversounds cashregister": "Кассовый аппарат", - "pushoversounds classical": "Classical", - "pushoversounds cosmic": "Космический", - "pushoversounds falling": "Падающий", - "pushoversounds gamelan": "Гамелан", - "pushoversounds incoming": "Входящий", - "pushoversounds intermission": "Антракт", - "pushoversounds magic": "Магия", - "pushoversounds mechanical": "Механический", - "pushoversounds pianobar": "Пиано-бар", - "pushoversounds siren": "Сирена", - "pushoversounds spacealarm": "Космическая сигнализация", - "pushoversounds tugboat": "Буксирное судно", - "pushoversounds alien": "Инопланетная тревога (долгое)", - "pushoversounds climb": "Подъем (долгое)", - "pushoversounds persistent": "Стойкий (долгое)", - "pushoversounds echo": "Pushover Эхо (долгое)", - "pushoversounds updown": "Вверх вниз (долгое)", - "pushoversounds vibrate": "Только вибрация", - "pushoversounds none": "Нет (тихо)", - "pushyAPIKey": "Секретный ключ API", - "pushyToken": "Токен устройства", - "Using a Reverse Proxy?": "Используете обратный прокси?", - "Check how to config it for WebSocket": "Проверьте, как настроить его для WebSocket", - "Steam Game Server": "Игровой сервер Steam", - "Most likely causes:": "Наиболее вероятные причины:", - "The resource is no longer available.": "Ресурс больше не доступен.", - "There might be a typing error in the address.": "В адресе может быть опечатка.", - "What you can try:": "Что вы можете попробовать:", - "Retype the address.": "Повторите адрес.", - "Go back to the previous page.": "Вернуться на предыдущую страницу.", - "Coming Soon": "Скоро", - "wayToGetClickSendSMSToken": "Вы можете получить имя пользователя API и ключ API из {0} .", - "Connection String": "Строка подключения", - "Query": "Запрос", - "settingsCertificateExpiry": "Истекание TLS сертификата", - "certificationExpiryDescription": "HTTPS Мониторы инициируют уведомление, когда срок действия сертификата TLS истечет:", - "Setup Docker Host": "Настройка хоста Docker", - "Connection Type": "Тип соединения", - "Docker Daemon": "Демон Docker", - "deleteDockerHostMsg": "Вы уверены, что хотите удалить этот узел docker для всех мониторов?", - "socket": "Сокет", - "tcp": "TCP / HTTP", - "Docker Container": "Docker контейнер", - "Container Name / ID": "Название контейнера / ID", - "Docker Host": "Хост Docker", - "Docker Hosts": "Хосты Docker", - "ntfy Topic": "Тема ntfy", - "Domain": "Домен", - "Workstation": "Рабочая станция", - "disableCloudflaredNoAuthMsg": "Вы находитесь в режиме без авторизации, пароль не требуется.", - "trustProxyDescription": "Доверять заголовкам 'X-Forwarded-*'. Если вы хотите получить правильный IP-адрес клиента, а ваш Uptime Kuma находится под Nginx или Apache, вам следует включить этот параметр.", - "wayToGetLineNotifyToken": "Вы можете получить токен доступа в {0}", - "Examples": "Примеры", - "Home Assistant URL": "URL-адрес Home Assistant", - "Long-Lived Access Token": "Токен доступа с длительным сроком службы", - "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Токен доступа с длительным сроком действия можно создать, нажав на имя вашего профиля (внизу слева) и прокрутив его вниз, затем нажмите Создать токен. ", - "Notification Service": "Служба уведомлений", - "default: notify all devices": "по умолчанию: уведомлять все устройства", - "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Список служб уведомлений можно найти в Home Assistant в разделе \"Инструменты разработчика > Службы\", выполнив поиск по слову \"уведомление\", чтобы найти название вашего устройства/телефона.", - "Automations can optionally be triggered in Home Assistant:": "При желании автоматизацию можно активировать в Home Assistant.:", - "Trigger type:": "Тип триггера:", - "Event type:": "Тип события:", - "Event data:": "Данные события:", - "Then choose an action, for example switch the scene to where an RGB light is red.": "Затем выберите действие, например, переключите сцену на красный индикатор RGB..", - "Frontend Version": "Версия интерфейса", - "Frontend Version do not match backend version!": "Версия интерфейса не соответствует версии серверной части!", - "Base URL": "Базовый URL", - "goAlertInfo": "GoAlert — это приложение с открытым исходным кодом для составления расписания вызовов, автоматической эскалации и уведомлений (например, SMS или голосовых звонков). Автоматически привлекайте нужного человека, нужным способом и в нужное время! {0}", - "goAlertIntegrationKeyInfo": "Получить общий ключ интеграции API для сервиса в этом формате \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" обычно значение параметра токена скопированного URL.", - "goAlert": "GoAlert", - "backupOutdatedWarning": "Устарело: эта функция резервного копирования более не поддерживается. Поскольку добавлено множество функций, она не может создать или восстановить полную резервную копию.", - "backupRecommend": "Сделайте резервную копию тома или папки с данными (./data/) напрямую.", - "Optional": "Необязательно", - "squadcast": "Squadcast", - "SendKey": "SendKey", - "SMSManager API Docs": "Документация к API SMSManager ", - "Gateway Type": "Тип шлюза", - "SMSManager": "SMSManager", - "You can divide numbers with": "Вы можете делить числа с", - "or": "или", - "Maintenance": "Техобслуживание", - "Schedule maintenance": "Запланировать техобслуживание", - "affectedMonitorsDescription": "Выберите мониторы, которые будут затронуты во время техобслуживания", - "affectedStatusPages": "Показывать уведомление о техобслуживании на выбранных страницах статуса", - "atLeastOneMonitor": "Выберите больше одного затрагиваемого монитора", - "dnsPortDescription": "По умолчанию порт DNS сервера - 53. Мы можете изменить его в любое время.", - "Monitor": "Монитор | Мониторы", - "webhookAdditionalHeadersTitle": "Дополнительные Заголовки", - "recurringIntervalMessage": "Запускать 1 раз каждый день | Запускать 1 раз каждые {0} дней", - "error": "ошибка", - "statusMaintenance": "Техобслуживание", - "Affected Monitors": "Затронутые мониторы", - "Start of maintenance": "Начало техобслуживания", - "All Status Pages": "Все страницы статусов", - "Select status pages...": "Выберите страницу статуса…", - "resendEveryXTimes": "Повтор каждые {0} раз", - "resendDisabled": "Повторная отправка отключена", - "deleteMaintenanceMsg": "Вы действительно хотите удалить это техобслуживание?", - "critical": "критично", - "Custom Monitor Type": "Собственный тип монитора", - "markdownSupported": "Поддерживает синтаксис Markdown", - "Passive Monitor Type": "Пассивный Тип Монитора", - "Specific Monitor Type": "Специфический Тип Монитора", - "Help": "Помощь", - "Game": "Игра", - "Resend Notification if Down X times consequently": "Повторно отправить уведомление, если не работает X раз подряд", - "General Monitor Type": "Основной Тип Монитора", - "weekdayShortWed": "Ср", - "weekdayShortThu": "Чт", - "weekdayShortFri": "Пт", - "weekdayShortSat": "Сб", - "weekdayShortSun": "Вс", - "dayOfMonth": "День месяца", - "Pick Affected Monitors...": "Выберите затронутые мониторы…", - "Custom": "Свой цвет", - "successMessage": "Сообщение об успехе", - "successMessageExplanation": "Сообщение MQTT, которое может рассматриваться как успешное", - "Custom CSS": "Пользовательские CSS", - "weekdayShortTue": "Вт", - "dayOfWeek": "День недели", - "confirmDeleteTagMsg": "Вы уверены, что хотите удалить этот тег? Мониторы, связанные с этим тегом не будут удалены.", - "loadingError": "Невозможно получить данные, пожалуйста попробуйте позже.", - "Packet Size": "Размер пакета", - "warningTimezone": "Используется часовой пояс сервера", - "weekdayShortMon": "Пн", - "ZohoCliq": "ZohoCliq", - "strategyManual": "Активен/Неактивен Вручную", - "lastDay": "Последний день", - "lastDay1": "Последний день месяца", - "lastDay2": "Второй последний день месяца", - "lastDay3": "Третий последний день месяца", - "lastDay4": "Четвертый последний день месяца", - "No Maintenance": "Нет техобслуживаний", - "pauseMaintenanceMsg": "Вы уверены что хотите поставить на паузу?", - "maintenanceStatus-under-maintenance": "На техобслуживании", - "maintenanceStatus-inactive": "Неактивен", - "maintenanceStatus-scheduled": "Запланирован(о)", - "maintenanceStatus-ended": "Закончился(ось)", - "maintenanceStatus-unknown": "Неизвестен", - "Display Timezone": "Показать часовой пояс", - "Server Timezone": "Часовой пояс сервера", - "statusPageMaintenanceEndDate": "Конец", - "IconUrl": "URL иконки", - "Enable DNS Cache": "(Устарело) Включить DNS кэш для мониторов HTTP(S)", - "Enable": "Включить", - "Disable": "Отключить", - "Single Maintenance Window": "Единое окно техобслуживания", - "Schedule Maintenance": "Запланировать техобслуживание", - "Date and Time": "Дата и время", - "DateTime Range": "Промежуток даты и времени", - "uninstalling": "Удаляется", - "dataRetentionTimeError": "Период хранения должен быть равен 0 или больше", - "infiniteRetention": "Установите 0 для бессрочного хранения.", - "enableGRPCTls": "Разрешить отправлять gRPC запрос через TLS соединение", - "Free Mobile API Key": "API ключ Free Mobile", - "Edit Tag": "Редактировать тэг", - "webhookAdditionalHeadersDesc": "Устанавливает дополнительные заголовки, отправляемые с помощью веб-хука. Каждый заголовок должен быть определён как JSON ключ/значение.", - "topic": "Тема", - "Customize": "Персонализировать", - "Custom Footer": "Пользовательский footer", - "dnsCacheDescription": "Это может не работать на некоторых IPv6 окружениях, отключите это, если у вас возникают проблемы.", - "confirmUninstallPlugin": "Вы уверены, что хотите удалить этот плагин?", - "plugin": "Плагин | Плагины", - "install": "Установить", - "installing": "Устанавливается", - "uninstall": "Удалить", - "Recurring": "Текущий", - "recurringInterval": "Интервал", - "smseagle": "SMSEagle", - "Google Analytics ID": "ID Google Аналитики", - "wayToGetZohoCliqURL": "Вы можете узнать как создать webhook URL тут {0}.", - "Effective Date Range": "Даты действия (Опционально)", - "wayToGetKookGuildID": "Включите \"Режим разработчика\" в настройках Kook, а затем нажмите правой кнопкой по гильдии чтобы скопировать её ID", - "Enable TLS": "Включить TLS", - "Integration Key": "Ключ интеграции", - "Integration URL": "URL интеграции", - "do nothing": "ничего не делать", - "smseagleTo": "Номер(а) телефона", - "smseagleGroup": "Название(я) группы телефонной книги", - "smseagleContact": "Имена контактов телефонной книги", - "smseagleRecipientType": "Тип получателя", - "smseagleRecipient": "Получатель(и) (если множество, должны быть разделены запятой)", - "smseagleToken": "Токен доступа API", - "smseagleUrl": "URL вашего SMSEagle устройства", - "smseagleEncoding": "Отправить в юникоде", - "smseaglePriority": "Приоритет сообщения (0-9, по умолчанию = 0)", - "Server Address": "Адрес сервера", - "Learn More": "Узнать больше", - "topicExplanation": "MQTT топик для мониторинга", - "Guild ID": "Идентификатор гильдии", - "Kook": "Kook", - "wayToGetKookBotToken": "Создайте приложение и получите токен бота по адресу {0}", - "Resend Notification if Down X times consecutively": "Повторная отправка уведомления при неудачном запросе X раз", - "telegramProtectContent": "Запретить пересылку/сохранение", - "telegramProtectContentDescription": "Если включено, сообщения бота в Telegram будут запрещены для пересылки и сохранения.", - "telegramSendSilently": "Отправить без звука", - "telegramSendSilentlyDescription": "Пользователи получат уведомление без звука.", - "Maintenance Time Window of a Day": "Суточный интервал для техобслуживания", - "Clone Monitor": "Копия", - "Clone": "Клонировать", - "cloneOf": "Копия {0}", - "notificationRegional": "Региональный", - "Add New Tag": "Добавить тег", - "Body Encoding": "Тип содержимого запроса.(JSON or XML)", - "Strategy": "Стратегия", - "Free Mobile User Identifier": "Бесплатный мобильный идентификатор пользователя", - "Auto resolve or acknowledged": "Автоматическое разрешение или подтверждение", - "auto acknowledged": "автоматическое подтверждение", - "auto resolve": "автоматическое разрешение", - "API Keys": "API Ключи", - "Expiry": "Срок действия", - "Expiry date": "Дата истечения срока действия", - "Don't expire": "Не истекает", - "Continue": "Продолжить", - "Add Another": "Добавить еще", - "Key Added": "Ключ добавлен", - "Add API Key": "Добавить API ключ", - "No API Keys": "Нет ключей API", - "apiKey-active": "Активный", - "apiKey-expired": "Истёк", - "apiKey-inactive": "Неактивный", - "Expires": "Истекает", - "disableAPIKeyMsg": "Вы уверены, что хотите отключить этот API ключ?", - "Generate": "Сгенерировать", - "pagertreeResolve": "Автоматическое разрешение", - "pagertreeDoNothing": "Ничего не делать", - "lunaseaTarget": "Цель", - "lunaseaDeviceID": "Идентификатор устройства", - "lunaseaUserID": "Идентификатор пользователя", - "Lowcost": "Бюджетный", - "pagertreeIntegrationUrl": "URL-адрес интеграции", - "pagertreeUrgency": "Срочность", - "pagertreeSilent": "Тихий", - "pagertreeLow": "Низкий", - "pagertreeMedium": "Средний", - "pagertreeHigh": "Высокий", - "pagertreeCritical": "Критический", - "high": "высокий", - "promosmsAllowLongSMS": "Разрешить длинные СМС", - "Economy": "Экономия", - "wayToGetPagerDutyKey": "Вы можете это получить, перейдя в Сервис -> Каталог сервисов -> (Выберите сервис) -> Интеграции -> Добавить интеграцию. Здесь вы можете искать «Events API V2». Подробнее {0}", - "apiKeyAddedMsg": "Ваш ключ API добавлен. Пожалуйста, обратите внимание на это сообщение, так как оно отображается один раз.", - "deleteAPIKeyMsg": "Вы уверены, что хотите удалить этот ключ API?", - "wayToGetPagerTreeIntegrationURL": "После создания интеграции Uptime Kuma в PagerTree скопируйте файл Endpoint. См. полную информацию {0}", - "telegramMessageThreadIDDescription": "Необязательный уникальный идентификатор для цепочки сообщений (темы) форума; только для форумов-супергрупп", - "grpcMethodDescription": "Имя метода преобразуется в формат camelCase, например, sayHello, check и т. д.", - "Proto Service Name": "Название службы Proto", - "Proto Method": "Метод Proto", - "Proto Content": "Содержание Proto", - "telegramMessageThreadID": "(Необязательно) ID цепочки сообщений", - "statusPageRefreshIn": "Обновление через: {0}", - "twilioAccountSID": "SID учетной записи", - "twilioAuthToken": "Токен авторизации / Секретный API ключ", - "twilioFromNumber": "С номера", - "twilioToNumber": "На номер", - "sameAsServerTimezone": "Аналогично часовому поясу сервера", - "startDateTime": "Начальная дата и время", - "endDateTime": "Конечная дата и время", - "cronExpression": "Выражение для Cron", - "cronSchedule": "Расписание: ", - "invalidCronExpression": "Неверное выражение Cron: {0}", - "ntfyUsernameAndPassword": "Логин и пароль", - "ntfyAuthenticationMethod": "Способ входа", - "Monitor Setting": "Настройка монитора {0}", - "Show Clickable Link": "Показать кликабельную ссылку", - "Badge Generator": "Генератор значков для {0}", - "Badge Type": "Тип значка", - "Badge Duration": "Срок действия значка", - "Badge Label": "Надпись для значка", - "Badge Prefix": "Значение префикса значка", - "Badge Label Color": "Цвет надписи значка", - "Badge Color": "Цвет значка", - "Badge Label Prefix": "Префикс надписи для значка", - "Open Badge Generator": "Открыть генератор значка", - "Badge Up Color": "Цвет значка для статуса \"Доступен\"", - "Badge Pending Color": "Цвет значка для статуса \"Ожидание\"", - "Badge Maintenance Color": "Цвет значка для статуса \"Техобслуживание\"", - "Badge Style": "Стиль значка", - "Badge Suffix": "Значение суффикса значка", - "Badge value (For Testing only.)": "Значение значка (только для тестирования)", - "Badge URL": "URL значка", - "Group": "Группа", - "Monitor Group": "Группа мониторов", - "Show Clickable Link Description": "Если флажок установлен, все, кто имеет доступ к этой странице состояния, могут иметь доступ к URL-адресу монитора.", - "pushoverMessageTtl": "TTL сообщения (в секундах)", - "Badge Down Color": "Цвет значка для статуса \"Недоступен\"", - "Badge Label Suffix": "Суффикс надписи для значка", - "Edit Maintenance": "Редактировать техобслуживание", - "Reconnecting...": "Переподключение...", - "Cannot connect to the socket server": "Невозможно подключиться к серверу", - "Badge Warn Color": "Цвет значка для предупреждения", - "Badge Warn Days": "Значок для \"дней предупреждения\"", - "Badge Down Days": "Значок для \"дней недоступности\"", - "Home": "Главная", - "noGroupMonitorMsg": "Не доступно. Создайте сначала группу мониторов.", - "Close": "Закрыть", - "chromeExecutableDescription": "Для пользователей Docker, если Chromium еще не установлен, может потребоваться несколько минут для установки и отображения результата тестирования. Он занимает 1 ГБ дискового пространства.", - "chromeExecutable": "Исполняемый файл Chrome/Chromium", - "chromeExecutableAutoDetect": "Автообнаружение", - "Badge Preview": "Предпросмотр значка", - "Badge Duration (in hours)": "Срок действия значка (в часах)", - "twilioApiKey": "API ключ (необязательно)", - "Expected Value": "Ожидаемое значение", - "Json Query": "JSON Запрос", - "Kafka Brokers": "Kafka Brokers", - "Press Enter to add broker": "Нажмите Enter чтобы добавить брокера", - "Kafka Topic Name": "Название темы Kafka", - "Kafka Producer Message": "Сообщение продюсера Kafka", - "Kafka SASL Options": "Параметры SASL в Kafka", - "Mechanism": "Механизм", - "Pick a SASL Mechanism...": "Выберите механизм SASL…", - "AccessKey Id": "AccessKey Id", - "Secret AccessKey": "Секретный ключ доступа", - "Session Token": "Токен сессии", - "Notify Channel": "Канал оповещений", - "aboutNotifyChannel": "Уведомление о канале вызовет настольное или мобильное уведомление для всех участников канала, независимо от того, установлена ли их доступность как активная или отсутствующая.", - "Enter the list of brokers": "Введите список брокеров", - "Enable Kafka SSL": "Включение протокола Kafka SSL", - "Enable Kafka Producer Auto Topic Creation": "Включение автоматического создания тем в Kafka Producer", - "Authorization Identity": "Авторизационная идентичность", - "Request Body": "Тело запроса", - "webhookCustomBodyDesc": "Определите пользовательское HTTP Body для запроса. Принимаются шаблонные переменные {msg}, {heartbeat}, {monitor}.", - "webhookBodyCustomOption": "Пользовательский объект", - "webhookBodyPresetOption": "Пресет - {0}", - "invertKeywordDescription": "Искать, чтобы ключевое слово отсутствовало, а не присутствовало.", - "filterActive": "Активный", - "filterActivePaused": "На паузе", - "Invert Keyword": "Инвертировать ключевое слово", - "tailscalePingWarning": "Для того чтобы использовать монитор Tailscale Ping, необходимо установить Uptime Kuma без Docker, а также установить на сервер клиент Tailscale.", - "PushDeer Server": "Сервер PushDeer", - "pushDeerServerDescription": "Оставьте пустым для использования официального сервера", - "showCertificateExpiry": "Показывать истекающий сертификат", - "Request Timeout": "Тайм-Аут запроса", - "timeoutAfter": "Тайм-Аут через {0} секунд", - "Select": "Выбрать", - "selectedMonitorCount": "Выбрано: {0}", - "Check/Uncheck": "Отметить/Снять", - "gamedigGuessPort": "Gamedig: Угадай порт", - "styleElapsedTime": "Прошедшее время под полосой частоты опроса", - "noOrBadCertificate": "Отсутствие сертификата", - "gamedigGuessPortDescription": "Порт, используемый протоколом Valve Server Query Protocol, может отличаться от порта клиента. Попробуйте это сделать, если монитор не может подключиться к серверу.", - "nostrSender": "Закрытый ключ отправителя (nsec)", - "wayToGetFlashDutyKey": "Вы можете перейти на страницу \"Канал\" -> (Выберите канал) -> \"Интеграции\" -> \"Добавить новую страницу интеграции\", добавить \"Пользовательское событие\", чтобы получить push-адрес, скопировать ключ интеграции в адрес. Для получения дополнительной информации, пожалуйста, посетите", - "styleElapsedTimeShowNoLine": "Показать (Без линии)", - "styleElapsedTimeShowWithLine": "Показать (С линией)", - "Server URL should not contain the nfty topic": "URL сервера не должен содержать тему nfty", - "nostrRecipients": "Открытые ключи получателей (npub)", - "nostrRecipientsHelp": "формат npub, по одному в строке", - "FlashDuty Severity": "Серьёзность", - "nostrRelays": "Реле Nostr", - "nostrRelaysHelp": "Один URL-адрес ретрансляции в каждой строке", - "enableNSCD": "Включить NSCD (Name Service Cache Daemon) для кэширования всех DNS-запросов", - "Saved.": "Сохранено", - "setupDatabaseChooseDatabase": "Какую базу данных Вы бы хотели использовать?", - "setupDatabaseEmbeddedMariaDB": "Вам не нужно ничего настраивать. В этот докер-образ автоматически встроена и настроена MariaDB. Uptime Kuma будет подключаться к этой базе данных через unix-сокет.", - "setupDatabaseSQLite": "Простой файл базы данных, рекомендуемый для небольших развертываний. До версии 2.0.0 Uptime Kuma использовал SQLite в качестве базы данных по умолчанию.", - "setupDatabaseMariaDB": "Подключитесь к внешней базе данных MariaDB. Необходимо задать информацию о подключении к базе данных.", - "dbName": "Имя базы данных", - "pushViewCode": "Как использовать монитор Push? (Посмотреть код)", - "programmingLanguages": "Языки программирования", - "Bark API Version": "Версия Bark API", - "monitorToastMessagesDescription": "Уведомления для мониторов исчезают через заданное время в секундах. Значение -1 отключает тайм-аут. Значение 0 отключает уведомления.", - "monitorToastMessagesLabel": "Уведомления", - "toastErrorTimeout": "Таймаут для уведомлений об ошибках", - "toastSuccessTimeout": "Таймаут для уведомлений об успехе", - "pushOthers": "Другие", - "successPaused": "Успешно приостановлено.", - "authUserInactiveOrDeleted": "Пользователь неактивен или удалён.", - "authInvalidToken": "Неверный токен.", - "authIncorrectCreds": "Неверное имя пользователя или пароль.", - "2faEnabled": "2FA включена.", - "2faAlreadyEnabled": "2FA уже включена.", - "2faDisabled": "2FA отключена.", - "successAdded": "Успешно добавлено.", - "successResumed": "Успешно возобновлено.", - "GrafanaOncallUrl": "URL-адрес Grafana Oncall", - "liquidIntroduction": "Шаблонность достигается с помощью языка шаблонов Liquid. Инструкции по использованию приведены в разделе {0}. Вот доступные переменные:", - "templateLimitedToUpDownNotifications": "доступно только для уведомлений UP/DOWN", - "emailTemplateLimitedToUpDownNotification": "доступен только для сигналов UP/DOWN, в противном случае null", - "leave blank for default body": "оставьте пустым для объекта по умолчанию", - "emailTemplateServiceName": "Название сервиса", - "emailCustomisableContent": "Настраиваемый контент", - "smtpLiquidIntroduction": "Следующие два поля являются шаблонизируемыми с помощью языка шаблонов Liquid. Инструкции по их использованию приведены в разделе {0}. Вот доступные переменные:", - "leave blank for default subject": "оставьте пустым для темы по умолчанию", - "emailCustomBody": "Пользовательский объект", - "emailTemplateHostnameOrURL": "Имя хоста или URL", - "emailTemplateStatus": "Статус", - "successAuthChangePassword": "Пароль успешно обновлён.", - "successBackupRestored": "Резервная копия успешно восстановлена.", - "successDisabled": "Успешно отключено.", - "successEnabled": "Успешно включено.", - "tagNotFound": "Тег не найден.", - "foundChromiumVersion": "Обнаружен Chromium/Chrome. Версии: {0}", - "templateMsg": "сообщение уведомления", - "templateHeartbeatJSON": "объект, описывающий сигнал", - "templateMonitorJSON": "объект, описывающий монитор", - "templateLimitedToUpDownCertNotifications": "доступно только для уведомлений UP/DOWN и об окончании срока действия сертификата", - "Reset Token": "Сброс токена", - "emailTemplateMonitorJSON": "объект, описывающий монитор", - "emailTemplateHeartbeatJSON": "объект, описывающий сигнал", - "emailTemplateMsg": "сообщение уведомления", - "successDeleted": "Успешно удалено.", - "successEdited": "Успешно изменено.", - "Browser Screenshot": "Скриншот браузера", - "noDockerHostMsg": "Не доступно. Сначала настройте хост Docker.", - "DockerHostRequired": "Пожалуйста, установите хост Docker для этого монитора.", - "successKeywordExplanation": "Ключевое слово MQTT, которое будет считаться успешным", - "successKeyword": "Ключевое слово успеха", - "statusPageSpecialSlugDesc": "Специальный ярлык {0}: эта страница будет отображаться, если ярлык не указан", - "ntfyPriorityHelptextAllExceptDown": "Все события отправляются с этим приоритетом, кроме {0}-событий, которые имеют приоритет {1}", - "self-hosted container": "контейнер, который хоститься самостоятельно", - "remoteBrowserToggle": "По умолчанию Chromium работает внутри контейнера Uptime Kuma. Вы можете использовать удаленный браузер, переключив этот переключатель.", - "Remote Browsers": "Удаленные браузеры", - "Remote Browser": "Удаленный браузер", - "Add a Remote Browser": "Добавить удаленный браузер", - "Remote Browser not found!": "Удаленный браузер не найден!", - "remoteBrowsersDescription": "Удаленные браузеры — альтернатива локальному запуску Chromium. Установите такой сервис, как browserless.io, или подключитесь к своему собственному", - "settingUpDatabaseMSG": "Настраиваем базу данных. Это может занять некоторое время, пожалуйста подождите.", - "setup a new monitor group": "настроить новую группу мониторов", - "openModalTo": "открыть модальное окно {0}", - "Add a domain": "Добавить домен", - "Remove domain": "Удалить домен '{0}'", - "Search monitored sites": "Поиск отслеживаемых сайтов", - "ntfyPriorityHelptextAllEvents": "Все события отправляются с максимальным приоритетом", - "useRemoteBrowser": "Использовать удаленный браузер", - "deleteRemoteBrowserMessage": "Вы уверены, что хотите удалить этот удаленный браузер для всех мониторов?", - "Remove the expiry notification": "Удалить дату истечения срока действия уведомления", - "Add a new expiry notification day": "Добавить новый день уведомления об истечении срока действия", - "What is a Remote Browser?": "Что такое удаленный браузер?", - "Mention group": "Упомянуть {group}", - "Your User ID": "Ваш идентификатор пользователя", - "Host URL": "URL Хоста", - "locally configured mail transfer agent": "Настроенный локально агент передачи почты", - "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Введите {Hostname} сервера, к которому вы хотите подключиться, либо {localhost}, если вы собираетесь использовать {local_mta}", - "wayToGetHeiiOnCallDetails": "Как получить ID триггера и {API Keys}, рассказывается в {documentation}", - "gtxMessagingApiKeyHint": "Вы можете найти свой {API key} на странице: Мои учетные записи маршрутизации > Показать информацию об учетной записи > Учетные данные API > REST API (v2.x)", - "From Phone Number / Transmission Path Originating Address (TPOA)": "Номер телефона / Адрес источника пути передачи (АИПП)", - "Alphanumeric (recommended)": "Буквенно-цифровой (рекомендуется)", - "Originator type": "Тип источника", - "cellsyntOriginatortypeAlphanumeric": "Буквенно-цифровая строка (не более 11 буквенно-цифровых символов). Получатели не могут ответить на это сообщение.", - "cellsyntOriginatortypeNumeric": "Числовое значение (не более 15 цифр) с номером телефона в международном формате без 00 в начале (например, номер Великобритании 07920 110 000 должен быть задан, как 447920110000). Получатели могут ответить на сообщение.", - "cellsyntDestination": "Номер телефона получателя в международном формате с 00 в начале, за которым следует код страны, например, 00447920110000 для номера Великобритании 07920 110 000 (не более 17 цифр в сумме). Не более 25000 получателей, разделенных запятыми, на один HTTP-запрос.", - "callMeBotGet": "Здесь вы можете сгенерировать {endpoint} для {0}, {1} и {2}. Имейте в виду, что вы можете получить ограничение по скорости. Ограничения по скорости выглядят следующим образом: {3}", - "gtxMessagingFromHint": "На мобильных телефонах получатели видят АИПП как отправителя сообщения. Допускается использование до 11 буквенно-цифровых символов, шорткода, местного длинного кода или международных номеров ({e164}, {e212} или {e214}).", - "wayToWriteWhapiRecipient": "Номер телефона с международным префиксом, но без знака плюс в начале ({0}), идентификатора контакта ({1}) или идентификатора группы ({2})", - "cellsyntSplitLongMessages": "Разделять длинные сообщения на 6 частей. 153 x 6 = 918 символов.", - "Mentioning": "Упоминание", - "Don't mention people": "Не упоминайте людей", - "gtxMessagingToHint": "Международный формат, с «+» ({e164}, {e212} или {e214})", - "whapiRecipient": "Номер телефона / ID контакта / ID группы", - "API URL": "API URL-адрес", - "documentationOf": "{0} Документация", - "senderSevenIO": "Отправляет номер или имя", - "receiverSevenIO": "Номер получения", - "wayToGetSevenIOApiKey": "Зайдите на панель управления по адресу app.seven.io > разработчик > {api key} > зеленая кнопка добавить", - "receiverInfoSevenIO": "Если номер получателя не находится в Германии, то перед номером необходимо добавить код страны (например, для США код страны 1, тогда используйте 117612121212, вместо 017612121212)", - "apiKeySevenIO": "SevenIO {API Key}", - "Telephone number": "Номер телефона", - "Channel access token (Long-lived)": "Токен доступа к каналу (долговечный)", - "wayToGetWhapiUrlAndToken": "Вы можете получить {API URL} и токен, зайдя в нужный вам канал с {0}", - "To Phone Number": "На номер телефона", - "Originator": "Источник", - "cellsyntOriginator": "Виден на мобильном телефоне получателя как отправитель сообщения. Допустимые значения и функция зависят от параметра {originatortype}.", - "Destination": "Назначение", - "Allow Long SMS": "Разрешить длинные SMS", - "max 15 digits": "макс. 15 цифр", - "max 11 alphanumeric characters": "максимум 11 буквенно-цифровых символов", - "Command": "Команда", - "Create new forum post": "Создать новый пост", - "forumPostName": "Название поста", - "postToExistingThread": "Создать пост в этой ветке", - "Select message type": "Выберите тип сообщения", - "Send to channel": "Отправить в канал", - "Refresh Interval": "Интервал обновления", - "ignoreTLSErrorGeneral": "Игнорировать ошибки TLS/SSL для подключения" -} +{ + "languageName": "Русский", + "checkEverySecond": "Проверка каждые {0} секунд", + "retriesDescription": "Максимальное количество попыток перед пометкой сервиса, как недоступного, и отправкой уведомления", + "ignoreTLSError": "Игнорировать ошибки TLS/SSL для HTTPS сайтов", + "upsideDownModeDescription": "Инверсия статуса. Если сервис доступен, он будет отмечен как недоступный.", + "maxRedirectDescription": "Максимальное количество перенаправлений. Поставьте 0, чтобы отключить перенаправления.", + "acceptedStatusCodesDescription": "Выберите коды статусов для определения доступности сервиса.", + "passwordNotMatchMsg": "Введённые пароли не совпадают.", + "notificationDescription": "Привяжите уведомления к мониторам.", + "keywordDescription": "Поиск слова в чистом HTML или в JSON-ответе (чувствительно к регистру).", + "pauseDashboardHome": "Пауза", + "deleteMonitorMsg": "Вы действительно хотите удалить данный монитор?", + "deleteNotificationMsg": "Вы действительно хотите удалить это уведомление для всех мониторов?", + "resolverserverDescription": "Cloudflare является сервером по умолчанию. Вы всегда можете сменить данный сервер.", + "rrtypeDescription": "Выберите тип ресурсной записи, который вы хотите отслеживать", + "pauseMonitorMsg": "Вы действительно хотите приостановить?", + "Settings": "Настройки", + "Dashboard": "Панель управления", + "New Update": "Новое обновление", + "Language": "Язык", + "Appearance": "Внешний вид", + "Theme": "Тема", + "General": "Общее", + "Version": "Версия", + "Check Update On GitHub": "Проверить наличие обновления в GitHub", + "List": "Список", + "Add": "Добавить", + "Add New Monitor": "Добавить Новый Сенсор", + "Quick Stats": "Статистика", + "Up": "Доступен", + "Down": "Не доступен", + "Pending": "В ожидании", + "Unknown": "Неизвестно", + "Pause": "Пауза", + "Name": "Имя", + "Status": "Статус", + "DateTime": "Дата и время", + "Message": "Сообщение", + "No important events": "Нет важных событий", + "Resume": "Возобновить", + "Edit": "Изменить", + "Delete": "Удалить", + "Current": "Текущий", + "Uptime": "Uptime", + "Cert Exp.": "Сертификат ист.", + "day": "день | дней", + "-day": "-дней", + "hour": "час", + "-hour": "-часа", + "Response": "Ответ", + "Ping": "Пинг", + "Monitor Type": "Тип Монитора", + "Keyword": "Ключевое слово", + "Friendly Name": "Имя", + "URL": "URL-ссылка", + "Hostname": "Имя хоста", + "Port": "Порт", + "Heartbeat Interval": "Частота опроса", + "Retries": "Попыток", + "Advanced": "Дополнительно", + "Upside Down Mode": "Режим инверсии статуса", + "Max. Redirects": "Макс. количество перенаправлений", + "Accepted Status Codes": "Допустимые коды статуса", + "Save": "Сохранить", + "Notifications": "Уведомления", + "Not available, please setup.": "Уведомления не доступны, требуется настройка.", + "Setup Notification": "Настройка уведомления", + "Light": "Светлая", + "Dark": "Тёмная", + "Auto": "Как в системе", + "Theme - Heartbeat Bar": "Полоса частоты опроса", + "Normal": "Обычный", + "Bottom": "Внизу", + "None": "Отсутствует", + "Timezone": "Часовой пояс TZ", + "Search Engine Visibility": "Индексация поисковыми системами", + "Allow indexing": "Разрешить индексирование", + "Discourage search engines from indexing site": "Запретить индексирование", + "Change Password": "Изменить пароль", + "Current Password": "Текущий пароль", + "New Password": "Новый пароль", + "Repeat New Password": "Повтор нового пароля", + "Update Password": "Обновить пароль", + "Disable Auth": "Отключить авторизацию", + "Enable Auth": "Включить авторизацию", + "disableauth.message1": "Вы уверены, что хотите {disableAuth}?", + "disable authentication": "отключить авторизацию", + "disableauth.message2": "Это подходит для {intendThirdPartyAuth} перед открытием Uptime Kuma, такие как Cloudflare Access, Authelia или другие.", + "where you intend to implement third-party authentication": "тех, у кого настроена сторонняя система авторизации", + "Please use this option carefully!": "Пожалуйста, используйте с осторожностью!", + "Logout": "Выйти", + "Leave": "Оставить", + "I understand, please disable": "Я понимаю, всё равно отключить", + "Confirm": "Подтвердить", + "Yes": "Да", + "No": "Нет", + "Username": "Логин", + "Password": "Пароль", + "Remember me": "Запомнить меня", + "Login": "Вход в систему", + "No Monitors, please": "Нет Мониторов, пожалуйста", + "No Monitors": "Мониторы отсутствуют", + "add one": "добавить", + "Notification Type": "Тип уведомления", + "Email": "Электронная почта", + "Test": "Тест", + "Certificate Info": "Информация о сертификате", + "Resolver Server": "DNS сервер", + "Resource Record Type": "Тип ресурсной записи", + "Last Result": "Последний результат", + "Create your admin account": "Создайте аккаунт администратора", + "Repeat Password": "Повторите пароль", + "respTime": "Время ответа (мс)", + "notAvailableShort": "N/A", + "Create": "Создать", + "clearEventsMsg": "Вы действительно хотите удалить всю статистику событий данного монитора?", + "clearHeartbeatsMsg": "Вы действительно хотите удалить всю статистику опросов данного монитора?", + "confirmClearStatisticsMsg": "Вы действительно хотите удалить ВСЮ статистику?", + "Clear Data": "Стереть данные", + "Events": "События", + "Heartbeats": "Опросы", + "Auto Get": "Авто-получение", + "enableDefaultNotificationDescription": "Для каждого нового монитора это уведомление будет включено по умолчанию. Вы всё ещё можете отключить уведомления в каждом мониторе отдельно.", + "Default enabled": "По умолчанию включён", + "Also apply to existing monitors": "Применить к существующим мониторам", + "Export": "Экспорт", + "Import": "Импорт", + "backupDescription": "Вы можете сохранить резервную копию всех мониторов и уведомлений в виде JSON-файла.", + "backupDescription2": "Важно: история и события сохранены не будут.", + "backupDescription3": "Важные данные, такие как токены уведомлений, добавляются при экспорте, поэтому храните файлы в безопасном месте.", + "alertNoFile": "Выберите файл для импорта.", + "alertWrongFileType": "Выберите JSON-файл.", + "twoFAVerifyLabel": "Пожалуйста, введите свой токен, чтобы проверить работу 2FA:", + "tokenValidSettingsMsg": "Токен действителен! Теперь вы можете сохранить настройки 2FA.", + "confirmEnableTwoFAMsg": "Вы действительно хотите включить 2FA?", + "confirmDisableTwoFAMsg": "Вы действительно хотите выключить 2FA?", + "Apply on all existing monitors": "Применить ко всем существующим мониторам", + "Verify Token": "Проверить токен", + "Setup 2FA": "Настройка 2FA", + "Enable 2FA": "Включить 2FA", + "Disable 2FA": "Выключить 2FA", + "2FA Settings": "Настройки 2FA", + "Two Factor Authentication": "Двухфакторная аутентификация", + "Active": "Активно", + "Inactive": "Неактивно", + "Token": "Токен", + "Show URI": "Показать URI", + "Clear all statistics": "Очистить статистику", + "retryCheckEverySecond": "Повторять каждые {0} секунд", + "importHandleDescription": "Выберите \"Пропустить существующие\", если вы хотите пропустить каждый монитор или уведомление с таким же именем. \"Перезаписать\" удалит каждый существующий монитор или уведомление и добавит заново. Вариант \"Не проверять\" принудительно восстанавливает все мониторы и уведомления, даже если они уже существуют.", + "confirmImportMsg": "Вы действительно хотите восстановить резервную копию? Убедитесь, что вы выбрали подходящий вариант импорта.", + "Heartbeat Retry Interval": "Интервал повтора запроса", + "Import Backup": "Импорт резервной копии", + "Export Backup": "Скачать резервную копию", + "Skip existing": "Пропустить существующие", + "Overwrite": "Перезаписать", + "Options": "Опции", + "Keep both": "Оставить оба", + "Tags": "Теги", + "Add New below or Select...": "Добавить новый или выбрать…", + "Tag with this name already exist.": "Тег с таким именем уже существует.", + "Tag with this value already exist.": "Тег с таким значением уже существует.", + "color": "Цвет", + "value (optional)": "значение (необязательно)", + "Gray": "Серый", + "Red": "Красный", + "Orange": "Оранжевый", + "Green": "Зелёный", + "Blue": "Синий", + "Indigo": "Индиго", + "Purple": "Пурпурный", + "Pink": "Розовый", + "Search...": "Поиск…", + "Avg. Ping": "Средний пинг", + "Avg. Response": "Средний отклик", + "Entry Page": "Главная", + "statusPageNothing": "Тут ничего нет, добавьте группу или монитор.", + "No Services": "Нет Сервисов", + "All Systems Operational": "Все системы работают", + "Partially Degraded Service": "Частичная работа сервисов", + "Degraded Service": "Отказ всех сервисов", + "Add Group": "Добавить Группу", + "Add a monitor": "Добавить монитор", + "Edit Status Page": "Редактировать Страницу Статусов", + "Go to Dashboard": "В Панель Управления", + "Status Page": "Страница статуса", + "Status Pages": "Страницы статуса", + "Discard": "Отмена", + "Create Incident": "Создать инцидент", + "Switch to Dark Theme": "Тёмная тема", + "Switch to Light Theme": "Светлая тема", + "telegram": "Telegram", + "webhook": "Вебхук", + "smtp": "Email (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Поддержка 50+ сервисов уведомлений)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "Primary Base URL": "Основной URL", + "Push URL": "URL-ссылка push уведомлений", + "needPushEvery": "К этому URL необходимо обращаться каждые {0} секунд.", + "pushOptionalParams": "Опциональные параметры: {0}", + "defaultNotificationName": "Уведомления {notification} ({number})", + "here": "здесь", + "Required": "Обязательно", + "Bot Token": "Токен бота", + "wayToGetTelegramToken": "Вы можете взять токен здесь - {0}.", + "Chat ID": "ID чата", + "supportTelegramChatID": "Поддерживаются ID чатов, групп и каналов", + "wayToGetTelegramChatID": "Вы можете взять ID вашего чата, отправив сообщение боту и перейдя по этому URL для просмотра chat_id:", + "YOUR BOT TOKEN HERE": "ВАШ ТОКЕН БОТА ЗДЕСЬ", + "chatIDNotFound": "ID чата не найден; пожалуйста отправьте сначала сообщение боту", + "Post URL": "Post URL", + "Content Type": "Тип контента", + "webhookJsonDesc": "{0} подходит для любых современных HTTP-серверов, например Express.js", + "webhookFormDataDesc": "{multipart} подходит для PHP. JSON-вывод необходимо будет обработать с помощью {decodeFunction}", + "secureOptionNone": "Нет / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Игнорировать ошибки TLS", + "From Email": "От кого", + "emailCustomSubject": "Своя тема", + "To Email": "Кому", + "smtpCC": "Копия", + "smtpBCC": "Скрытая копия", + "Discord Webhook URL": "Discord вебхук URL", + "wayToGetDiscordURL": "Вы можете создать его в настройках канала \"Настройки -> Интеграции -> Создать Вебхук\"", + "Bot Display Name": "Отображаемое имя бота", + "Prefix Custom Message": "Свой префикс сообщения", + "Hello @everyone is...": "Привет {'@'}everyone это…", + "Webhook URL": "URL вебхука", + "wayToGetTeamsURL": "Как создать URL Вебхука вы можете узнать здесь - {0}.", + "Number": "Номер", + "Recipients": "Получатели", + "needSignalAPI": "Вам необходим клиент Signal с поддержкой REST API.", + "wayToCheckSignalURL": "Пройдите по этому URL, чтобы узнать как настроить такой клиент:", + "signalImportant": "ВАЖНО: Нельзя смешивать в Получателях группы и номера!", + "Application Token": "Токен приложения", + "Server URL": "URL сервера", + "Priority": "Приоритет", + "Icon Emoji": "Иконка Emoji", + "Channel Name": "Имя канала", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Больше информации о вебхуках: {0}", + "aboutChannelName": "Введите имя канала в поле {0} Имя канала, если вы хотите обойти канал вебхука. Например: #other-channel", + "aboutKumaURL": "Если поле Uptime Kuma URL в настройках останется пустым, по умолчанию будет использоваться ссылка на проект на GitHub.", + "emojiCheatSheet": "Шпаргалка по Emoji: {0}", + "User Key": "Ключ пользователя", + "Device": "Устройство", + "Message Title": "Заголовок сообщения", + "Notification Sound": "Звук уведомления", + "More info on:": "Больше информации: {0}", + "pushoverDesc1": "Экстренный приоритет (2) имеет таймаут повтора по умолчанию 30 секунд и истекает через 1 час.", + "pushoverDesc2": "Если вы хотите отправлять уведомления различным устройствам, необходимо заполнить поле Устройство.", + "SMS Type": "Тип SMS", + "octopushTypePremium": "Премиум (Быстрый - рекомендуется для алертов)", + "octopushTypeLowCost": "Дешёвый (Медленный - иногда блокируется операторами)", + "checkPrice": "Тарифы {0}:", + "octopushLegacyHint": "Вы используете старую версию Octopush (2011-2020) или новую?", + "Check octopush prices": "Тарифы Octopush {0}.", + "octopushPhoneNumber": "Номер телефона (межд. формат, например: +79831234567) ", + "octopushSMSSender": "Имя отправителя SMS: 3-11 символов алвафита, цифр и пробелов (a-zA-Z0-9)", + "LunaSea Device ID": "ID устройства LunaSea", + "Apprise URL": "Ссылка Уведомления", + "Example:": "Пример: {0}", + "Read more:": "Подробнее: {0}", + "Status:": "Статус: {0}", + "Read more": "Подробнее", + "appriseInstalled": "Информирование установлено.", + "appriseNotInstalled": "Информирование не установлено. {0}", + "Access Token": "Токен доступа", + "Channel access token": "Токен доступа канала", + "Line Developers Console": "Консоль разработчиков Line", + "lineDevConsoleTo": "Консоль разработчиков Line - {0}", + "Basic Settings": "Базовые настройки", + "User ID": "ID пользователя", + "Messaging API": "API сообщений", + "wayToGetLineChannelToken": "Сначала зайдите в {0}, создайте провайдера и канал (API сообщений), затем вы сможете получить токен доступа канала и ID пользователя из вышеупомянутых пунктов меню.", + "Icon URL": "URL иконки", + "aboutIconURL": "Вы можете вставить ссылку на иконку в поле \"URL иконки\" чтобы изменить картинку профиля по умолчанию. Не используется, если задана иконка Emoji.", + "aboutMattermostChannelName": "Вы можете переопределить канал по умолчанию, в который вебхук пишет, введя имя канала в поле \"Имя канала\". Это необходимо включить в настройках вебхука Mattermost. Например: #other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - дёшево и медленно, часто перегружен. Только для получателей из Польши.", + "promosmsTypeFlash": "SMS FLASH - сообщения автоматически появятся на устройстве получателя. Только для получателей из Польши.", + "promosmsTypeFull": "SMS FULL - премиум-уровень SMS, можно использовать своё имя отправителя (предварительно зарегистрировав его). Надёжно для алертов.", + "promosmsTypeSpeed": "SMS SPEED - наивысший приоритет в системе. Очень быстро и надёжно, но очень дорого (в два раза дороже, чем SMS FULL).", + "promosmsPhoneNumber": "Номер телефона (для получателей из Польши можно пропустить код региона)", + "promosmsSMSSender": "Имя отправителя SMS: Зарегистрированное или одно из имён по умолчанию: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "URL сервера (вместе с http(s):// и по желанию порт)", + "Internal Room Id": "Внутренний ID комнаты", + "matrixDesc1": "Внутренний ID комнаты можно найти в Подробностях в параметрах канала вашего Matrix клиента. Он должен выглядеть примерно как !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Рекомендуется создать нового пользователя и не использовать токен доступа личного пользователя Matrix, т.к. это влечёт за собой полный доступ к аккаунту и к комнатам, в которых вы состоите. Вместо этого создайте нового пользователя и пригласите его только в ту комнату, в которой вы хотите получать уведомления. Токен доступа можно получить, выполнив команду {0}", + "Method": "Метод", + "Body": "Объект", + "Headers": "Заголовки", + "PushUrl": "URL пуша", + "HeadersInvalidFormat": "Заголовки запроса не являются валидным JSON: ", + "BodyInvalidFormat": "Тело запроса не является валидным JSON: ", + "Monitor History": "История мониторинга", + "clearDataOlderThan": "Сохранять статистику за {0} дней.", + "PasswordsDoNotMatch": "Пароли не совпадают.", + "records": "записей", + "One record": "Одна запись", + "steamApiKeyDescription": "Для мониторинга игрового сервера Steam вам необходим Web-API ключ Steam. Зарегистрировать его можно здесь: ", + "Certificate Chain": "Цепочка сертификатов", + "Valid": "Действительный", + "Hide Tags": "Скрыть тэги", + "Title": "Название инцидента", + "Content": "Содержание инцидента", + "Post": "Опубликовать", + "Cancel": "Отмена", + "Created": "Создано", + "Unpin": "Открепить", + "Show Tags": "Показать тэги", + "recent": "Последнее", + "3h": "3 часа", + "6h": "6 часов", + "24h": "24 часа", + "1w": "1 неделя", + "No monitors available.": "Нет доступных мониторов.", + "Add one": "Добавить новый", + "Backup": "Резервная копия", + "Security": "Безопасность", + "Shrink Database": "Сжать Базу Данных", + "Current User": "Текущий пользователь", + "About": "О программе", + "Description": "Описание", + "Powered by": "Работает на", + "deleteStatusPageMsg": "Вы действительно хотите удалить эту страницу статуса?", + "Style": "Стиль", + "info": "ИНФО", + "warning": "ВНИМАНИЕ", + "danger": "ОШИБКА", + "primary": "ОСНОВНОЙ", + "light": "СВЕТЛЫЙ", + "dark": "ТЕМНЫЙ", + "New Status Page": "Новая страница статуса", + "Show update if available": "Показывать доступные обновления", + "Also check beta release": "Проверять обновления для бета версий", + "Add New Status Page": "Добавить страницу статуса", + "Next": "Далее", + "Accept characters: a-z 0-9 -": "Разрешены символы: a-z 0-9 -", + "Start or end with a-z 0-9 only": "Начало и окончание имени только на символы: a-z 0-9", + "No consecutive dashes --": "Запрещено использовать тире --", + "HTTP Options": "HTTP Опции", + "Authentication": "Аутентификация", + "HTTP Basic Auth": "HTTP Авторизация", + "PushByTechulus": "Push by Techulus", + "clicksendsms": "ClickSend SMS", + "GoogleChat": "Google Chat (только Google Workspace)", + "apiCredentials": "API реквизиты", + "Done": "Готово", + "Info": "Инфо", + "Steam API Key": "Steam API-Ключ", + "Pick a RR-Type...": "Выберите RR-Тип…", + "Pick Accepted Status Codes...": "Выберите принятые коды статуса…", + "Default": "По умолчанию", + "Please input title and content": "Пожалуйста, введите название и содержание", + "Last Updated": "Последнее обновление", + "Untitled Group": "Группа без названия", + "Services": "Сервисы", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Пользователь (включая префикс webapi_)", + "serwersmsAPIPassword": "API Пароль", + "serwersmsPhoneNumber": "Номер телефона", + "serwersmsSenderName": "SMS Имя Отправителя (регистрированный через пользовательский портал)", + "stackfield": "Stackfield", + "smtpDkimSettings": "DKIM Настройки", + "smtpDkimDesc": "Пожалуйста ознакомьтесь с {0} Nodemailer DKIM для использования.", + "documentation": "документацией", + "smtpDkimDomain": "Имя домена", + "smtpDkimKeySelector": "Ключ", + "smtpDkimPrivateKey": "Приватный ключ", + "smtpDkimHashAlgo": "Алгоритм хэша (необязательно)", + "smtpDkimheaderFieldNames": "Заголовок ключей для подписи (необязательно)", + "smtpDkimskipFields": "Заголовок ключей не для подписи (опционально)", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "Конечная точка API", + "alertaEnvironment": "Среда", + "alertaApiKey": "Ключ API", + "alertaAlertState": "Состояние алерта", + "alertaRecoverState": "Состояние восстановления", + "Proxies": "Прокси", + "Setup Proxy": "Настройка Прокси", + "Proxy Protocol": "Протокол Прокси", + "Proxy Server": "Прокси", + "Proxy server has authentication": "Прокси имеет аутентификацию", + "Reverse Proxy": "Обратный прокси", + "No Proxy": "Без прокси", + "default": "По умолчанию", + "enabled": "Включено", + "setAsDefault": "Установить по умолчанию", + "deleteProxyMsg": "Вы действительно хотите удалить этот прокси для всех мониторов?", + "proxyDescription": "Прокси должны быть привязаны к монитору, чтобы работать.", + "enableProxyDescription": "Этот прокси не будет влиять на запросы монитора, пока не будет активирован. Вы можете контролировать временное отключение прокси для всех мониторов через статус активации.", + "setAsDefaultProxyDescription": "Этот прокси будет по умолчанию включен для новых мониторов. Вы всё ещё можете отдельно отключать прокси в каждом мониторе.", + "Invalid": "Недействительный", + "AccessKeyId": "ID ключа доступа", + "SecretAccessKey": "Секретный ключ доступа", + "PhoneNumbers": "Номера телефонов", + "TemplateCode": "ШаблонКод", + "SignName": "SignName", + "Sms template must contain parameters: ": "Шаблон СМС должен содержать параметры: ", + "Bark Endpoint": "Конечная точка Bark", + "Bark Group": "Bark Group", + "Bark Sound": "Bark Sound", + "WebHookUrl": "WebHookUrl", + "SecretKey": "Секретный Ключ", + "For safety, must use secret key": "В целях безопасности необходимо использовать секретный ключ", + "Device Token": "Токен устройства", + "Platform": "Платформа", + "Huawei": "Huawei", + "High": "High", + "Retry": "Повторить", + "Topic": "Тема", + "WeCom Bot Key": "WeCom Bot Key", + "User": "Пользователь", + "Installed": "Установлено", + "Not installed": "Не установлено", + "Running": "Работает", + "Not running": "Не работает", + "Remove Token": "Удалить токен", + "Start": "Запустить", + "Stop": "Остановить", + "Uptime Kuma": "Uptime Kuma", + "Slug": "Slug", + "Accept characters:": "Принимаемые символы:", + "startOrEndWithOnly": "Начинается или заканчивается только на {0}", + "No consecutive dashes": "Без последовательных тире", + "The slug is already taken. Please choose another slug.": "Этот slug уже занят. Пожалуйста, выберите другой.", + "Page Not Found": "Страница не найдена", + "wayToGetCloudflaredURL": "(Скачать cloudflared с {0})", + "cloudflareWebsite": "Веб-сайт Cloudflare", + "Message:": "Сообщение:", + "Don't know how to get the token? Please read the guide:": "Не знаете, как получить токен? Пожалуйста, прочтите руководство:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Текущее соединение может быть потеряно, если вы в данный момент подключаетесь через туннель Cloudflare. Вы уверены, что хотите это остановить? Введите свой текущий пароль, чтобы подтвердить это.", + "HTTP Headers": "Заголовки HTTP", + "Trust Proxy": "Доверенный прокси", + "Other Software": "Другое программное обеспечение", + "For example: nginx, Apache and Traefik.": "К примеру: nginx, Apache и Traefik.", + "Please read": "Пожалуйста, прочитайте", + "Subject:": "Тема:", + "Valid To:": "Действителен до:", + "Days Remaining:": "Дней осталось:", + "Issuer:": "Издатель:", + "Fingerprint:": "Отпечаток:", + "No status pages": "Нет статусных страниц", + "Domain Name Expiry Notification": "Уведомление об истечении срока действия доменного имени", + "Proxy": "Прокси", + "Date Created": "Дата создания", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "HTTP-адрес OneBot", + "onebotMessageType": "Тип сообщения OneBot", + "onebotGroupMessage": "Группа", + "onebotPrivateMessage": "Private", + "onebotUserOrGroupId": "ID группы/пользователя", + "onebotSafetyTips": "В целях безопасности необходимо установить токен доступа", + "PushDeer Key": "ключ PushDeer", + "Footer Text": "Текст нижнего колонтитула", + "Show Powered By": "Показывать на чем создано", + "Domain Names": "Доменные имена", + "signedInDisp": "Вы вошли как {0}", + "signedInDispDisabled": "Аутентификация отключена.", + "RadiusSecret": "Секрет Radius", + "RadiusSecretDescription": "Общий секрет между клиентом и сервером", + "RadiusCalledStationId": "Идентификатор вызываемой станции", + "RadiusCalledStationIdDescription": "Идентификатор вызываемого устройства", + "RadiusCallingStationId": "Идентификатор вызывающей станции", + "RadiusCallingStationIdDescription": "Идентификатор вызывающего устройства", + "Certificate Expiry Notification": "Уведомление об истечении срока действия сертификата", + "API Username": "Имя пользователя API", + "API Key": "API ключ", + "Recipient Number": "Номер получателя", + "From Name/Number": "Имя/номер отправителя", + "Leave blank to use a shared sender number.": "Оставьте пустым, чтобы использовать общий номер отправителя.", + "Octopush API Version": "Версия API Octopush", + "Legacy Octopush-DM": "устаревший Octopush-DM", + "endpoint": "конечная точка", + "octopushAPIKey": "\"API key\" из учетных данных HTTP API в панели управления", + "octopushLogin": "\"Login\" из учетных данных HTTP API в панели управления", + "promosmsLogin": "Логин API", + "promosmsPassword": "Пароль API", + "pushoversounds pushover": "Pushover (по умолчанию)", + "pushoversounds bike": "Велосипед", + "pushoversounds bugle": "Горн", + "pushoversounds cashregister": "Кассовый аппарат", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Космический", + "pushoversounds falling": "Падающий", + "pushoversounds gamelan": "Гамелан", + "pushoversounds incoming": "Входящий", + "pushoversounds intermission": "Антракт", + "pushoversounds magic": "Магия", + "pushoversounds mechanical": "Механический", + "pushoversounds pianobar": "Пиано-бар", + "pushoversounds siren": "Сирена", + "pushoversounds spacealarm": "Космическая сигнализация", + "pushoversounds tugboat": "Буксирное судно", + "pushoversounds alien": "Инопланетная тревога (долгое)", + "pushoversounds climb": "Подъем (долгое)", + "pushoversounds persistent": "Стойкий (долгое)", + "pushoversounds echo": "Pushover Эхо (долгое)", + "pushoversounds updown": "Вверх вниз (долгое)", + "pushoversounds vibrate": "Только вибрация", + "pushoversounds none": "Нет (тихо)", + "pushyAPIKey": "Секретный ключ API", + "pushyToken": "Токен устройства", + "Using a Reverse Proxy?": "Используете обратный прокси?", + "Check how to config it for WebSocket": "Проверьте, как настроить его для WebSocket", + "Steam Game Server": "Игровой сервер Steam", + "Most likely causes:": "Наиболее вероятные причины:", + "The resource is no longer available.": "Ресурс больше не доступен.", + "There might be a typing error in the address.": "В адресе может быть опечатка.", + "What you can try:": "Что вы можете попробовать:", + "Retype the address.": "Повторите адрес.", + "Go back to the previous page.": "Вернуться на предыдущую страницу.", + "Coming Soon": "Скоро", + "wayToGetClickSendSMSToken": "Вы можете получить имя пользователя API и ключ API из {0} .", + "Connection String": "Строка подключения", + "Query": "Запрос", + "settingsCertificateExpiry": "Истекание TLS сертификата", + "certificationExpiryDescription": "HTTPS Мониторы инициируют уведомление, когда срок действия сертификата TLS истечет:", + "Setup Docker Host": "Настройка хоста Docker", + "Connection Type": "Тип соединения", + "Docker Daemon": "Демон Docker", + "deleteDockerHostMsg": "Вы уверены, что хотите удалить этот узел docker для всех мониторов?", + "socket": "Сокет", + "tcp": "TCP / HTTP", + "Docker Container": "Docker контейнер", + "Container Name / ID": "Название контейнера / ID", + "Docker Host": "Хост Docker", + "Docker Hosts": "Хосты Docker", + "ntfy Topic": "Тема ntfy", + "Domain": "Домен", + "Workstation": "Рабочая станция", + "disableCloudflaredNoAuthMsg": "Вы находитесь в режиме без авторизации, пароль не требуется.", + "trustProxyDescription": "Доверять заголовкам 'X-Forwarded-*'. Если вы хотите получить правильный IP-адрес клиента, а ваш Uptime Kuma находится под Nginx или Apache, вам следует включить этот параметр.", + "wayToGetLineNotifyToken": "Вы можете получить токен доступа в {0}", + "Examples": "Примеры", + "Home Assistant URL": "URL-адрес Home Assistant", + "Long-Lived Access Token": "Токен доступа с длительным сроком службы", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Токен доступа с длительным сроком действия можно создать, нажав на имя вашего профиля (внизу слева) и прокрутив его вниз, затем нажмите Создать токен. ", + "Notification Service": "Служба уведомлений", + "default: notify all devices": "по умолчанию: уведомлять все устройства", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Список служб уведомлений можно найти в Home Assistant в разделе \"Инструменты разработчика > Службы\", выполнив поиск по слову \"уведомление\", чтобы найти название вашего устройства/телефона.", + "Automations can optionally be triggered in Home Assistant:": "При желании автоматизацию можно активировать в Home Assistant.:", + "Trigger type:": "Тип триггера:", + "Event type:": "Тип события:", + "Event data:": "Данные события:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Затем выберите действие, например, переключите сцену на красный индикатор RGB..", + "Frontend Version": "Версия интерфейса", + "Frontend Version do not match backend version!": "Версия интерфейса не соответствует версии серверной части!", + "Base URL": "Базовый URL", + "goAlertInfo": "GoAlert — это приложение с открытым исходным кодом для составления расписания вызовов, автоматической эскалации и уведомлений (например, SMS или голосовых звонков). Автоматически привлекайте нужного человека, нужным способом и в нужное время! {0}", + "goAlertIntegrationKeyInfo": "Получить общий ключ интеграции API для сервиса в этом формате \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" обычно значение параметра токена скопированного URL.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Устарело: эта функция резервного копирования более не поддерживается. Поскольку добавлено множество функций, она не может создать или восстановить полную резервную копию.", + "backupRecommend": "Сделайте резервную копию тома или папки с данными (./data/) напрямую.", + "Optional": "Необязательно", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "Документация к API SMSManager ", + "Gateway Type": "Тип шлюза", + "SMSManager": "SMSManager", + "You can divide numbers with": "Вы можете делить числа с", + "or": "или", + "Maintenance": "Техобслуживание", + "Schedule maintenance": "Запланировать техобслуживание", + "affectedMonitorsDescription": "Выберите мониторы, которые будут затронуты во время техобслуживания", + "affectedStatusPages": "Показывать уведомление о техобслуживании на выбранных страницах статуса", + "atLeastOneMonitor": "Выберите больше одного затрагиваемого монитора", + "dnsPortDescription": "По умолчанию порт DNS сервера - 53. Мы можете изменить его в любое время.", + "Monitor": "Монитор | Мониторы", + "webhookAdditionalHeadersTitle": "Дополнительные Заголовки", + "recurringIntervalMessage": "Запускать 1 раз каждый день | Запускать 1 раз каждые {0} дней", + "error": "ошибка", + "statusMaintenance": "Техобслуживание", + "Affected Monitors": "Затронутые мониторы", + "Start of maintenance": "Начало техобслуживания", + "All Status Pages": "Все страницы статусов", + "Select status pages...": "Выберите страницу статуса…", + "resendEveryXTimes": "Повтор каждые {0} раз", + "resendDisabled": "Повторная отправка отключена", + "deleteMaintenanceMsg": "Вы действительно хотите удалить это техобслуживание?", + "critical": "критично", + "Custom Monitor Type": "Собственный тип монитора", + "markdownSupported": "Поддерживает синтаксис Markdown", + "Passive Monitor Type": "Пассивный Тип Монитора", + "Specific Monitor Type": "Специфический Тип Монитора", + "Help": "Помощь", + "Game": "Игра", + "Resend Notification if Down X times consequently": "Повторно отправить уведомление, если не работает X раз подряд", + "General Monitor Type": "Основной Тип Монитора", + "weekdayShortWed": "Ср", + "weekdayShortThu": "Чт", + "weekdayShortFri": "Пт", + "weekdayShortSat": "Сб", + "weekdayShortSun": "Вс", + "dayOfMonth": "День месяца", + "Pick Affected Monitors...": "Выберите затронутые мониторы…", + "Custom": "Свой цвет", + "successMessage": "Сообщение об успехе", + "successMessageExplanation": "Сообщение MQTT, которое может рассматриваться как успешное", + "Custom CSS": "Пользовательские CSS", + "weekdayShortTue": "Вт", + "dayOfWeek": "День недели", + "confirmDeleteTagMsg": "Вы уверены, что хотите удалить этот тег? Мониторы, связанные с этим тегом не будут удалены.", + "loadingError": "Невозможно получить данные, пожалуйста попробуйте позже.", + "Packet Size": "Размер пакета", + "warningTimezone": "Используется часовой пояс сервера", + "weekdayShortMon": "Пн", + "ZohoCliq": "ZohoCliq", + "strategyManual": "Активен/Неактивен Вручную", + "lastDay": "Последний день", + "lastDay1": "Последний день месяца", + "lastDay2": "Второй последний день месяца", + "lastDay3": "Третий последний день месяца", + "lastDay4": "Четвертый последний день месяца", + "No Maintenance": "Нет техобслуживаний", + "pauseMaintenanceMsg": "Вы уверены что хотите поставить на паузу?", + "maintenanceStatus-under-maintenance": "На техобслуживании", + "maintenanceStatus-inactive": "Неактивен", + "maintenanceStatus-scheduled": "Запланирован(о)", + "maintenanceStatus-ended": "Закончился(ось)", + "maintenanceStatus-unknown": "Неизвестен", + "Display Timezone": "Показать часовой пояс", + "Server Timezone": "Часовой пояс сервера", + "statusPageMaintenanceEndDate": "Конец", + "IconUrl": "URL иконки", + "Enable DNS Cache": "(Устарело) Включить DNS кэш для мониторов HTTP(S)", + "Enable": "Включить", + "Disable": "Отключить", + "Single Maintenance Window": "Единое окно техобслуживания", + "Schedule Maintenance": "Запланировать техобслуживание", + "Date and Time": "Дата и время", + "DateTime Range": "Промежуток даты и времени", + "uninstalling": "Удаляется", + "dataRetentionTimeError": "Период хранения должен быть равен 0 или больше", + "infiniteRetention": "Установите 0 для бессрочного хранения.", + "enableGRPCTls": "Разрешить отправлять gRPC запрос через TLS соединение", + "Free Mobile API Key": "API ключ Free Mobile", + "Edit Tag": "Редактировать тэг", + "webhookAdditionalHeadersDesc": "Устанавливает дополнительные заголовки, отправляемые с помощью веб-хука. Каждый заголовок должен быть определён как JSON ключ/значение.", + "topic": "Тема", + "Customize": "Персонализировать", + "Custom Footer": "Пользовательский footer", + "dnsCacheDescription": "Это может не работать на некоторых IPv6 окружениях, отключите это, если у вас возникают проблемы.", + "confirmUninstallPlugin": "Вы уверены, что хотите удалить этот плагин?", + "plugin": "Плагин | Плагины", + "install": "Установить", + "installing": "Устанавливается", + "uninstall": "Удалить", + "Recurring": "Текущий", + "recurringInterval": "Интервал", + "smseagle": "SMSEagle", + "Google Analytics ID": "ID Google Аналитики", + "wayToGetZohoCliqURL": "Вы можете узнать как создать webhook URL тут {0}.", + "Effective Date Range": "Даты действия (Опционально)", + "wayToGetKookGuildID": "Включите \"Режим разработчика\" в настройках Kook, а затем нажмите правой кнопкой по гильдии чтобы скопировать её ID", + "Enable TLS": "Включить TLS", + "Integration Key": "Ключ интеграции", + "Integration URL": "URL интеграции", + "do nothing": "ничего не делать", + "smseagleTo": "Номер(а) телефона", + "smseagleGroup": "Название(я) группы телефонной книги", + "smseagleContact": "Имена контактов телефонной книги", + "smseagleRecipientType": "Тип получателя", + "smseagleRecipient": "Получатель(и) (если множество, должны быть разделены запятой)", + "smseagleToken": "Токен доступа API", + "smseagleUrl": "URL вашего SMSEagle устройства", + "smseagleEncoding": "Отправить в юникоде", + "smseaglePriority": "Приоритет сообщения (0-9, по умолчанию = 0)", + "Server Address": "Адрес сервера", + "Learn More": "Узнать больше", + "topicExplanation": "MQTT топик для мониторинга", + "Guild ID": "Идентификатор гильдии", + "Kook": "Kook", + "wayToGetKookBotToken": "Создайте приложение и получите токен бота по адресу {0}", + "Resend Notification if Down X times consecutively": "Повторная отправка уведомления при неудачном запросе X раз", + "telegramProtectContent": "Запретить пересылку/сохранение", + "telegramProtectContentDescription": "Если включено, сообщения бота в Telegram будут запрещены для пересылки и сохранения.", + "telegramSendSilently": "Отправить без звука", + "telegramSendSilentlyDescription": "Пользователи получат уведомление без звука.", + "Maintenance Time Window of a Day": "Суточный интервал для техобслуживания", + "Clone Monitor": "Копия", + "Clone": "Клонировать", + "cloneOf": "Копия {0}", + "notificationRegional": "Региональный", + "Add New Tag": "Добавить тег", + "Body Encoding": "Тип содержимого запроса.(JSON or XML)", + "Strategy": "Стратегия", + "Free Mobile User Identifier": "Бесплатный мобильный идентификатор пользователя", + "Auto resolve or acknowledged": "Автоматическое разрешение или подтверждение", + "auto acknowledged": "автоматическое подтверждение", + "auto resolve": "автоматическое разрешение", + "API Keys": "API Ключи", + "Expiry": "Срок действия", + "Expiry date": "Дата истечения срока действия", + "Don't expire": "Не истекает", + "Continue": "Продолжить", + "Add Another": "Добавить еще", + "Key Added": "Ключ добавлен", + "Add API Key": "Добавить API ключ", + "No API Keys": "Нет ключей API", + "apiKey-active": "Активный", + "apiKey-expired": "Истёк", + "apiKey-inactive": "Неактивный", + "Expires": "Истекает", + "disableAPIKeyMsg": "Вы уверены, что хотите отключить этот API ключ?", + "Generate": "Сгенерировать", + "pagertreeResolve": "Автоматическое разрешение", + "pagertreeDoNothing": "Ничего не делать", + "lunaseaTarget": "Цель", + "lunaseaDeviceID": "Идентификатор устройства", + "lunaseaUserID": "Идентификатор пользователя", + "Lowcost": "Бюджетный", + "pagertreeIntegrationUrl": "URL-адрес интеграции", + "pagertreeUrgency": "Срочность", + "pagertreeSilent": "Тихий", + "pagertreeLow": "Низкий", + "pagertreeMedium": "Средний", + "pagertreeHigh": "Высокий", + "pagertreeCritical": "Критический", + "high": "высокий", + "promosmsAllowLongSMS": "Разрешить длинные СМС", + "Economy": "Экономия", + "wayToGetPagerDutyKey": "Вы можете это получить, перейдя в Сервис -> Каталог сервисов -> (Выберите сервис) -> Интеграции -> Добавить интеграцию. Здесь вы можете искать «Events API V2». Подробнее {0}", + "apiKeyAddedMsg": "Ваш ключ API добавлен. Пожалуйста, обратите внимание на это сообщение, так как оно отображается один раз.", + "deleteAPIKeyMsg": "Вы уверены, что хотите удалить этот ключ API?", + "wayToGetPagerTreeIntegrationURL": "После создания интеграции Uptime Kuma в PagerTree скопируйте файл Endpoint. См. полную информацию {0}", + "telegramMessageThreadIDDescription": "Необязательный уникальный идентификатор для цепочки сообщений (темы) форума; только для форумов-супергрупп", + "grpcMethodDescription": "Имя метода преобразуется в формат camelCase, например, sayHello, check и т. д.", + "Proto Service Name": "Название службы Proto", + "Proto Method": "Метод Proto", + "Proto Content": "Содержание Proto", + "telegramMessageThreadID": "(Необязательно) ID цепочки сообщений", + "statusPageRefreshIn": "Обновление через: {0}", + "twilioAccountSID": "SID учетной записи", + "twilioAuthToken": "Токен авторизации / Секретный API ключ", + "twilioFromNumber": "С номера", + "twilioToNumber": "На номер", + "sameAsServerTimezone": "Аналогично часовому поясу сервера", + "startDateTime": "Начальная дата и время", + "endDateTime": "Конечная дата и время", + "cronExpression": "Выражение для Cron", + "cronSchedule": "Расписание: ", + "invalidCronExpression": "Неверное выражение Cron: {0}", + "ntfyUsernameAndPassword": "Логин и пароль", + "ntfyAuthenticationMethod": "Способ входа", + "Monitor Setting": "Настройка монитора {0}", + "Show Clickable Link": "Показать кликабельную ссылку", + "Badge Generator": "Генератор значков для {0}", + "Badge Type": "Тип значка", + "Badge Duration": "Срок действия значка", + "Badge Label": "Надпись для значка", + "Badge Prefix": "Значение префикса значка", + "Badge Label Color": "Цвет надписи значка", + "Badge Color": "Цвет значка", + "Badge Label Prefix": "Префикс надписи для значка", + "Open Badge Generator": "Открыть генератор значка", + "Badge Up Color": "Цвет значка для статуса \"Доступен\"", + "Badge Pending Color": "Цвет значка для статуса \"Ожидание\"", + "Badge Maintenance Color": "Цвет значка для статуса \"Техобслуживание\"", + "Badge Style": "Стиль значка", + "Badge Suffix": "Значение суффикса значка", + "Badge value (For Testing only.)": "Значение значка (только для тестирования)", + "Badge URL": "URL значка", + "Group": "Группа", + "Monitor Group": "Группа мониторов", + "Show Clickable Link Description": "Если флажок установлен, все, кто имеет доступ к этой странице состояния, могут иметь доступ к URL-адресу монитора.", + "pushoverMessageTtl": "TTL сообщения (в секундах)", + "Badge Down Color": "Цвет значка для статуса \"Недоступен\"", + "Badge Label Suffix": "Суффикс надписи для значка", + "Edit Maintenance": "Редактировать техобслуживание", + "Reconnecting...": "Переподключение...", + "Cannot connect to the socket server": "Невозможно подключиться к серверу", + "Badge Warn Color": "Цвет значка для предупреждения", + "Badge Warn Days": "Значок для \"дней предупреждения\"", + "Badge Down Days": "Значок для \"дней недоступности\"", + "Home": "Главная", + "noGroupMonitorMsg": "Не доступно. Создайте сначала группу мониторов.", + "Close": "Закрыть", + "chromeExecutableDescription": "Для пользователей Docker, если Chromium еще не установлен, может потребоваться несколько минут для установки и отображения результата тестирования. Он занимает 1 ГБ дискового пространства.", + "chromeExecutable": "Исполняемый файл Chrome/Chromium", + "chromeExecutableAutoDetect": "Автообнаружение", + "Badge Preview": "Предпросмотр значка", + "Badge Duration (in hours)": "Срок действия значка (в часах)", + "twilioApiKey": "API ключ (необязательно)", + "Expected Value": "Ожидаемое значение", + "Json Query": "JSON Запрос", + "Kafka Brokers": "Kafka Brokers", + "Press Enter to add broker": "Нажмите Enter чтобы добавить брокера", + "Kafka Topic Name": "Название темы Kafka", + "Kafka Producer Message": "Сообщение продюсера Kafka", + "Kafka SASL Options": "Параметры SASL в Kafka", + "Mechanism": "Механизм", + "Pick a SASL Mechanism...": "Выберите механизм SASL…", + "AccessKey Id": "AccessKey Id", + "Secret AccessKey": "Секретный ключ доступа", + "Session Token": "Токен сессии", + "Notify Channel": "Канал оповещений", + "aboutNotifyChannel": "Уведомление о канале вызовет настольное или мобильное уведомление для всех участников канала, независимо от того, установлена ли их доступность как активная или отсутствующая.", + "Enter the list of brokers": "Введите список брокеров", + "Enable Kafka SSL": "Включение протокола Kafka SSL", + "Enable Kafka Producer Auto Topic Creation": "Включение автоматического создания тем в Kafka Producer", + "Authorization Identity": "Авторизационная идентичность", + "Request Body": "Тело запроса", + "webhookCustomBodyDesc": "Определите пользовательское HTTP Body для запроса. Принимаются шаблонные переменные {msg}, {heartbeat}, {monitor}.", + "webhookBodyCustomOption": "Пользовательский объект", + "webhookBodyPresetOption": "Пресет - {0}", + "invertKeywordDescription": "Искать, чтобы ключевое слово отсутствовало, а не присутствовало.", + "filterActive": "Активный", + "filterActivePaused": "На паузе", + "Invert Keyword": "Инвертировать ключевое слово", + "tailscalePingWarning": "Для того чтобы использовать монитор Tailscale Ping, необходимо установить Uptime Kuma без Docker, а также установить на сервер клиент Tailscale.", + "PushDeer Server": "Сервер PushDeer", + "pushDeerServerDescription": "Оставьте пустым для использования официального сервера", + "showCertificateExpiry": "Показывать истекающий сертификат", + "Request Timeout": "Тайм-Аут запроса", + "timeoutAfter": "Тайм-Аут через {0} секунд", + "Select": "Выбрать", + "selectedMonitorCount": "Выбрано: {0}", + "Check/Uncheck": "Отметить/Снять", + "gamedigGuessPort": "Gamedig: Угадай порт", + "styleElapsedTime": "Прошедшее время под полосой частоты опроса", + "noOrBadCertificate": "Отсутствие сертификата", + "gamedigGuessPortDescription": "Порт, используемый протоколом Valve Server Query Protocol, может отличаться от порта клиента. Попробуйте это сделать, если монитор не может подключиться к серверу.", + "nostrSender": "Закрытый ключ отправителя (nsec)", + "wayToGetFlashDutyKey": "Вы можете перейти на страницу \"Канал\" -> (Выберите канал) -> \"Интеграции\" -> \"Добавить новую страницу интеграции\", добавить \"Пользовательское событие\", чтобы получить push-адрес, скопировать ключ интеграции в адрес. Для получения дополнительной информации, пожалуйста, посетите", + "styleElapsedTimeShowNoLine": "Показать (Без линии)", + "styleElapsedTimeShowWithLine": "Показать (С линией)", + "Server URL should not contain the nfty topic": "URL сервера не должен содержать тему nfty", + "nostrRecipients": "Открытые ключи получателей (npub)", + "nostrRecipientsHelp": "формат npub, по одному в строке", + "FlashDuty Severity": "Серьёзность", + "nostrRelays": "Реле Nostr", + "nostrRelaysHelp": "Один URL-адрес ретрансляции в каждой строке", + "enableNSCD": "Включить NSCD (Name Service Cache Daemon) для кэширования всех DNS-запросов", + "Saved.": "Сохранено", + "setupDatabaseChooseDatabase": "Какую базу данных Вы бы хотели использовать?", + "setupDatabaseEmbeddedMariaDB": "Вам не нужно ничего настраивать. В этот докер-образ автоматически встроена и настроена MariaDB. Uptime Kuma будет подключаться к этой базе данных через unix-сокет.", + "setupDatabaseSQLite": "Простой файл базы данных, рекомендуемый для небольших развертываний. До версии 2.0.0 Uptime Kuma использовал SQLite в качестве базы данных по умолчанию.", + "setupDatabaseMariaDB": "Подключитесь к внешней базе данных MariaDB. Необходимо задать информацию о подключении к базе данных.", + "dbName": "Имя базы данных", + "pushViewCode": "Как использовать монитор Push? (Посмотреть код)", + "programmingLanguages": "Языки программирования", + "Bark API Version": "Версия Bark API", + "monitorToastMessagesDescription": "Уведомления для мониторов исчезают через заданное время в секундах. Значение -1 отключает тайм-аут. Значение 0 отключает уведомления.", + "monitorToastMessagesLabel": "Уведомления", + "toastErrorTimeout": "Таймаут для уведомлений об ошибках", + "toastSuccessTimeout": "Таймаут для уведомлений об успехе", + "pushOthers": "Другие", + "successPaused": "Успешно приостановлено.", + "authUserInactiveOrDeleted": "Пользователь неактивен или удалён.", + "authInvalidToken": "Неверный токен.", + "authIncorrectCreds": "Неверное имя пользователя или пароль.", + "2faEnabled": "2FA включена.", + "2faAlreadyEnabled": "2FA уже включена.", + "2faDisabled": "2FA отключена.", + "successAdded": "Успешно добавлено.", + "successResumed": "Успешно возобновлено.", + "GrafanaOncallUrl": "URL-адрес Grafana Oncall", + "liquidIntroduction": "Шаблонность достигается с помощью языка шаблонов Liquid. Инструкции по использованию приведены в разделе {0}. Вот доступные переменные:", + "templateLimitedToUpDownNotifications": "доступно только для уведомлений UP/DOWN", + "emailTemplateLimitedToUpDownNotification": "доступен только для сигналов UP/DOWN, в противном случае null", + "leave blank for default body": "оставьте пустым для объекта по умолчанию", + "emailTemplateServiceName": "Название сервиса", + "emailCustomisableContent": "Настраиваемый контент", + "smtpLiquidIntroduction": "Следующие два поля являются шаблонизируемыми с помощью языка шаблонов Liquid. Инструкции по их использованию приведены в разделе {0}. Вот доступные переменные:", + "leave blank for default subject": "оставьте пустым для темы по умолчанию", + "emailCustomBody": "Пользовательский объект", + "emailTemplateHostnameOrURL": "Имя хоста или URL", + "emailTemplateStatus": "Статус", + "successAuthChangePassword": "Пароль успешно обновлён.", + "successBackupRestored": "Резервная копия успешно восстановлена.", + "successDisabled": "Успешно отключено.", + "successEnabled": "Успешно включено.", + "tagNotFound": "Тег не найден.", + "foundChromiumVersion": "Обнаружен Chromium/Chrome. Версии: {0}", + "templateMsg": "сообщение уведомления", + "templateHeartbeatJSON": "объект, описывающий сигнал", + "templateMonitorJSON": "объект, описывающий монитор", + "templateLimitedToUpDownCertNotifications": "доступно только для уведомлений UP/DOWN и об окончании срока действия сертификата", + "Reset Token": "Сброс токена", + "emailTemplateMonitorJSON": "объект, описывающий монитор", + "emailTemplateHeartbeatJSON": "объект, описывающий сигнал", + "emailTemplateMsg": "сообщение уведомления", + "successDeleted": "Успешно удалено.", + "successEdited": "Успешно изменено.", + "Browser Screenshot": "Скриншот браузера", + "noDockerHostMsg": "Не доступно. Сначала настройте хост Docker.", + "DockerHostRequired": "Пожалуйста, установите хост Docker для этого монитора.", + "successKeywordExplanation": "Ключевое слово MQTT, которое будет считаться успешным", + "successKeyword": "Ключевое слово успеха", + "statusPageSpecialSlugDesc": "Специальный ярлык {0}: эта страница будет отображаться, если ярлык не указан", + "ntfyPriorityHelptextAllExceptDown": "Все события отправляются с этим приоритетом, кроме {0}-событий, которые имеют приоритет {1}", + "self-hosted container": "контейнер, который хоститься самостоятельно", + "remoteBrowserToggle": "По умолчанию Chromium работает внутри контейнера Uptime Kuma. Вы можете использовать удаленный браузер, переключив этот переключатель.", + "Remote Browsers": "Удаленные браузеры", + "Remote Browser": "Удаленный браузер", + "Add a Remote Browser": "Добавить удаленный браузер", + "Remote Browser not found!": "Удаленный браузер не найден!", + "remoteBrowsersDescription": "Удаленные браузеры — альтернатива локальному запуску Chromium. Установите такой сервис, как browserless.io, или подключитесь к своему собственному", + "settingUpDatabaseMSG": "Настраиваем базу данных. Это может занять некоторое время, пожалуйста подождите.", + "setup a new monitor group": "настроить новую группу мониторов", + "openModalTo": "открыть модальное окно {0}", + "Add a domain": "Добавить домен", + "Remove domain": "Удалить домен '{0}'", + "Search monitored sites": "Поиск отслеживаемых сайтов", + "ntfyPriorityHelptextAllEvents": "Все события отправляются с максимальным приоритетом", + "useRemoteBrowser": "Использовать удаленный браузер", + "deleteRemoteBrowserMessage": "Вы уверены, что хотите удалить этот удаленный браузер для всех мониторов?", + "Remove the expiry notification": "Удалить дату истечения срока действия уведомления", + "Add a new expiry notification day": "Добавить новый день уведомления об истечении срока действия", + "What is a Remote Browser?": "Что такое удаленный браузер?", + "Mention group": "Упомянуть {group}", + "Your User ID": "Ваш идентификатор пользователя", + "Host URL": "URL Хоста", + "locally configured mail transfer agent": "Настроенный локально агент передачи почты", + "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Введите {Hostname} сервера, к которому вы хотите подключиться, либо {localhost}, если вы собираетесь использовать {local_mta}", + "wayToGetHeiiOnCallDetails": "Как получить ID триггера и {API Keys}, рассказывается в {documentation}", + "gtxMessagingApiKeyHint": "Вы можете найти свой {API key} на странице: Мои учетные записи маршрутизации > Показать информацию об учетной записи > Учетные данные API > REST API (v2.x)", + "From Phone Number / Transmission Path Originating Address (TPOA)": "Номер телефона / Адрес источника пути передачи (АИПП)", + "Alphanumeric (recommended)": "Буквенно-цифровой (рекомендуется)", + "Originator type": "Тип источника", + "cellsyntOriginatortypeAlphanumeric": "Буквенно-цифровая строка (не более 11 буквенно-цифровых символов). Получатели не могут ответить на это сообщение.", + "cellsyntOriginatortypeNumeric": "Числовое значение (не более 15 цифр) с номером телефона в международном формате без 00 в начале (например, номер Великобритании 07920 110 000 должен быть задан, как 447920110000). Получатели могут ответить на сообщение.", + "cellsyntDestination": "Номер телефона получателя в международном формате с 00 в начале, за которым следует код страны, например, 00447920110000 для номера Великобритании 07920 110 000 (не более 17 цифр в сумме). Не более 25000 получателей, разделенных запятыми, на один HTTP-запрос.", + "callMeBotGet": "Здесь вы можете сгенерировать {endpoint} для {0}, {1} и {2}. Имейте в виду, что вы можете получить ограничение по скорости. Ограничения по скорости выглядят следующим образом: {3}", + "gtxMessagingFromHint": "На мобильных телефонах получатели видят АИПП как отправителя сообщения. Допускается использование до 11 буквенно-цифровых символов, шорткода, местного длинного кода или международных номеров ({e164}, {e212} или {e214}).", + "wayToWriteWhapiRecipient": "Номер телефона с международным префиксом, но без знака плюс в начале ({0}), идентификатора контакта ({1}) или идентификатора группы ({2})", + "cellsyntSplitLongMessages": "Разделять длинные сообщения на 6 частей. 153 x 6 = 918 символов.", + "Mentioning": "Упоминание", + "Don't mention people": "Не упоминайте людей", + "gtxMessagingToHint": "Международный формат, с «+» ({e164}, {e212} или {e214})", + "whapiRecipient": "Номер телефона / ID контакта / ID группы", + "API URL": "API URL-адрес", + "documentationOf": "{0} Документация", + "senderSevenIO": "Отправляет номер или имя", + "receiverSevenIO": "Номер получения", + "wayToGetSevenIOApiKey": "Зайдите на панель управления по адресу app.seven.io > разработчик > {api key} > зеленая кнопка добавить", + "receiverInfoSevenIO": "Если номер получателя не находится в Германии, то перед номером необходимо добавить код страны (например, для США код страны 1, тогда используйте 117612121212, вместо 017612121212)", + "apiKeySevenIO": "SevenIO {API Key}", + "Telephone number": "Номер телефона", + "Channel access token (Long-lived)": "Токен доступа к каналу (долговечный)", + "wayToGetWhapiUrlAndToken": "Вы можете получить {API URL} и токен, зайдя в нужный вам канал с {0}", + "To Phone Number": "На номер телефона", + "Originator": "Источник", + "cellsyntOriginator": "Виден на мобильном телефоне получателя как отправитель сообщения. Допустимые значения и функция зависят от параметра {originatortype}.", + "Destination": "Назначение", + "Allow Long SMS": "Разрешить длинные SMS", + "max 15 digits": "макс. 15 цифр", + "max 11 alphanumeric characters": "максимум 11 буквенно-цифровых символов", + "Command": "Команда", + "Create new forum post": "Создать новый пост", + "forumPostName": "Название поста", + "postToExistingThread": "Создать пост в этой ветке", + "Select message type": "Выберите тип сообщения", + "Send to channel": "Отправить в канал", + "Refresh Interval": "Интервал обновления", + "ignoreTLSErrorGeneral": "Игнорировать ошибки TLS/SSL для подключения" +} diff --git a/src/lang/sv-SE.json b/src/lang/sv-SE.json index 6ae6e8345..385e2d292 100644 --- a/src/lang/sv-SE.json +++ b/src/lang/sv-SE.json @@ -1,961 +1,961 @@ -{ - "languageName": "Svenska", - "checkEverySecond": "Uppdatera var {0} sekund", - "retriesDescription": "Max antal försök innan tjänsten markeras som nere och en notis skickas", - "ignoreTLSError": "Ignorera TLS/SSL-fel för webbsidor med HTTPS", - "upsideDownModeDescription": "Vänd upp och ner på statusen. Om tjänsten är nåbar visas den som NERE.", - "maxRedirectDescription": "Max antal omdirigeringar att följa. Välj 0 för att avaktivera omdirigeringar.", - "acceptedStatusCodesDescription": "Välj statuskoder som räknas som lyckade.", - "passwordNotMatchMsg": "Det bekräftade lösenordet stämmer ej överens.", - "notificationDescription": "Vänligen lägg till en notistjänst till dina övervakare.", - "keywordDescription": "Sök efter nyckelord i ren HTML eller JSON-svar. Sökningen är skiftkänslig.", - "pauseDashboardHome": "Pausa", - "deleteMonitorMsg": "Är du säker på att du vill ta bort den här övervakningen?", - "deleteNotificationMsg": "Är du säker på att du vill ta bort den här notisen för alla övervakare?", - "resolverserverDescription": "Cloudflare är den förvalda servern. Du kan byta resolver när som helst.", - "rrtypeDescription": "Välj den RR-typ du vill övervaka", - "pauseMonitorMsg": "Är du säker på att du vill pausa?", - "Settings": "Inställningar", - "Dashboard": "Infopanel", - "New Update": "Ny uppdatering", - "Language": "Språk", - "Appearance": "Utseende", - "Theme": "Tema", - "General": "Allmänt", - "Version": "Version", - "Check Update On GitHub": "Sök efter uppdatering på GitHub", - "List": "Lista", - "Add": "Lägg till", - "Add New Monitor": "Lägg till ny övervakare", - "Quick Stats": "Snabbstatistik", - "Up": "Uppe", - "Down": "Nere", - "Pending": "Pågående", - "Unknown": "Okänt", - "Pause": "Pausa", - "Name": "Namn", - "Status": "Status", - "DateTime": "Datum & tid", - "Message": "Meddelande", - "No important events": "Inga viktiga händelser", - "Resume": "Återuppta", - "Edit": "Redigera", - "Delete": "Ta bort", - "Current": "Nuvarande", - "Uptime": "Drifttid", - "Cert Exp.": "Certifikat utlöpt.", - "day": "dag | dagar", - "-day": "-dag", - "hour": "timme", - "-hour": "-timme", - "Response": "Svar", - "Ping": "Ping", - "Monitor Type": "Övervakningstyp", - "Keyword": "Nyckelord", - "Friendly Name": "Namn", - "URL": "URL", - "Hostname": "Värdnamn", - "Port": "Port", - "Heartbeat Interval": "Hjärtslagsintervall", - "Retries": "Försök", - "Advanced": "Avancerat", - "Upside Down Mode": "Upp och ner-läge", - "Max. Redirects": "Max antal omdirigeringar", - "Accepted Status Codes": "Tillåtna statuskoder", - "Save": "Spara", - "Notifications": "Notifieringar", - "Not available, please setup.": "Ej tillgänglig, vänligen konfigurera.", - "Setup Notification": "Konfigurera notifieringstjänst", - "Light": "Ljust", - "Dark": "Mörkt", - "Auto": "Automatiskt", - "Theme - Heartbeat Bar": "Tema - Heartbeat-indikator", - "Normal": "Normal", - "Bottom": "Botten", - "None": "Ingen", - "Timezone": "Tidszon", - "Search Engine Visibility": "Synlighet på sökmotorer", - "Allow indexing": "Tillåt indexering", - "Discourage search engines from indexing site": "Hindra sökmotorer från att indexera sidan", - "Change Password": "Byt lösenord", - "Current Password": "Nuvarande lösenord", - "New Password": "Nytt lösenord", - "Repeat New Password": "Upprepa nytt lösenord", - "Update Password": "Uppdatera lösenord", - "Disable Auth": "Avaktivera autentisering", - "Enable Auth": "Aktivera autentisering", - "Logout": "Logga ut", - "Leave": "Lämna", - "I understand, please disable": "Jag förstår, vänligen avaktivera", - "Confirm": "Bekräfta", - "Yes": "Ja", - "No": "Nej", - "Username": "Användarnamn", - "Password": "Lösenord", - "Remember me": "Kom ihåg mig", - "Login": "Logga in", - "No Monitors, please": "Inga övervakare, tack", - "add one": "lägg till en", - "Notification Type": "Notifieringstyp", - "Email": "Epost", - "Test": "Testa", - "Certificate Info": "Certifikatsinfo", - "Resolver Server": "Resolverserver", - "Resource Record Type": "Resource Record-typ", - "Last Result": "Senaste resultat", - "Create your admin account": "Skapa ditt administratörskonto", - "Repeat Password": "Upprepa lösenord", - "respTime": "Svarstid (ms)", - "Specific Monitor Type": "Applikationsspecifik övervakartyp", - "Push URL": "Push URL", - "Passive Monitor Type": "Passiv övervakartyp", - "markdownSupported": "Stödjer markdown-syntax", - "Heartbeat Retry Interval": "Omprövningsintervall", - "needPushEvery": "Hämta denna URL var {0} sekund.", - "pushOptionalParams": "Valfria parametrar: {0}", - "disableauth.message1": "Vill du verkligen {disableAuth}?", - "disable authentication": "avaktivera autentisering", - "disableauth.message2": "Det är designat för när en {intendThirdPartyAuth} såsom Cloudflare Access eller Authelia används framför Uptime Kuma.", - "where you intend to implement third-party authentication": "tredjeparts autentiseringstjänst", - "Please use this option carefully!": "Använd denna funktion varsamt!", - "Import Backup": "Importera säkerhetskopia", - "Affected Monitors": "Påverkade övervakare", - "Start of maintenance": "Påbörja underhåll", - "All Status Pages": "Alla statussidor", - "alertNoFile": "Välj en fil att importera.", - "alertWrongFileType": "Välj en JSON-formaterad fil.", - "Help": "Hjälp", - "Export": "Exportera", - "Import": "Importera", - "Game": "Spel", - "resendEveryXTimes": "Omsänd efter {0} gånger", - "Export Backup": "Exportera säkerhetskopia", - "Schedule maintenance": "Schemalägg underhåll", - "Monitor": "Övervakare | Övervakare", - "Resend Notification if Down X times consecutively": "Sänd notis igen om nere X gånger i rad", - "Maintenance": "Underhåll", - "retryCheckEverySecond": "Ompröva var {0} sekund", - "statusMaintenance": "Underhåll", - "resendDisabled": "Omsändning inaktiverat", - "Pick Affected Monitors...": "Välj påverkade övervakare…", - "Select status pages...": "Välj statussidor…", - "General Monitor Type": "Allmän övervakartyp", - "webhookFormDataDesc": "{multipart} är bra för PHP. JSON kommer att bli analyserat med {decodeFunction}", - "appriseInstalled": "Apprise är installerat.", - "clearDataOlderThan": "Behåll övervakarhistoriksdata i {0} dagar.", - "steamApiKeyDescription": "För att övervaka en Steam Game Server behöver man en Steam Web-API nyckel. Du kan registrera din API nyckel här: ", - "No Monitors": "Inga övervakare", - "proxyDescription": "Proxyservrar måste tilldelas en övervakare för att fungera.", - "setAsDefaultProxyDescription": "Denna proxyserver kommer att aktiveras som standard för nya övervakare. Du kan fortfarande inaktivera proxyserven var för sig övervakare.", - "Content Type": "Innehållstyp", - "webhookAdditionalHeadersDesc": "Ställer in ytterligare headers skickat med webbhooken. Varenda header ska definieras som ett JSON nyckel/värde par.", - "RadiusCallingStationIdDescription": "Kallande enhetsidentifierare", - "Slug": "Slugg", - "Invert Keyword": "Invertera nyckelord", - "Degraded Service": "Försämrad tjänst", - "Request Timeout": "Request-timeout", - "timeoutAfter": "Timeout efter {0} sekunder", - "styleElapsedTime": "Förfluten tid under heartbeat-indikatorn", - "styleElapsedTimeShowNoLine": "Visa (utan linje)", - "styleElapsedTimeShowWithLine": "Visa (med linje)", - "Create": "Skapa", - "Clear Data": "Radera data", - "Auto Get": "Hämta automatiskt", - "Overwrite": "Skriv över", - "Options": "Alternativ", - "Verify Token": "Verifiera token", - "Enable 2FA": "Aktivera 2FA", - "Disable 2FA": "Inaktivera 2FA", - "2FA Settings": "2FA inställningar", - "Two Factor Authentication": "Tvåfaktorsautentisering", - "filterActive": "Aktiv", - "filterActivePaused": "Pausad", - "Inactive": "Inaktiv", - "Setup 2FA": "Ställ in 2FA", - "Clear all statistics": "Rensa all statistik", - "Skip existing": "Hoppa över existerande", - "Keep both": "Behåll båda", - "Token": "Token", - "notAvailableShort": "N/A", - "Apply on all existing monitors": "Applicera på alla existerande övervakare", - "Heartbeats": "Hjärtslag", - "Show URI": "Visa URI", - "color": "Färg", - "value (optional)": "Värde (valfritt)", - "Gray": "Grå", - "Tags": "Taggar", - "Tag with this name already exist.": "Tagg med detta namn finns redan.", - "Red": "Röd", - "Orange": "Orange", - "Green": "Grön", - "Blue": "Blå", - "Indigo": "Indigoblå", - "Purple": "Lila", - "Pink": "Rosa", - "Custom": "Anpassad", - "Search...": "Sök…", - "Avg. Ping": "Pingmedelvärde", - "Tag with this value already exist.": "Tagg med detta värde finns redan.", - "Avg. Response": "Responsmedelvärde", - "Entry Page": "Ingångssida", - "statusPageRefreshIn": "Uppdaterar om: {0}", - "No Services": "Inga tjänster", - "All Systems Operational": "Alla system i drift", - "Partially Degraded Service": "Delvis försämrade tjänster", - "Add Group": "Lägg till grupp", - "Add New Tag": "Lägg till ny tagg", - "Add New below or Select...": "Lägg till ny under eller välj…", - "Add a monitor": "Lägg till en övervakare", - "Edit Status Page": "Hantera statussida", - "Status Page": "Statussida", - "Status Pages": "Statussidor", - "Go to Dashboard": "Till instrumentpanel", - "here": "här", - "Required": "Nödvändig", - "webhookJsonDesc": "{0} är bra för moderna HTTP servrar till exempel Express.js", - "webhookCustomBodyDesc": "Definiera en anpassad HTTP Body till den request. Mall variabler {msg}, {heartbeat}, {monitor} accepteras.", - "webhookAdditionalHeadersTitle": "Ytterligare headers", - "webhookBodyPresetOption": "Förinställning - {0}", - "defaultNotificationName": "Min {notification} varna ({number})", - "webhookBodyCustomOption": "Anpassad body", - "Webhook URL": "Webbhook URL", - "Application Token": "Applikationstoken", - "Server URL": "Server URL", - "Priority": "Prioritet", - "emojiCheatSheet": "Emoji fusklapp: {0}", - "Read more": "Läs mer", - "appriseNotInstalled": "Apprise är inte installerat. {0}", - "Method": "Metod", - "Body": "Body", - "Headers": "Headers", - "HeadersInvalidFormat": "Requestheaders är inte giltig JSON: ", - "BodyInvalidFormat": "Requestens body är inte giltig JSON: ", - "Monitor History": "Övervakarhistorik", - "PasswordsDoNotMatch": "Lösenorden matchar inte.", - "records": "transaktion", - "One record": "En transaktion", - "Current User": "Nuvarande användare", - "topic": "Ämne", - "topicExplanation": "MQTT-ämne att övervaka", - "successMessageExplanation": "MQTT meddelande som ska anses vara framgång", - "successMessage": "Framgång Meddelande", - "recent": "Nyligen", - "Done": "Klar", - "Info": "Info", - "Security": "Säkerhet", - "Steam API Key": "Steam API Nyckel", - "Shrink Database": "Krymp databas", - "Pick a RR-Type...": "Välj en RR-Typ…", - "Pick Accepted Status Codes...": "Välj accepterade statuskoder…", - "Default": "Standard", - "HTTP Options": "HTTP-alternativ", - "Create Incident": "Skapa incident", - "Title": "Titel", - "Content": "Innehåll", - "Style": "Stil", - "info": "info", - "Post URL": "Post URL", - "PushUrl": "Push URL", - "danger": "risk", - "error": "fel", - "critical": "kritisk", - "primary": "primär", - "light": "ljus", - "dark": "mörk", - "Post": "Post", - "Please input title and content": "Vänligen lägg till titel och innehåll", - "Created": "Skapad", - "Last Updated": "Senaste uppdaterad", - "Switch to Light Theme": "Byt till ljust tema", - "Switch to Dark Theme": "Byt till mörkt tema", - "Show Tags": "Visa taggar", - "Hide Tags": "Göm taggar", - "Description": "Beskrivning", - "No monitors available.": "Inga övervakare tillgängliga.", - "Add one": "Lägg till en", - "Untitled Group": "Namnlös grupp", - "Services": "Tjänster", - "Discard": "Förkasta", - "Cancel": "Avbryt", - "Select": "Välj", - "selectedMonitorCount": "Valt: {0}", - "Check/Uncheck": "Markera/Avmarkera", - "Powered by": "Drivs av", - "Customize": "Anpassa", - "Custom Footer": "Anpassad sidfot", - "Custom CSS": "Anpassad CSS", - "deleteStatusPageMsg": "Är du säkert att du vill radera denna statussida?", - "Proxies": "Proxyservrar", - "default": "Standard", - "enabled": "Aktiverad", - "setAsDefault": "Ange som standard", - "deleteProxyMsg": "Är du säkert att du vill radera denna proxyserver för alla övervakare?", - "Certificate Chain": "Certifikatkedja", - "Valid": "Giltig", - "Invalid": "Ogiltig", - "User": "Användare", - "Installed": "Installerat", - "Not installed": "Inte installerat", - "Running": "Körs", - "Not running": "Körs inte", - "Remove Token": "Ta bort token", - "Start": "Starta", - "Stop": "Stoppa", - "Add New Status Page": "Lägg till ny statussida", - "Accept characters:": "Acceptera tecken:", - "Unpin": "Ta bort fastnålat", - "startOrEndWithOnly": "Börja eller sluta med {0} endast", - "No consecutive dashes": "Inga streck i följd", - "Next": "Nästa", - "The slug is already taken. Please choose another slug.": "Sluggen är upptagen. Vänligen välj en annan slugg.", - "No Proxy": "Ingen proxyserver", - "Authentication": "Autentisering", - "HTTP Basic Auth": "HTTP Basic-auth", - "New Status Page": "Ny statussida", - "Page Not Found": "Sidan hittades inte", - "Reverse Proxy": "Omvänd proxyserver", - "Backup": "Säkerhetskopia", - "About": "Om", - "wayToGetCloudflaredURL": "(Ladda ned cloudflared från {0})", - "cloudflareWebsite": "Cloudflare webbsida", - "Message:": "Meddelande:", - "Don't know how to get the token? Please read the guide:": "Vet inte hur man får tag i en token? Vänligen läs guiden:", - "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Den nuvarande anslutningen kan kopplas bort om du ansluter via Cloudflare Tunnel. Är du säkert du vill avsluta den? Skriv ditt nuvarande lösenord för att bekräfta.", - "HTTP Headers": "HTTP-headers", - "Trust Proxy": "Lita på proxyserver", - "Other Software": "Annan programvara", - "For example: nginx, Apache and Traefik.": "Till exempel: nginx, Apache och Traefik.", - "Please read": "Vänligen läs", - "Subject:": "Ämne:", - "Valid To:": "Giltig till:", - "Days Remaining:": "Dagar kvar:", - "Fingerprint:": "Fingeravtryck:", - "No status pages": "Inga statussidor", - "Proxy": "Proxyserver", - "Date Created": "Skapat datum", - "Footer Text": "Sidfotstext", - "Show Powered By": "Visa \"Drivs av\"", - "Domain Names": "Domännamn", - "signedInDisp": "Inloggad som {0}", - "signedInDispDisabled": "Auth inaktiverad.", - "RadiusSecret": "Radius-hemlighet", - "RadiusSecretDescription": "Delad hemlighet mellan klient och server", - "RadiusCalledStationId": "Avbrutet Stationsid", - "RadiusCalledStationIdDescription": "Enhetsidentifierare", - "RadiusCallingStationId": "Uppringande stationsid", - "Certificate Expiry Notification": "Notifiering om certifikatets utgångsdatum", - "Domain Name Expiry Notification": "Notifiering om förfallodatum på domännamn", - "API Key": "API-nyckel", - "API Username": "API-användarnamn", - "Show update if available": "Visa uppdatering om tillgänglig", - "Also check beta release": "Kolla också betaversioner", - "Events": "Händelser", - "Active": "Aktiv", - "statusPageNothing": "Ingenting här, vänligen lägg till en grupp eller en övervakare.", - "warning": "varning", - "Issuer:": "Utfärdare:", - "Expected Value": "Förväntat värde", - "Primary Base URL": "Primär bas-URL", - "Home": "Hem", - "Cannot connect to the socket server": "Kan inte ansluta till socketservern", - "Reconnecting...": "Återansluter...", - "Json Query": "Json-fråga", - "Default enabled": "Standard aktiverad", - "pushViewCode": "Hur använda Pushövervakare? (Visa kod)", - "Steam Game Server": "Steam Spel Server", - "Docker Container": "Docker-container", - "setupDatabaseChooseDatabase": "Vilken databas vill du använda?", - "dbName": "Databasnamn", - "What you can try:": "Vad du kan försöka:", - "Container Name / ID": "Containernamn / ID", - "Docker Host": "Dockervärd", - "Docker Hosts": "Dockervärdar", - "Domain": "Domän", - "Most likely causes:": "Störst troliga anledningar:", - "Coming Soon": "Kommer snart", - "liquidIntroduction": "Mallar är uppnådda med Liquids mallspråk. Hänvisa till [0] för användningsinstruktioner. Tillgängliga variabler är:", - "emailTemplateStatus": "Status", - "templateHeartbeatJSON": "objekt beskrivande hjärtslag", - "templateLimitedToUpDownCertNotifications": "Endast tillgänglig för UPP/NER/Certifikat giltigt notifieringar", - "successKeyword": "Nyckelord för lyckat", - "successKeywordExplanation": "MQTT-nyckelord som anses lyckade", - "cronExpression": "Cronuttryck", - "invalidCronExpression": "Ogiltigt cronuttryck: {0}", - "backupRecommend": "Vänligen säkerhetskopiera volymen eller mappen (./data/) direkt istället.", - "disableCloudflaredNoAuthMsg": "Du är i Auth-läge, ett lösenord krävs inte.", - "setupDatabaseEmbeddedMariaDB": "Du behöver inte ställa in någonting. Denna dockeravbild har inbyggd och konfigurerade MariaDB automatiskt. Uptime Kuma kommer att ansluta till databasen via en unixsocket.", - "setupDatabaseMariaDB": "Anslut till en extern MariaDB databas. Du måste ange anslutningsinformation till databasen.", - "setupDatabaseSQLite": "En enkel databasfil, rekommenderas för småskaliga installationer. Före v2.0.0, använde Uptime Kuma SQLite som standarddatabas.", - "Reset Token": "Återställ token", - "Workstation": "Arbetsstation", - "socket": "Socket", - "tcp": "TCP / HTTP", - "Packet Size": "Paketstorlek", - "Bot Token": "Bott-token", - "telegramSendSilently": "Skicka tyst", - "telegramMessageThreadID": "(Valfritt) Meddelandetrådsid", - "Chat ID": "Chatt-ID", - "deleteDockerHostMsg": "Är du säker att du vill ta bort denna dockervärd för alla övervakare?", - "DockerHostRequired": "Vänligen ange Dockervärd för denna övervakare.", - "wayToGetTelegramToken": "Du kan få en token från {0}.", - "pushOthers": "Andra", - "programmingLanguages": "Programmeringsspråk", - "templateMsg": "meddelande i notifieringen", - "templateMonitorJSON": "objekt beskrivande övervakare", - "templateLimitedToUpDownNotifications": "endast tillgänglig för UPP/NER notifieringar", - "Examples": "Exempel", - "Using a Reverse Proxy?": "Används omvänd proxy?", - "Query": "Fråga", - "Connection Type": "Anslutningstyp", - "YOUR BOT TOKEN HERE": "DIN BOTT-TOKEN HÄR", - "or": "eller", - "Optional": "Valfri", - "Event data:": "Händelsedata:", - "Trigger type:": "Utlösningstyp:", - "Automations can optionally be triggered in Home Assistant:": "Automationer kan valfritt utlösas i Home Assistant:", - "default: notify all devices": "standard: notifiera alla enheter", - "Notification Service": "Notifieringstjänst", - "Home Assistant URL": "Home Assistant-URL", - "wayToGetLineNotifyToken": "Du kan få en åtkomststoken från {0}", - "telegramProtectContent": "Skydda vidarebefordring/sparning", - "weekdayShortWed": "Ons", - "weekdayShortTue": "Tis", - "weekdayShortMon": "Mån", - "weekdayShortSun": "Sön", - "weekdayShortSat": "Lör", - "weekdayShortFri": "Fre", - "weekdayShortThu": "Tors", - "cronSchedule": "Schema: ", - "endDateTime": "Slutdatum/tid", - "startDateTime": "Startdatum/tid", - "sameAsServerTimezone": "Samma som serverns tidszon", - "warningTimezone": "Den använder serverns tidszon", - "strategyManual": "Aktivera/Inaktivera manuellt", - "Recurring": "Återkommande", - "Event type:": "Händelsetyp:", - "recurringInterval": "Intervall", - "emailCustomSubject": "Anpassat ämne", - "emailCustomisableContent": "Anpassningsbart innehåll", - "smtpLiquidIntroduction": "Följande två fält är mallbara via Liquid templating Language. Vänligen referera till {0} för användningsinstruktioner. Detta är dom tillgängliga variablerna:", - "leave blank for default subject": "lämna blankt för standardämne", - "emailCustomBody": "Anpassat meddelande", - "Recipients": "Mottagare", - "twoFAVerifyLabel": "Vänligen ange din token för att verifiera 2FA:", - "pushoversounds tugboat": "Bogserbåt", - "pushoversounds alien": "Utomjordingsalarm (lång)", - "AccessKeyId": "Accessnyckel-ID", - "Uptime Kuma URL": "Uptime Kuma URL", - "Notify Channel": "Notifieringskanal", - "smseagleRecipientType": "Mottagartyp", - "smseagleTo": "Telefonnummer", - "smseagleRecipient": "Mottagare (flera måste separeras med komma)", - "clearEventsMsg": "Är du säker att du vill ta bort alla händelser för denna övervakare?", - "successDisabled": "Inaktivering lyckades.", - "confirmImportMsg": "Är du säker på att du vill importera säkerhetskopian? Verifiera att du valt korrekta importeringsval.", - "remoteBrowsersDescription": "Fjärrwebbläsare är ett alternativ istället för att köra Chromium lokalt. Ställ in en tjänst liknande browserless.io eller anslut till din egna", - "pushyToken": "Enhetstoken", - "successDeleted": "Lyckades ta bort.", - "Enable DNS Cache": "(Utfasad) Aktivera DNS-cache för HTTP(s) övervakare", - "enableNSCD": "Aktivera NSCD (Name Service Cache Daemon) för att cacha alla DNS-förfrågningar", - "chromeExecutable": "Chrome/Chromium körbar fil", - "chromeExecutableAutoDetect": "Autodetektera", - "pushoverMessageTtl": "Meddelande TTL (sekunder)", - "Example:": "Exempel: {0}", - "Sms template must contain parameters: ": "SMS-mall måste innehålla dessa parametrar: ", - "WeCom Bot Key": "WeCom-bottsnyckel", - "Add a domain": "Lägg till en domän", - "smtpDkimSettings": "DKIM-inställningar", - "Line Developers Console": "Linjeutvecklarkonsol", - "infiniteRetention": "Ange 0 för oändlig kvarhållningsperiod.", - "enableDefaultNotificationDescription": "Denna notifiering kommer att vara aktiverad som standard för nya övervakere. Du kan inaktivera notifieringen separat för varje övervakare.", - "wayToGetKookBotToken": "Skapa applikation och få din bott-token vid {0}", - "alertaApiEndpoint": "API-slutpunkt", - "Learn More": "Läs mer", - "Add Another": "Lägg till en annan", - "apiKeyAddedMsg": "Din API-nyckel har lagts till. Vänligen notera den för detta visas inte igen.", - "octopushPhoneNumber": "Telefonnummer (int. format, ex: +33612345678) ", - "noOrBadCertificate": "Inget/ogiltigt certifikat", - "successBackupRestored": "Lyckades återställa säkerhetskopia.", - "GrafanaOncallUrl": "Grafana OnCall-URL", - "Maintenance Time Window of a Day": "Underhållsfönster-tid på dagen", - "Effective Date Range": "Giltigt datumintervall (valfritt)", - "Enable": "Aktivera", - "Disable": "Inaktivera", - "Schedule Maintenance": "Schemalagt underhåll", - "Integration Key": "Integreringsnyckel", - "Remote Browsers": "Fjärrwebbläsare", - "Remote Browser": "Fjärrwebbläsare", - "Add a Remote Browser": "Lägg till en fjärrwebbläsare", - "Check how to config it for WebSocket": "Kontrollera hur man konfigurerar den för webbsocket", - "The resource is no longer available.": "Resursen är inte längre tillgänglig.", - "Connection String": "Anslutningssträng", - "wayToCheckSignalURL": "Du kan kontrollera denna URL för att visa hur man sätter upp en:", - "pushoverDesc2": "Om du vill skicka notifieringar till andra enheter, fyll i enhetsfältet.", - "Generate": "Generera", - "noDockerHostMsg": "Inte tillgängligt. Ställ in en dockervärd först.", - "tailscalePingWarning": "För att använda Tailscale Ping-övervakare, måste du installera Uptime Kuma utan docker och också installera Tailscale-klienten på din server.", - "trustProxyDescription": "Lita på 'X-Forwarded-*' headers. Om du vill få den korrekta IP-adressen för klienten och Uptime Kuma är bakom en proxy såsom Nginx eller Apache, måste du aktivera detta.", - "statusPageMaintenanceEndDate": "Slut", - "IconUrl": "Ikon-URL", - "Single Maintenance Window": "Ensamt underhållsfönster", - "maintenanceStatus-under-maintenance": "Underhåll pågår", - "maintenanceStatus-inactive": "Inaktiv", - "maintenanceStatus-scheduled": "Schemalagd", - "maintenanceStatus-ended": "Slutade", - "maintenanceStatus-unknown": "Okänd", - "Display Timezone": "Visa tidszon", - "Server Timezone": "Server-tidszon", - "smtpBCC": "Hemlig kopia", - "smtpCC": "Kopia", - "Number": "Nummer", - "To Email": "Till epost", - "emailTemplateMonitorJSON": "objekt som beskriver övervakaren", - "emailTemplateHeartbeatJSON": "objekt som beskriver hjärtslaget", - "emailTemplateMsg": "meddelande i notifieringen", - "emailTemplateLimitedToUpDownNotification": "endast tillgängligt för UPP/NER hjärtslag, annars noll", - "Discord Webhook URL": "Discord webbhook-URL", - "wayToGetDiscordURL": "Du kan hitta detta genom att gå till Serverinställningar -> Integrationer -> Visa webbhocks -> Ny webbhook", - "Bot Display Name": "Bott-visningsnamn", - "dataRetentionTimeError": "Kvarhållningsperiod måste vara större än 0", - "Integration URL": "Integrerings-URL", - "Close": "Stäng", - "Session Token": "Sessionstoken", - "noGroupMonitorMsg": "Inte tillgängligt. Skapa en gruppövervakare först.", - "successEnabled": "Aktivering lyckades.", - "tagNotFound": "Tagg hittades inte.", - "Bark API Version": "Bark API-version", - "Add a new expiry notification day": "Lägg till ett ny dag för notifiering av utgångsdatum", - "Remove the expiry notification": "Ta bort notifieringsdag för utgångsdatum", - "There might be a typing error in the address.": "Det kan vara ett stavfel i adressen.", - "Retype the address.": "Skriv om adressen.", - "Go back to the previous page.": "Gå tillbaka till föregående sida.", - "settingsCertificateExpiry": "TLS-certifikatsutgångsdatum", - "certificationExpiryDescription": "HTTPS-övervakare utlöser en notifiering när TLS-certifikatet löper ut om:", - "Setup Docker Host": "Ställ in dockervärd", - "Docker Daemon": "Docker-daemon", - "telegramSendSilentlyDescription": "Skickar meddelandet tyst. Användare kommer att få en notifiering utan ljud.", - "telegramMessageThreadIDDescription": "Valfri unik identifierare för meddelandets tråd (ämne) på forumet; endast för forum-supergrupper", - "telegramProtectContentDescription": "Om aktiverat kommer bott-meddelanden i Telegram att vara skyddade från vidarebefordring och sparande.", - "supportTelegramChatID": "Stöd direktchatt / grupp / kanalens chatt-id", - "wayToGetTelegramChatID": "Du kan se ditt chatt-id genom att skicka ett meddelande till boten och besöka denna URL för att visa chat_id:", - "chatIDNotFound": "Chatt-id hittade inte; vänligen skicka ett meddelande till den här botten först", - "Long-Lived Access Token": "Långtidsaccess-token", - "Frontend Version": "Frontend-version", - "Frontend Version do not match backend version!": "Frontend-version matchar inte backend-version!", - "backupOutdatedWarning": "Avskrivet: Eftersom en massa funktioner har lagts till och denna säkerhetskopieringsfunktion är lite ounderhållen, kan det inte generera eller återställa en komplett säkerhetskopia.", - "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "En lista av notifieringstjänster kan hittas i Home Assistant under \"Utvecklarverktyg > Tjänster\", sök efter notifiering för att hitta din enhet/telefon-namn.", - "Then choose an action, for example switch the scene to where an RGB light is red.": "Välj en åtgärd, till exempel byt scen till en där en RGB-lampa är röd.", - "emailTemplateHostnameOrURL": "Värdnamn eller URL", - "From Email": "Från epost", - "dayOfMonth": "Dag i månad", - "dayOfWeek": "Dag i vecka", - "lastDay": "Sista dagen", - "lastDay1": "Sista dagen i månaden", - "lastDay2": "2a sista dagen i månaden", - "lastDay3": "3e sista dagen i månaden", - "lastDay4": "4e sista dagen i månaden", - "No Maintenance": "Inget underhåll", - "pauseMaintenanceMsg": "Är du säker att du vill pausa?", - "chromeExecutableDescription": "Docker-användare, om Chromium inte är installerat kommer det att dröja ett par minuter att installera innan testresultatet visas. Det tar 1GB i diskutrymme.", - "dnsCacheDescription": "Det kan misslyckas i några IPv6-miljöer, inaktivera det om du stöter på några problem.", - "Date and Time": "Datum och tid", - "DateTime Range": "Datum/tid-intervall", - "loadingError": "Kan inte hämta data, vänligen försök senare.", - "install": "Installera", - "installing": "Installerar", - "uninstall": "Avinstallera", - "uninstalling": "Avinstallerar", - "confirmUninstallPlugin": "Är du säker på att du vill avinstallera detta tillägg?", - "plugin": "Tillägg | Tillägg", - "Clone Monitor": "Klona övervakare", - "Clone": "Klona", - "smtp": "Epost (SMTP)", - "secureOptionNone": "Ingen /STARTTLS (25,587)", - "secureOptionTLS": "TLS (465)", - "Ignore TLS Error": "Ignorera TLS-fel", - "leave blank for default body": "lämna blankt för standardmeddelande", - "emailTemplateServiceName": "Tjänstenamn", - "Prefix Custom Message": "Anpassat meddelandeprefix", - "Hello @everyone is...": "Hej {'@'}alla är…", - "wayToGetTeamsURL": "Du kan lära dig hur man skapar en webbhook-URL {0}.", - "wayToGetZohoCliqURL": "Du kan lära dig hur man skapar en webbhook-URL {0}.", - "needSignalAPI": "Du måste ha en signal-klient med REST API.", - "Access Token": "Åtkomsttoken", - "Channel access token": "Kanalåtkomststoken", - "User ID": "Användarid", - "Messaging API": "Meddelandeapi", - "Icon URL": "Ikon-URL", - "deleteMaintenanceMsg": "Är du säker att du vill ta bort detta underhåll?", - "clearHeartbeatsMsg": "Är du säker att du vill ta bort alla hjärtslag för denna övervakare?", - "confirmClearStatisticsMsg": "Är du säker att du vill ta bort ALL statistik?", - "tokenValidSettingsMsg": "Giltig token! Du kan nu spara 2FA-inställningarna.", - "confirmEnableTwoFAMsg": "Är du säker att du vill aktivera 2FA?", - "confirmDisableTwoFAMsg": "Är du säker att du vill inaktivera 2FA?", - "recurringIntervalMessage": "Kör en gång varje dag | Kör en gång var {0} dagar", - "affectedMonitorsDescription": "Välj övervakare som är påverkade av det nuvarande underhållet", - "affectedStatusPages": "Visa detta underhållsmeddelande på valda statussidor", - "atLeastOneMonitor": "Välj minst en påverkad övervakare", - "Basic Settings": "Grundläggande inställningar", - "dnsPortDescription": "DNS-serverport. Standard är 53. Du kan ändra port när som helst.", - "confirmDeleteTagMsg": "Är du säker att du vill radera denna tagg? Övervakare associerade med denna tagg kommer inte att tas bort.", - "enableGRPCTls": "Tillåt att gRPC-förfrågningar skickas med TLS-anslutning", - "invertKeywordDescription": "Titta om nyckelordet frånvarande istället för närvarande.", - "pushoversounds bike": "Cykel", - "pushoversounds cashregister": "Kassaregister", - "pushoversounds classical": "Klassisk", - "pushoversounds cosmic": "Kosmisk", - "pushoversounds falling": "Fallande", - "pushoversounds gamelan": "Gamelan", - "pushoversounds incoming": "Inkommande", - "pushoversounds intermission": "Paus", - "pushoversounds magic": "Magisk", - "pushoversounds mechanical": "Mekanisk", - "pushoversounds pianobar": "Pianobar", - "pushoversounds siren": "Siren", - "pushoversounds spacealarm": "Rymdalarm", - "pushoversounds climb": "Klättra (lång)", - "pushoversounds persistent": "Beständig (lång)", - "pushoversounds echo": "Pushovereko (lång)", - "pushoversounds updown": "Upp ner (lång)", - "pushoversounds vibrate": "Vibrera endast", - "pushoversounds none": "Ingen (tyst)", - "pushyAPIKey": "Hemlig API-nyckel", - "User Key": "Användarnyckel", - "Device": "Enhet", - "Message Title": "Meddelandetitel", - "Notification Sound": "Notifieringsljud", - "More info on:": "Mer info på: {0}", - "SMS Type": "SMS-typ", - "promosmsLogin": "API-inloggninsnamn", - "promosmsPassword": "API-lösenord", - "apprise": "Apprise (Stödjer 50+ notifieringstjänster)", - "GoogleChat": "Google Chat (Google Workspace endast)", - "backupDescription": "Du kan säkerhetskopiera alla övervakare och notifieringstjänster till en JSON-fil.", - "endpoint": "slutpunkt", - "Read more:": "Lär mer: {0}", - "Status:": "Status: {0}", - "Strategy": "Strategi", - "high": "hög", - "SecretAccessKey": "Accessnyckelshemlighet", - "PhoneNumbers": "Telefonnummer", - "TemplateCode": "Mallkod", - "SignName": "Signaturnamn", - "Bark Group": "Barkgrupp", - "Bark Endpoint": "Barkslutpunkt", - "Bark Sound": "Barkljud", - "WebHookUrl": "Webbhook-URL", - "SecretKey": "Hemlig nyckel", - "For safety, must use secret key": "För säkerhet måste det användas en hemlig nyckel", - "Device Token": "Enhetstoken", - "Platform": "Plattform", - "Huawei": "Huawei", - "High": "Hög", - "Retry": "Försök igen", - "Topic": "Ämne", - "Setup Proxy": "Ställ in proxy", - "Proxy Protocol": "Proxy-protokoll", - "Proxy server has authentication": "Proxy-server har autentisering", - "Channel Name": "Kanalnamn", - "setup a new monitor group": "ställ in en ny övervakningsgrupp", - "openModalTo": "öppna modal till {0}", - "Remove domain": "Ta bort domän '{0}'", - "Icon Emoji": "Ikonemoji", - "apiCredentials": "API-referenser", - "Apprise URL": "Apprise-URL", - "checkPrice": "Kontrollera {0} pris:", - "matrixHomeserverURL": "Hemserver-URL (med http(s):// och valfri port)", - "Internal Room Id": "Internt rums-ID", - "documentation": "dokumentation", - "smtpDkimDomain": "Domännamn", - "smtpDkimKeySelector": "Nyckelväljare", - "smtpDkimPrivateKey": "Privat nyckel", - "smtpDkimHashAlgo": "Hashningsalgoritm (valfritt)", - "do nothing": "gör ingenting", - "alertaEnvironment": "Miljö", - "alertaApiKey": "API-nyckel", - "alertaAlertState": "Larmläge", - "serwersmsAPIPassword": "API-lösenord", - "serwersmsPhoneNumber": "Telefonnummer", - "API Keys": "API-nycklar", - "Expiry": "Utgången", - "Expiry date": "Utgångsdatum", - "Don't expire": "Inget utgångsdatum", - "Continue": "Fortsätt", - "Key Added": "Nyckel tillagd", - "Add API Key": "Lägg till API-nyckel", - "No API Keys": "Inga API-nycklar", - "apiKey-active": "Aktiv", - "apiKey-expired": "Utgången", - "apiKey-inactive": "Inaktiv", - "Expires": "Utgår", - "disableAPIKeyMsg": "Är du säker att du vill inaktivera denna API-nyckel?", - "deleteAPIKeyMsg": "Är du säker att du vill ta bort denna API-nyckel?", - "pagertreeIntegrationUrl": "Integrations-URL", - "pagertreeUrgency": "Brådskande", - "pagertreeSilent": "Tyst", - "pagertreeLow": "Låg", - "pagertreeMedium": "Mellan", - "pagertreeHigh": "Hög", - "pagertreeCritical": "Kritisk", - "ntfyUsernameAndPassword": "Användarnamn och lösenord", - "foundChromiumVersion": "Hittade Chromium/Chrome. Version: {0}", - "Remote Browser not found!": "Fjärrwebbläsare hittades inte!", - "self-hosted container": "själv-hosted container", - "remoteBrowserToggle": "Som standard körs Chromium inuti Uptime Kuma containern.", - "useRemoteBrowser": "Använd en fjärrwebbläsare", - "Saved.": "Sparad.", - "FlashDuty Severity": "Allvarlighetsgrad", - "2faAlreadyEnabled": "2FA är redan aktiverat.", - "2faEnabled": "2FA aktiverat.", - "2faDisabled": "2FA inaktiverat.", - "successAdded": "Lyckades lägga till.", - "successResumed": "Lyckades återuppta.", - "successPaused": "Lyckades pausa.", - "successEdited": "Lyckades redigera.", - "successAuthChangePassword": "Lyckades uppdatera lösenordet.", - "Monitor Group": "Övervakningsgrupp", - "Group": "Grupp", - "showCertificateExpiry": "Visa certifikatets utgångsdatum", - "authUserInactiveOrDeleted": "Användaren är inaktiverad eller borttagen.", - "authInvalidToken": "Ogiltig token.", - "authIncorrectCreds": "Felaktigt användarnamn eller lösenord.", - "deleteRemoteBrowserMessage": "Är du säker att du vill radera denna fjärrwebbläsare för alla övervakare?", - "Browser Screenshot": "Webbläsarskärmdump", - "enableProxyDescription": "Denna proxy påverkar inte övervakarnas förfrågan förräns den är aktiverad. Du kan kontrollera och tillfälligt inaktivera proxyn från alla övervakare genom aktiveringsstatus.", - "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Långtidsaccess-token kan skapas genom att klicka på ditt profilnamn (nedre vänstra) och skrolla till botten och klicka på Skapa token. ", - "Edit Maintenance": "Redigera underhåll", - "pushoversounds bugle": "Bugla", - "Enable TLS": "Aktivera TLS", - "Economy": "Ekonomi", - "Lowcost": "Låg kostnad", - "Gateway Type": "Gatewaytyp", - "You can divide numbers with": "Du kan dela nummer med", - "Base URL": "Bas-URL", - "promosmsAllowLongSMS": "Tillåt långa SMS", - "promosmsPhoneNumber": "Telefonnummer (för polska mottagare kan du skippa riktnummer)", - "Recipient Number": "Mottagarens nummer", - "From Name/Number": "Från namn/nummer", - "Leave blank to use a shared sender number.": "Lämna tomt för att använda ett delat avsändarnummer.", - "smseagleEncoding": "Skicka som unicode", - "smseaglePriority": "Meddelandeprioritet (0-9, standard = 0)", - "onebotGroupMessage": "Grupp", - "onebotPrivateMessage": "Privat", - "onebotUserOrGroupId": "Grupp/användar-ID", - "pushDeerServerDescription": "Lämna tomt för att använda den officiella servern", - "Custom Monitor Type": "Anpassad övervakartyp", - "Google Analytics ID": "Google Analytics-ID", - "Edit Tag": "Redigera tagg", - "Server Address": "Serveradress", - "wayToGetClickSendSMSToken": "Du kan hitta API-användarnamn och API-nyckel från {0} .", - "pagertreeDoNothing": "Gör ingenting", - "lunaseaTarget": "Mål", - "lunaseaDeviceID": "Enhetsid", - "lunaseaUserID": "Användarid", - "ntfyAuthenticationMethod": "Autentiseringsmetod", - "twilioApiKey": "API-nyckel (valfritt)", - "twilioFromNumber": "Från nummer", - "twilioToNumber": "Till nummer", - "Show Clickable Link": "Visa klickbar länk", - "notificationRegional": "Regional", - "cloneOf": "Klon av {0}", - "Proxy Server": "Proxy-server", - "lineDevConsoleTo": "Linjeutvecklarkonsol - {0}", - "aboutIconURL": "Du kan tillhandahålla en länk till en bild i \"Ikon-URL\" för att åsidosätta standard profilbilden. Används inte om Ikonemoji är inställt.", - "backupDescription2": "Notera: historik och händelsedata är inte inkluderat.", - "promosmsTypeFlash": "SMS FLASH - Meddelanden visas automatiskt på mottagande enhet. Begränsad till Polska mottagare.", - "promosmsTypeFull": "SMS Full - Premium nivå av SMS, du kan använda ditt avsändarnamn (du måste registrera namnet först). Pålitligt för varningar.", - "serwersmsSenderName": "SMS-avsändarnamn (registrerat via kundportalen)", - "smseagleGroup": "Telefonboksgruppnamn", - "smseagleContact": "Telefonbokskontaktsnamn", - "Body Encoding": "Body-kodning", - "Badge Label Prefix": "Bricketikettsprefix", - "Badge Preview": "Brickförhandsvisning", - "Badge Label Suffix": "Bricketikettssuffix", - "Search monitored sites": "Sök övervakade sajter", - "Badge Warn Days": "Varningsbricksdagar", - "statusPageSpecialSlugDesc": "Speciell slug {0}: denna sida kommer att visas när ingen slug anges", - "wayToGetLineChannelToken": "Först besök {0}, skapa en leverantör och kanal (Meddelande-API), efter det kan du få en accesstoken för kanalen och användarid från ovanstående menyobjekt.", - "aboutMattermostChannelName": "Du kan åsidosätta standardkanalen som webbhook postar till genom att ange kanalnamnet i \"Kanalnamn\" fältet. Detta behöver vara aktiverad i Mattermost Webbhook inställningar. Ex: #annan-kanal", - "promosmsTypeEco": "SMS ECO - billig men långsam och ofta överbelastad. Begränsad till Polska mottagare.", - "ntfyPriorityHelptextAllEvents": "Alla händelser skickas med högsta prioritet", - "aboutNotifyChannel": "Notifieringskanalen kommer att utlösa en skrivbords eller mobilnotifiering för alla medlemmar i kanalen, oavsett om deras tillgänglighet är aktiv eller borta.", - "ntfyPriorityHelptextAllExceptDown": "Alla händelser är skickade med denna prioritet, utom {0}-händelser, som har en prioritet av {1}", - "settingUpDatabaseMSG": "Ställer in databasen. Detta kan ta ett tag, ha tålamod.", - "promosmsTypeSpeed": "SMS SPEED - Högsta prioritet i system. Väldigt snabb och tillförlitlig, men kostsam (nästan dubbelt mot SMS FULL priset).", - "Badge Down Days": "Nerbricksdagar", - "grpcMethodDescription": "Metodnamn är konverterad till kamelNotation format som sayHello, check, etc.", - "importHandleDescription": "Välj 'Hoppa över existerande' om du vill hoppa över varje övervakare eller notifiering med samma namn. 'Skriv över' kommer att ta bort existerande övervakare och notifieringar.", - "pushoversounds pushover": "Pushover (standard)", - "backupDescription3": "Känslig data som ex. notifieringstokens är inkluderade i exportfilen; vänligen lagra exporten säkert.", - "octopushLogin": "\"Inloggning\" från HTTP API autentiseringsuppgifter i kontrollpanelen", - "octopushAPIKey": "\"API-nyckel\" från HTTP API autentiseringsuppgifter i kontrollpanelen", - "wayToGetKookGuildID": "Slå på 'Utvecklarläge' i Kook-inställningarna och högerklicka på guild för att få dess ID", - "Guild ID": "Guild-ID", - "pushoverDesc1": "Nödprioritet (2) har 30 sekunders timeout mellan försök och löper ut efter 1 timme som standard.", - "octopushTypePremium": "Premium (Snabb - rekommenderas för varningar)", - "octopushTypeLowCost": "Låg kostnad (långsam - blockeras ibland av operatören)", - "Check octopush prices": "Kontrollera octopush priser {0}.", - "octopushSMSSender": "SMS avsändarnamn: 3-11 alfanumeriska tecken och mellanslag (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea enhetsid", - "Free Mobile User Identifier": "Fri mobilanvändaridentifierare", - "Feishu WebHookUrl": "Feishu WebbhookURL", - "signalImportant": "VIKTIGT: Du kan inte blanda grupper och nummer i mottagare!", - "octopushLegacyHint": "Använder du äldre versionen av Octopush (2011-2020) eller den nya versionen?", - "goAlertInfo": "GoAlert är en öppen källkodsapplikation för jouruppringning, automatiserade eskaleringar och notifieringar (som SMS eller röstsamtal). Engagera automatiskt rätt person, den rätta vägen och i rätt tid! {0}", - "goAlertIntegrationKeyInfo": "Få generiska API-integrationsnycklar för tjänsten i formatet \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" vanligtvis värdet av token-parametern för den kopierade URLen.", - "matrixDesc1": "Du kan hitta det interna rumsid:t genom att titta i den avancerade sektionen av rumsinställningarna i din Matrix-klient. Det bör vara liknande !QMdRCpUIfLwsfjxye6:home.server.", - "matrixDesc2": "Det är rekommenderat att du skapar en ny användare och inte använder din egna Matrix-användares accesstoken eftersom det ger full access till ditt konto och alla rum du gått med i. Skapa en ny användare och invitera endast till rummen du vill ska få notifieringen. Du kan komma åt accesstoken genom att köra {0}", - "aboutWebhooks": "Mer information om Webbhooks på: {0}", - "aboutKumaURL": "Om du lämnar Uptime Kuma URL-fältet tomt, kommer den som standard till projektsidan på Github.", - "smtpDkimDesc": "Vänligen hänvisa till Nodemailer DKIM {0} för användning.", - "smtpDkimheaderFieldNames": "Headernycklar att signera (Valfritt)", - "smtpDkimskipFields": "Headernycklar att inte signera (Valfritt)", - "Auto resolve or acknowledged": "Automatisk lösning eller bekräftad", - "auto resolve": "automatiskt bekräftad", - "auto acknowledged": "automatiskt löst", - "alertaRecoverState": "Återställningsstatus", - "serwersmsAPIUser": "API-användarnamn (inkl. webapi_prefix)", - "smseagleToken": "API-accesstoken", - "smseagleUrl": "Din SMSEagle enhetsURL", - "pagertreeResolve": "Autolös", - "Badge Up Color": "Uppbricksfärg", - "aboutChannelName": "Ange kanalnamnet på {0} kanalnamnsfältet om du vill gå förbi webbhook-kanalen. Ex: #annan-kanal", - "wayToGetPagerDutyKey": "Du kan komma åt detta genom att gå till Tjänst -> Tjänstekatalog -> (välj tjänst) -> Integrationer -> Lägg till integration. Här kan du söka efter \"Events API V2\". För mer info {0}", - "Badge Pending Color": "Väntanbricksfärg", - "Badge Down Color": "Nerbricksfärg", - "Badge Maintenance Color": "Underhållsbricksfärg", - "Badge Warn Color": "Varningsbricksfärg", - "Badge Style": "Brickstil", - "Badge value (For Testing only.)": "Brickvärde (endast för prov.)", - "Badge URL": "BrickURL", - "nostrRelays": "Nostr-relän", - "Badge Label Color": "Bricketikettsfärg", - "Free Mobile API Key": "Fri mobil-API-nyckel", - "Proto Service Name": "Proto tjänstenamn", - "Proto Method": "Proto-metod", - "Proto Content": "Proto-innehåll", - "SendKey": "Skickanyckel", - "SMSManager API Docs": "SMSManager API-dokument ", - "promosmsSMSSender": "SMS-avsändarnamn: Förregistrerat namn eller en av standard: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Octopush API Version": "Octopuch API-version", - "Legacy Octopush-DM": "Äldre Octopush-DM", - "ntfy Topic": "ntfy-ämne", - "Server URL should not contain the nfty topic": "Server-URL ska inte innehålla ntfy-ämne", - "onebotHttpAddress": "OneBot HTTP-adress", - "onebotMessageType": "OneBot meddelandetyp", - "onebotSafetyTips": "För säkerhet, måste ange accesstoken", - "PushDeer Server": "PushDeer-server", - "PushDeer Key": "PuchDeer-nyckel", - "wayToGetPagerTreeIntegrationURL": "Efter att du skapat Uptime Kuma integrationen i PagerTree, kopiera endpoint. Se detaljer {0}", - "twilioAccountSID": "Konto-SID", - "Monitor Setting": "{0}s övervakarinställning", - "Show Clickable Link Description": "Om markerad har alla med access till denna statussida även access till övervakarURL.", - "Open Badge Generator": "Öppna brickgenerator", - "Badge Generator": "{0}s brickgenerator", - "Badge Type": "Bricktyp", - "Badge Duration (in hours)": "Brickvaraktighet (i timmar)", - "Badge Label": "Bricketikett", - "Badge Prefix": "Brickvärdeprefix", - "Badge Suffix": "Brickvärdesuffix", - "Badge Color": "Brickfärg", - "monitorToastMessagesLabel": "Övervakar-toastnotifiering", - "wayToGetFlashDutyKey": "Du kan gå till Kanal -> (Välj en kanal) -> Integrationer -> Lägg till ny integrationssidan, lägg till en 'Uptime Kuma' för att få en pushadress, kopiera integrationsnyckeln i adressen. För mer information, besök", - "gamedigGuessPortDescription": "Porten som används av Valve-serverns förfrågningsprotokol kan vara annorlunda från klientporten. Prova detta om övervakaren inte kan kontakta din server.", - "monitorToastMessagesDescription": "Toastnotifieringar för övervakare försvinner efter angiven tid i sekunder. Ange -1 för att inaktivera timeout. Ange 0 för att inkaktivera toastnotifieringar.", - "Mechanism": "Mekanism", - "Pick a SASL Mechanism...": "Välj en SASL-mekanism…", - "Authorization Identity": "Behörighetsidentitet", - "AccessKey Id": "Accessnyckel-ID", - "Secret AccessKey": "Hemlig accessnyckel", - "toastErrorTimeout": "Timeout för felnotifieringar", - "toastSuccessTimeout": "Timeout för lyckadesnotifieringar", - "Enter the list of brokers": "Ange en lista av mäklare", - "Kafka Brokers": "Kafka-mäklare", - "Press Enter to add broker": "Tryck enter för att lägga till mäklare", - "Kafka Topic Name": "Kafka ämnesnamn", - "Kafka Producer Message": "Kafka producentmeddelande", - "Enable Kafka SSL": "Aktivera Kafka SSL", - "Enable Kafka Producer Auto Topic Creation": "Aktivera Kafka producent autoämnesskapande", - "Kafka SASL Options": "Kafka SASL val", - "Request Body": "Förfrågningsbody", - "nostrRelaysHelp": "En relä-URL per rad", - "nostrSender": "Privat avsändarnyckel (nsec)", - "nostrRecipients": "Publik mottagarnyckel (npub)", - "nostrRecipientsHelp": "npub-format, en per rad", - "gamedigGuessPort": "Gamedig: Gissa port", - "twilioAuthToken": "Auth-token / API-nyckelhemlighet", - "What is a Remote Browser?": "Vad är en fjärrläsare?", - "Channel access token (Long-lived)": "Kanalaccess-token (långtids)", - "Your User ID": "Ditt användarID", - "wayToGetHeiiOnCallDetails": "Hur man får Trigger ID och API-nycklar är förklarat i {dokumentationen}", - "documentationOf": "{0} Dokumentation", - "gtxMessagingFromHint": "På mobiltelefoner, dina mottagare ser TPOA visad som avsändare av meddelandet. 11 alfanumeriska tecken är tillåtet, en kortkod, den lokala långkoden eller internationella nummer ({e164}, {e212} or {e214})", - "gtxMessagingApiKeyHint": "Du kan hitta dina API-nycklar i: Mina routningkonton > Visa kontoinformation > API-referenser > REST API (v2.x)", - "From Phone Number / Transmission Path Originating Address (TPOA)": "Från telefonnummer / Transmission Path Originating Address (TPOA)", - "To Phone Number": "TIll telefonnummer", - "gtxMessagingToHint": "Internationellt format med inledande \"0\" ({e164}, {e212} or {e214})", - "Alphanumeric (recommended)": "Alfanumeriskt (rekommenderat)", - "Originator type": "Avsändartyp", - "cellsyntOriginator": "Synligt på mottagarens mobiltelefon som avsändare av meddelandet. Tillåtna värden och funktioner beror på avsändartyp.", - "cellsyntDestination": "Mottagarens telefonnummer i internationellt format med inledande 00 följt av landskod, ex. 00701234567 för SE nummer 070-123 45 67 (max 17 siffror totalt). Max 25000 kommaseparerade mottagare per HTTP-förfrågan.", - "callMeBotGet": "Här kan du generera en slutpunkt för {0}, {1} och {2}. Var uppmärksam på att du kan få en anslutningsbegränsning. Anslutningsbegränsningarna ser ut som: {3}", - "Telephone number": "Telefonnummer", - "Originator": "Avsändare", - "cellsyntOriginatortypeAlphanumeric": "Alfanumerisk sträng (max 11 alfanumeriska tecken). Mottagare kan inte svara på meddelandet.", - "Destination": "Destination", - "Allow Long SMS": "Tillåt långa SMS", - "cellsyntSplitLongMessages": "Dela långa meddelanden i upp till 6 delar. 153 x 6 = 918 tecken.", - "max 15 digits": "max 15 siffor", - "max 11 alphanumeric characters": "max 11 alfanumeriska tecken", - "cellsyntOriginatortypeNumeric": "Numeriskt värde (max 15 siffror) med telefonnummer i internationellt format utan inledande 00 (exempel SE nummer 070-123 45 67 ska anges som 46701234567). Mottagare kan svara på meddelandet.", - "wayToWriteWhapiRecipient": "Telefonnummer med internationellt prefix, men utan plustecken i början ({0}, KontaktID ({1}) eller GruppID ({2}).", - "wayToGetWhapiUrlAndToken": "Du kan hitta API URL och token genom att gå till din föredragna kanal från {0}", - "whapiRecipient": "Telefonnummer / Kontakt ID / Grupp ID", - "API URL": "API URL", - "Mentioning": "Omnämnande", - "Don't mention people": "Omnämn inte människor", - "Mention group": "Omnämn {group}", - "senderSevenIO": "Skickar nummer eller namn", - "receiverSevenIO": "Mottagande nummer", - "receiverInfoSevenIO": "Om det mottagande numret inte är lokaliserat i Tyskland, måste du lägga till landskoden för numret (ex. för landskod 46 från Sverige, använd 46123123123 istället för 0123123123)", - "apiKeySevenIO": "SevenIO api-nyckel", - "wayToGetSevenIOApiKey": "Besök instrumentpanelen under app.seven.io > utvecklare > api-nyckel > den gröna lägg till knappen", - "locally configured mail transfer agent": "lokalt konfigurerad mejlskickningsagent", - "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Endera värdnamnet på servern du vill ansluta till eller {localhost} om du vill använda {local_mta}", - "Host URL": "Värd-URL", - "whatHappensAtForumPost": "Skapa ett nytt foruminlägg. Detta postar inte meddelande i befintliga inlägg. För att posta i befintligt inlägg, använd \"{option}\"", - "mongodbCommandDescription": "Kör ett MongoDB-kommando mot databasen. För information om tillgängliga kommandon, läs i {documentation}", - "Command": "Kommando", - "smspartnerApiurl": "Du kan hitta din API-nyckel på ditt skrivbord {0}", - "smspartnerPhoneNumber": "Telefonnummer", - "smspartnerSenderName": "SMS-avsändarnamn", - "smspartnerPhoneNumberHelptext": "Numret måste vara i internationellt format {0}, {1}. Flera nummer måste vara separerade med {2}", - "smspartnerSenderNameInfo": "Måste vara mellan 3..=11 vanliga tecken", - "Bitrix24 Webhook URL": "Bitrix24 Webbhook URL", - "wayToGetBitrix24Webhook": "Du kan skapa en webbhook genom att följa stegen på {0}", - "bitrix24SupportUserID": "Ange ditt användarID i Bitrix24. Du kan hitta ditt ID från länken genom att gå till användarprofilen.", - "Send to channel": "Skicka till kanal", - "Create new forum post": "Skapa nytt foruminlägg", - "postToExistingThread": "Posta till befintlig tråd / foruminlägg", - "Select message type": "Välj meddelandetyp", - "forumPostName": "Inläggsnamn i forum", - "threadForumPostID": "Tråd / inläggs-ID", - "e.g. {discordThreadID}": "ex. {discordThreadID}", - "Refresh Interval": "Uppdateringsintervall", - "Refresh Interval Description": "Statussidan uppdateras varje {0} sekunder", - "ignoreTLSErrorGeneral": "Ignorera TLS/SSL fel för anslutningen", - "wayToGetDiscordThreadId": "Hitta ett post- / forum-ID är liknande att hitta ett kanal-ID. Läs mer om hur du hittar IDn {0}", - "threemaRecipient": "Mottagare", - "threemaRecipientType": "Mottagartyp", - "threemaRecipientTypeIdentityFormat": "8 tecken", - "threemaRecipientTypePhone": "Telefonnummer", - "threemaRecipientTypePhoneFormat": "E.164, utan inledande +", - "threemaRecipientTypeEmail": "Epostadress", - "threemaSenderIdentity": "Gateway-ID", - "wayToGetThreemaGateway": "Du kan registrera dig för Threema Gateway {0}.", - "threemaRecipientTypeIdentity": "Threema-ID", - "threemaSenderIdentityFormat": "8 tecken, startar oftast med *", - "threemaApiAuthenticationSecret": "Gateway-ID hemlighet", - "threemaBasicModeInfo": "Notera: Denna integration använder Threema Gateway i standardläge (server-baserad kryptering). Mer detaljer kan hittas {0}.", - "apiKeysDisabledMsg": "API-nycklar är inaktiverade för att autentisering är inaktiverad." -} +{ + "languageName": "Svenska", + "checkEverySecond": "Uppdatera var {0} sekund", + "retriesDescription": "Max antal försök innan tjänsten markeras som nere och en notis skickas", + "ignoreTLSError": "Ignorera TLS/SSL-fel för webbsidor med HTTPS", + "upsideDownModeDescription": "Vänd upp och ner på statusen. Om tjänsten är nåbar visas den som NERE.", + "maxRedirectDescription": "Max antal omdirigeringar att följa. Välj 0 för att avaktivera omdirigeringar.", + "acceptedStatusCodesDescription": "Välj statuskoder som räknas som lyckade.", + "passwordNotMatchMsg": "Det bekräftade lösenordet stämmer ej överens.", + "notificationDescription": "Vänligen lägg till en notistjänst till dina övervakare.", + "keywordDescription": "Sök efter nyckelord i ren HTML eller JSON-svar. Sökningen är skiftkänslig.", + "pauseDashboardHome": "Pausa", + "deleteMonitorMsg": "Är du säker på att du vill ta bort den här övervakningen?", + "deleteNotificationMsg": "Är du säker på att du vill ta bort den här notisen för alla övervakare?", + "resolverserverDescription": "Cloudflare är den förvalda servern. Du kan byta resolver när som helst.", + "rrtypeDescription": "Välj den RR-typ du vill övervaka", + "pauseMonitorMsg": "Är du säker på att du vill pausa?", + "Settings": "Inställningar", + "Dashboard": "Infopanel", + "New Update": "Ny uppdatering", + "Language": "Språk", + "Appearance": "Utseende", + "Theme": "Tema", + "General": "Allmänt", + "Version": "Version", + "Check Update On GitHub": "Sök efter uppdatering på GitHub", + "List": "Lista", + "Add": "Lägg till", + "Add New Monitor": "Lägg till ny övervakare", + "Quick Stats": "Snabbstatistik", + "Up": "Uppe", + "Down": "Nere", + "Pending": "Pågående", + "Unknown": "Okänt", + "Pause": "Pausa", + "Name": "Namn", + "Status": "Status", + "DateTime": "Datum & tid", + "Message": "Meddelande", + "No important events": "Inga viktiga händelser", + "Resume": "Återuppta", + "Edit": "Redigera", + "Delete": "Ta bort", + "Current": "Nuvarande", + "Uptime": "Drifttid", + "Cert Exp.": "Certifikat utlöpt.", + "day": "dag | dagar", + "-day": "-dag", + "hour": "timme", + "-hour": "-timme", + "Response": "Svar", + "Ping": "Ping", + "Monitor Type": "Övervakningstyp", + "Keyword": "Nyckelord", + "Friendly Name": "Namn", + "URL": "URL", + "Hostname": "Värdnamn", + "Port": "Port", + "Heartbeat Interval": "Hjärtslagsintervall", + "Retries": "Försök", + "Advanced": "Avancerat", + "Upside Down Mode": "Upp och ner-läge", + "Max. Redirects": "Max antal omdirigeringar", + "Accepted Status Codes": "Tillåtna statuskoder", + "Save": "Spara", + "Notifications": "Notifieringar", + "Not available, please setup.": "Ej tillgänglig, vänligen konfigurera.", + "Setup Notification": "Konfigurera notifieringstjänst", + "Light": "Ljust", + "Dark": "Mörkt", + "Auto": "Automatiskt", + "Theme - Heartbeat Bar": "Tema - Heartbeat-indikator", + "Normal": "Normal", + "Bottom": "Botten", + "None": "Ingen", + "Timezone": "Tidszon", + "Search Engine Visibility": "Synlighet på sökmotorer", + "Allow indexing": "Tillåt indexering", + "Discourage search engines from indexing site": "Hindra sökmotorer från att indexera sidan", + "Change Password": "Byt lösenord", + "Current Password": "Nuvarande lösenord", + "New Password": "Nytt lösenord", + "Repeat New Password": "Upprepa nytt lösenord", + "Update Password": "Uppdatera lösenord", + "Disable Auth": "Avaktivera autentisering", + "Enable Auth": "Aktivera autentisering", + "Logout": "Logga ut", + "Leave": "Lämna", + "I understand, please disable": "Jag förstår, vänligen avaktivera", + "Confirm": "Bekräfta", + "Yes": "Ja", + "No": "Nej", + "Username": "Användarnamn", + "Password": "Lösenord", + "Remember me": "Kom ihåg mig", + "Login": "Logga in", + "No Monitors, please": "Inga övervakare, tack", + "add one": "lägg till en", + "Notification Type": "Notifieringstyp", + "Email": "Epost", + "Test": "Testa", + "Certificate Info": "Certifikatsinfo", + "Resolver Server": "Resolverserver", + "Resource Record Type": "Resource Record-typ", + "Last Result": "Senaste resultat", + "Create your admin account": "Skapa ditt administratörskonto", + "Repeat Password": "Upprepa lösenord", + "respTime": "Svarstid (ms)", + "Specific Monitor Type": "Applikationsspecifik övervakartyp", + "Push URL": "Push URL", + "Passive Monitor Type": "Passiv övervakartyp", + "markdownSupported": "Stödjer markdown-syntax", + "Heartbeat Retry Interval": "Omprövningsintervall", + "needPushEvery": "Hämta denna URL var {0} sekund.", + "pushOptionalParams": "Valfria parametrar: {0}", + "disableauth.message1": "Vill du verkligen {disableAuth}?", + "disable authentication": "avaktivera autentisering", + "disableauth.message2": "Det är designat för när en {intendThirdPartyAuth} såsom Cloudflare Access eller Authelia används framför Uptime Kuma.", + "where you intend to implement third-party authentication": "tredjeparts autentiseringstjänst", + "Please use this option carefully!": "Använd denna funktion varsamt!", + "Import Backup": "Importera säkerhetskopia", + "Affected Monitors": "Påverkade övervakare", + "Start of maintenance": "Påbörja underhåll", + "All Status Pages": "Alla statussidor", + "alertNoFile": "Välj en fil att importera.", + "alertWrongFileType": "Välj en JSON-formaterad fil.", + "Help": "Hjälp", + "Export": "Exportera", + "Import": "Importera", + "Game": "Spel", + "resendEveryXTimes": "Omsänd efter {0} gånger", + "Export Backup": "Exportera säkerhetskopia", + "Schedule maintenance": "Schemalägg underhåll", + "Monitor": "Övervakare | Övervakare", + "Resend Notification if Down X times consecutively": "Sänd notis igen om nere X gånger i rad", + "Maintenance": "Underhåll", + "retryCheckEverySecond": "Ompröva var {0} sekund", + "statusMaintenance": "Underhåll", + "resendDisabled": "Omsändning inaktiverat", + "Pick Affected Monitors...": "Välj påverkade övervakare…", + "Select status pages...": "Välj statussidor…", + "General Monitor Type": "Allmän övervakartyp", + "webhookFormDataDesc": "{multipart} är bra för PHP. JSON kommer att bli analyserat med {decodeFunction}", + "appriseInstalled": "Apprise är installerat.", + "clearDataOlderThan": "Behåll övervakarhistoriksdata i {0} dagar.", + "steamApiKeyDescription": "För att övervaka en Steam Game Server behöver man en Steam Web-API nyckel. Du kan registrera din API nyckel här: ", + "No Monitors": "Inga övervakare", + "proxyDescription": "Proxyservrar måste tilldelas en övervakare för att fungera.", + "setAsDefaultProxyDescription": "Denna proxyserver kommer att aktiveras som standard för nya övervakare. Du kan fortfarande inaktivera proxyserven var för sig övervakare.", + "Content Type": "Innehållstyp", + "webhookAdditionalHeadersDesc": "Ställer in ytterligare headers skickat med webbhooken. Varenda header ska definieras som ett JSON nyckel/värde par.", + "RadiusCallingStationIdDescription": "Kallande enhetsidentifierare", + "Slug": "Slugg", + "Invert Keyword": "Invertera nyckelord", + "Degraded Service": "Försämrad tjänst", + "Request Timeout": "Request-timeout", + "timeoutAfter": "Timeout efter {0} sekunder", + "styleElapsedTime": "Förfluten tid under heartbeat-indikatorn", + "styleElapsedTimeShowNoLine": "Visa (utan linje)", + "styleElapsedTimeShowWithLine": "Visa (med linje)", + "Create": "Skapa", + "Clear Data": "Radera data", + "Auto Get": "Hämta automatiskt", + "Overwrite": "Skriv över", + "Options": "Alternativ", + "Verify Token": "Verifiera token", + "Enable 2FA": "Aktivera 2FA", + "Disable 2FA": "Inaktivera 2FA", + "2FA Settings": "2FA inställningar", + "Two Factor Authentication": "Tvåfaktorsautentisering", + "filterActive": "Aktiv", + "filterActivePaused": "Pausad", + "Inactive": "Inaktiv", + "Setup 2FA": "Ställ in 2FA", + "Clear all statistics": "Rensa all statistik", + "Skip existing": "Hoppa över existerande", + "Keep both": "Behåll båda", + "Token": "Token", + "notAvailableShort": "N/A", + "Apply on all existing monitors": "Applicera på alla existerande övervakare", + "Heartbeats": "Hjärtslag", + "Show URI": "Visa URI", + "color": "Färg", + "value (optional)": "Värde (valfritt)", + "Gray": "Grå", + "Tags": "Taggar", + "Tag with this name already exist.": "Tagg med detta namn finns redan.", + "Red": "Röd", + "Orange": "Orange", + "Green": "Grön", + "Blue": "Blå", + "Indigo": "Indigoblå", + "Purple": "Lila", + "Pink": "Rosa", + "Custom": "Anpassad", + "Search...": "Sök…", + "Avg. Ping": "Pingmedelvärde", + "Tag with this value already exist.": "Tagg med detta värde finns redan.", + "Avg. Response": "Responsmedelvärde", + "Entry Page": "Ingångssida", + "statusPageRefreshIn": "Uppdaterar om: {0}", + "No Services": "Inga tjänster", + "All Systems Operational": "Alla system i drift", + "Partially Degraded Service": "Delvis försämrade tjänster", + "Add Group": "Lägg till grupp", + "Add New Tag": "Lägg till ny tagg", + "Add New below or Select...": "Lägg till ny under eller välj…", + "Add a monitor": "Lägg till en övervakare", + "Edit Status Page": "Hantera statussida", + "Status Page": "Statussida", + "Status Pages": "Statussidor", + "Go to Dashboard": "Till instrumentpanel", + "here": "här", + "Required": "Nödvändig", + "webhookJsonDesc": "{0} är bra för moderna HTTP servrar till exempel Express.js", + "webhookCustomBodyDesc": "Definiera en anpassad HTTP Body till den request. Mall variabler {msg}, {heartbeat}, {monitor} accepteras.", + "webhookAdditionalHeadersTitle": "Ytterligare headers", + "webhookBodyPresetOption": "Förinställning - {0}", + "defaultNotificationName": "Min {notification} varna ({number})", + "webhookBodyCustomOption": "Anpassad body", + "Webhook URL": "Webbhook URL", + "Application Token": "Applikationstoken", + "Server URL": "Server URL", + "Priority": "Prioritet", + "emojiCheatSheet": "Emoji fusklapp: {0}", + "Read more": "Läs mer", + "appriseNotInstalled": "Apprise är inte installerat. {0}", + "Method": "Metod", + "Body": "Body", + "Headers": "Headers", + "HeadersInvalidFormat": "Requestheaders är inte giltig JSON: ", + "BodyInvalidFormat": "Requestens body är inte giltig JSON: ", + "Monitor History": "Övervakarhistorik", + "PasswordsDoNotMatch": "Lösenorden matchar inte.", + "records": "transaktion", + "One record": "En transaktion", + "Current User": "Nuvarande användare", + "topic": "Ämne", + "topicExplanation": "MQTT-ämne att övervaka", + "successMessageExplanation": "MQTT meddelande som ska anses vara framgång", + "successMessage": "Framgång Meddelande", + "recent": "Nyligen", + "Done": "Klar", + "Info": "Info", + "Security": "Säkerhet", + "Steam API Key": "Steam API Nyckel", + "Shrink Database": "Krymp databas", + "Pick a RR-Type...": "Välj en RR-Typ…", + "Pick Accepted Status Codes...": "Välj accepterade statuskoder…", + "Default": "Standard", + "HTTP Options": "HTTP-alternativ", + "Create Incident": "Skapa incident", + "Title": "Titel", + "Content": "Innehåll", + "Style": "Stil", + "info": "info", + "Post URL": "Post URL", + "PushUrl": "Push URL", + "danger": "risk", + "error": "fel", + "critical": "kritisk", + "primary": "primär", + "light": "ljus", + "dark": "mörk", + "Post": "Post", + "Please input title and content": "Vänligen lägg till titel och innehåll", + "Created": "Skapad", + "Last Updated": "Senaste uppdaterad", + "Switch to Light Theme": "Byt till ljust tema", + "Switch to Dark Theme": "Byt till mörkt tema", + "Show Tags": "Visa taggar", + "Hide Tags": "Göm taggar", + "Description": "Beskrivning", + "No monitors available.": "Inga övervakare tillgängliga.", + "Add one": "Lägg till en", + "Untitled Group": "Namnlös grupp", + "Services": "Tjänster", + "Discard": "Förkasta", + "Cancel": "Avbryt", + "Select": "Välj", + "selectedMonitorCount": "Valt: {0}", + "Check/Uncheck": "Markera/Avmarkera", + "Powered by": "Drivs av", + "Customize": "Anpassa", + "Custom Footer": "Anpassad sidfot", + "Custom CSS": "Anpassad CSS", + "deleteStatusPageMsg": "Är du säkert att du vill radera denna statussida?", + "Proxies": "Proxyservrar", + "default": "Standard", + "enabled": "Aktiverad", + "setAsDefault": "Ange som standard", + "deleteProxyMsg": "Är du säkert att du vill radera denna proxyserver för alla övervakare?", + "Certificate Chain": "Certifikatkedja", + "Valid": "Giltig", + "Invalid": "Ogiltig", + "User": "Användare", + "Installed": "Installerat", + "Not installed": "Inte installerat", + "Running": "Körs", + "Not running": "Körs inte", + "Remove Token": "Ta bort token", + "Start": "Starta", + "Stop": "Stoppa", + "Add New Status Page": "Lägg till ny statussida", + "Accept characters:": "Acceptera tecken:", + "Unpin": "Ta bort fastnålat", + "startOrEndWithOnly": "Börja eller sluta med {0} endast", + "No consecutive dashes": "Inga streck i följd", + "Next": "Nästa", + "The slug is already taken. Please choose another slug.": "Sluggen är upptagen. Vänligen välj en annan slugg.", + "No Proxy": "Ingen proxyserver", + "Authentication": "Autentisering", + "HTTP Basic Auth": "HTTP Basic-auth", + "New Status Page": "Ny statussida", + "Page Not Found": "Sidan hittades inte", + "Reverse Proxy": "Omvänd proxyserver", + "Backup": "Säkerhetskopia", + "About": "Om", + "wayToGetCloudflaredURL": "(Ladda ned cloudflared från {0})", + "cloudflareWebsite": "Cloudflare webbsida", + "Message:": "Meddelande:", + "Don't know how to get the token? Please read the guide:": "Vet inte hur man får tag i en token? Vänligen läs guiden:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Den nuvarande anslutningen kan kopplas bort om du ansluter via Cloudflare Tunnel. Är du säkert du vill avsluta den? Skriv ditt nuvarande lösenord för att bekräfta.", + "HTTP Headers": "HTTP-headers", + "Trust Proxy": "Lita på proxyserver", + "Other Software": "Annan programvara", + "For example: nginx, Apache and Traefik.": "Till exempel: nginx, Apache och Traefik.", + "Please read": "Vänligen läs", + "Subject:": "Ämne:", + "Valid To:": "Giltig till:", + "Days Remaining:": "Dagar kvar:", + "Fingerprint:": "Fingeravtryck:", + "No status pages": "Inga statussidor", + "Proxy": "Proxyserver", + "Date Created": "Skapat datum", + "Footer Text": "Sidfotstext", + "Show Powered By": "Visa \"Drivs av\"", + "Domain Names": "Domännamn", + "signedInDisp": "Inloggad som {0}", + "signedInDispDisabled": "Auth inaktiverad.", + "RadiusSecret": "Radius-hemlighet", + "RadiusSecretDescription": "Delad hemlighet mellan klient och server", + "RadiusCalledStationId": "Avbrutet Stationsid", + "RadiusCalledStationIdDescription": "Enhetsidentifierare", + "RadiusCallingStationId": "Uppringande stationsid", + "Certificate Expiry Notification": "Notifiering om certifikatets utgångsdatum", + "Domain Name Expiry Notification": "Notifiering om förfallodatum på domännamn", + "API Key": "API-nyckel", + "API Username": "API-användarnamn", + "Show update if available": "Visa uppdatering om tillgänglig", + "Also check beta release": "Kolla också betaversioner", + "Events": "Händelser", + "Active": "Aktiv", + "statusPageNothing": "Ingenting här, vänligen lägg till en grupp eller en övervakare.", + "warning": "varning", + "Issuer:": "Utfärdare:", + "Expected Value": "Förväntat värde", + "Primary Base URL": "Primär bas-URL", + "Home": "Hem", + "Cannot connect to the socket server": "Kan inte ansluta till socketservern", + "Reconnecting...": "Återansluter...", + "Json Query": "Json-fråga", + "Default enabled": "Standard aktiverad", + "pushViewCode": "Hur använda Pushövervakare? (Visa kod)", + "Steam Game Server": "Steam Spel Server", + "Docker Container": "Docker-container", + "setupDatabaseChooseDatabase": "Vilken databas vill du använda?", + "dbName": "Databasnamn", + "What you can try:": "Vad du kan försöka:", + "Container Name / ID": "Containernamn / ID", + "Docker Host": "Dockervärd", + "Docker Hosts": "Dockervärdar", + "Domain": "Domän", + "Most likely causes:": "Störst troliga anledningar:", + "Coming Soon": "Kommer snart", + "liquidIntroduction": "Mallar är uppnådda med Liquids mallspråk. Hänvisa till [0] för användningsinstruktioner. Tillgängliga variabler är:", + "emailTemplateStatus": "Status", + "templateHeartbeatJSON": "objekt beskrivande hjärtslag", + "templateLimitedToUpDownCertNotifications": "Endast tillgänglig för UPP/NER/Certifikat giltigt notifieringar", + "successKeyword": "Nyckelord för lyckat", + "successKeywordExplanation": "MQTT-nyckelord som anses lyckade", + "cronExpression": "Cronuttryck", + "invalidCronExpression": "Ogiltigt cronuttryck: {0}", + "backupRecommend": "Vänligen säkerhetskopiera volymen eller mappen (./data/) direkt istället.", + "disableCloudflaredNoAuthMsg": "Du är i Auth-läge, ett lösenord krävs inte.", + "setupDatabaseEmbeddedMariaDB": "Du behöver inte ställa in någonting. Denna dockeravbild har inbyggd och konfigurerade MariaDB automatiskt. Uptime Kuma kommer att ansluta till databasen via en unixsocket.", + "setupDatabaseMariaDB": "Anslut till en extern MariaDB databas. Du måste ange anslutningsinformation till databasen.", + "setupDatabaseSQLite": "En enkel databasfil, rekommenderas för småskaliga installationer. Före v2.0.0, använde Uptime Kuma SQLite som standarddatabas.", + "Reset Token": "Återställ token", + "Workstation": "Arbetsstation", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Packet Size": "Paketstorlek", + "Bot Token": "Bott-token", + "telegramSendSilently": "Skicka tyst", + "telegramMessageThreadID": "(Valfritt) Meddelandetrådsid", + "Chat ID": "Chatt-ID", + "deleteDockerHostMsg": "Är du säker att du vill ta bort denna dockervärd för alla övervakare?", + "DockerHostRequired": "Vänligen ange Dockervärd för denna övervakare.", + "wayToGetTelegramToken": "Du kan få en token från {0}.", + "pushOthers": "Andra", + "programmingLanguages": "Programmeringsspråk", + "templateMsg": "meddelande i notifieringen", + "templateMonitorJSON": "objekt beskrivande övervakare", + "templateLimitedToUpDownNotifications": "endast tillgänglig för UPP/NER notifieringar", + "Examples": "Exempel", + "Using a Reverse Proxy?": "Används omvänd proxy?", + "Query": "Fråga", + "Connection Type": "Anslutningstyp", + "YOUR BOT TOKEN HERE": "DIN BOTT-TOKEN HÄR", + "or": "eller", + "Optional": "Valfri", + "Event data:": "Händelsedata:", + "Trigger type:": "Utlösningstyp:", + "Automations can optionally be triggered in Home Assistant:": "Automationer kan valfritt utlösas i Home Assistant:", + "default: notify all devices": "standard: notifiera alla enheter", + "Notification Service": "Notifieringstjänst", + "Home Assistant URL": "Home Assistant-URL", + "wayToGetLineNotifyToken": "Du kan få en åtkomststoken från {0}", + "telegramProtectContent": "Skydda vidarebefordring/sparning", + "weekdayShortWed": "Ons", + "weekdayShortTue": "Tis", + "weekdayShortMon": "Mån", + "weekdayShortSun": "Sön", + "weekdayShortSat": "Lör", + "weekdayShortFri": "Fre", + "weekdayShortThu": "Tors", + "cronSchedule": "Schema: ", + "endDateTime": "Slutdatum/tid", + "startDateTime": "Startdatum/tid", + "sameAsServerTimezone": "Samma som serverns tidszon", + "warningTimezone": "Den använder serverns tidszon", + "strategyManual": "Aktivera/Inaktivera manuellt", + "Recurring": "Återkommande", + "Event type:": "Händelsetyp:", + "recurringInterval": "Intervall", + "emailCustomSubject": "Anpassat ämne", + "emailCustomisableContent": "Anpassningsbart innehåll", + "smtpLiquidIntroduction": "Följande två fält är mallbara via Liquid templating Language. Vänligen referera till {0} för användningsinstruktioner. Detta är dom tillgängliga variablerna:", + "leave blank for default subject": "lämna blankt för standardämne", + "emailCustomBody": "Anpassat meddelande", + "Recipients": "Mottagare", + "twoFAVerifyLabel": "Vänligen ange din token för att verifiera 2FA:", + "pushoversounds tugboat": "Bogserbåt", + "pushoversounds alien": "Utomjordingsalarm (lång)", + "AccessKeyId": "Accessnyckel-ID", + "Uptime Kuma URL": "Uptime Kuma URL", + "Notify Channel": "Notifieringskanal", + "smseagleRecipientType": "Mottagartyp", + "smseagleTo": "Telefonnummer", + "smseagleRecipient": "Mottagare (flera måste separeras med komma)", + "clearEventsMsg": "Är du säker att du vill ta bort alla händelser för denna övervakare?", + "successDisabled": "Inaktivering lyckades.", + "confirmImportMsg": "Är du säker på att du vill importera säkerhetskopian? Verifiera att du valt korrekta importeringsval.", + "remoteBrowsersDescription": "Fjärrwebbläsare är ett alternativ istället för att köra Chromium lokalt. Ställ in en tjänst liknande browserless.io eller anslut till din egna", + "pushyToken": "Enhetstoken", + "successDeleted": "Lyckades ta bort.", + "Enable DNS Cache": "(Utfasad) Aktivera DNS-cache för HTTP(s) övervakare", + "enableNSCD": "Aktivera NSCD (Name Service Cache Daemon) för att cacha alla DNS-förfrågningar", + "chromeExecutable": "Chrome/Chromium körbar fil", + "chromeExecutableAutoDetect": "Autodetektera", + "pushoverMessageTtl": "Meddelande TTL (sekunder)", + "Example:": "Exempel: {0}", + "Sms template must contain parameters: ": "SMS-mall måste innehålla dessa parametrar: ", + "WeCom Bot Key": "WeCom-bottsnyckel", + "Add a domain": "Lägg till en domän", + "smtpDkimSettings": "DKIM-inställningar", + "Line Developers Console": "Linjeutvecklarkonsol", + "infiniteRetention": "Ange 0 för oändlig kvarhållningsperiod.", + "enableDefaultNotificationDescription": "Denna notifiering kommer att vara aktiverad som standard för nya övervakere. Du kan inaktivera notifieringen separat för varje övervakare.", + "wayToGetKookBotToken": "Skapa applikation och få din bott-token vid {0}", + "alertaApiEndpoint": "API-slutpunkt", + "Learn More": "Läs mer", + "Add Another": "Lägg till en annan", + "apiKeyAddedMsg": "Din API-nyckel har lagts till. Vänligen notera den för detta visas inte igen.", + "octopushPhoneNumber": "Telefonnummer (int. format, ex: +33612345678) ", + "noOrBadCertificate": "Inget/ogiltigt certifikat", + "successBackupRestored": "Lyckades återställa säkerhetskopia.", + "GrafanaOncallUrl": "Grafana OnCall-URL", + "Maintenance Time Window of a Day": "Underhållsfönster-tid på dagen", + "Effective Date Range": "Giltigt datumintervall (valfritt)", + "Enable": "Aktivera", + "Disable": "Inaktivera", + "Schedule Maintenance": "Schemalagt underhåll", + "Integration Key": "Integreringsnyckel", + "Remote Browsers": "Fjärrwebbläsare", + "Remote Browser": "Fjärrwebbläsare", + "Add a Remote Browser": "Lägg till en fjärrwebbläsare", + "Check how to config it for WebSocket": "Kontrollera hur man konfigurerar den för webbsocket", + "The resource is no longer available.": "Resursen är inte längre tillgänglig.", + "Connection String": "Anslutningssträng", + "wayToCheckSignalURL": "Du kan kontrollera denna URL för att visa hur man sätter upp en:", + "pushoverDesc2": "Om du vill skicka notifieringar till andra enheter, fyll i enhetsfältet.", + "Generate": "Generera", + "noDockerHostMsg": "Inte tillgängligt. Ställ in en dockervärd först.", + "tailscalePingWarning": "För att använda Tailscale Ping-övervakare, måste du installera Uptime Kuma utan docker och också installera Tailscale-klienten på din server.", + "trustProxyDescription": "Lita på 'X-Forwarded-*' headers. Om du vill få den korrekta IP-adressen för klienten och Uptime Kuma är bakom en proxy såsom Nginx eller Apache, måste du aktivera detta.", + "statusPageMaintenanceEndDate": "Slut", + "IconUrl": "Ikon-URL", + "Single Maintenance Window": "Ensamt underhållsfönster", + "maintenanceStatus-under-maintenance": "Underhåll pågår", + "maintenanceStatus-inactive": "Inaktiv", + "maintenanceStatus-scheduled": "Schemalagd", + "maintenanceStatus-ended": "Slutade", + "maintenanceStatus-unknown": "Okänd", + "Display Timezone": "Visa tidszon", + "Server Timezone": "Server-tidszon", + "smtpBCC": "Hemlig kopia", + "smtpCC": "Kopia", + "Number": "Nummer", + "To Email": "Till epost", + "emailTemplateMonitorJSON": "objekt som beskriver övervakaren", + "emailTemplateHeartbeatJSON": "objekt som beskriver hjärtslaget", + "emailTemplateMsg": "meddelande i notifieringen", + "emailTemplateLimitedToUpDownNotification": "endast tillgängligt för UPP/NER hjärtslag, annars noll", + "Discord Webhook URL": "Discord webbhook-URL", + "wayToGetDiscordURL": "Du kan hitta detta genom att gå till Serverinställningar -> Integrationer -> Visa webbhocks -> Ny webbhook", + "Bot Display Name": "Bott-visningsnamn", + "dataRetentionTimeError": "Kvarhållningsperiod måste vara större än 0", + "Integration URL": "Integrerings-URL", + "Close": "Stäng", + "Session Token": "Sessionstoken", + "noGroupMonitorMsg": "Inte tillgängligt. Skapa en gruppövervakare först.", + "successEnabled": "Aktivering lyckades.", + "tagNotFound": "Tagg hittades inte.", + "Bark API Version": "Bark API-version", + "Add a new expiry notification day": "Lägg till ett ny dag för notifiering av utgångsdatum", + "Remove the expiry notification": "Ta bort notifieringsdag för utgångsdatum", + "There might be a typing error in the address.": "Det kan vara ett stavfel i adressen.", + "Retype the address.": "Skriv om adressen.", + "Go back to the previous page.": "Gå tillbaka till föregående sida.", + "settingsCertificateExpiry": "TLS-certifikatsutgångsdatum", + "certificationExpiryDescription": "HTTPS-övervakare utlöser en notifiering när TLS-certifikatet löper ut om:", + "Setup Docker Host": "Ställ in dockervärd", + "Docker Daemon": "Docker-daemon", + "telegramSendSilentlyDescription": "Skickar meddelandet tyst. Användare kommer att få en notifiering utan ljud.", + "telegramMessageThreadIDDescription": "Valfri unik identifierare för meddelandets tråd (ämne) på forumet; endast för forum-supergrupper", + "telegramProtectContentDescription": "Om aktiverat kommer bott-meddelanden i Telegram att vara skyddade från vidarebefordring och sparande.", + "supportTelegramChatID": "Stöd direktchatt / grupp / kanalens chatt-id", + "wayToGetTelegramChatID": "Du kan se ditt chatt-id genom att skicka ett meddelande till boten och besöka denna URL för att visa chat_id:", + "chatIDNotFound": "Chatt-id hittade inte; vänligen skicka ett meddelande till den här botten först", + "Long-Lived Access Token": "Långtidsaccess-token", + "Frontend Version": "Frontend-version", + "Frontend Version do not match backend version!": "Frontend-version matchar inte backend-version!", + "backupOutdatedWarning": "Avskrivet: Eftersom en massa funktioner har lagts till och denna säkerhetskopieringsfunktion är lite ounderhållen, kan det inte generera eller återställa en komplett säkerhetskopia.", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "En lista av notifieringstjänster kan hittas i Home Assistant under \"Utvecklarverktyg > Tjänster\", sök efter notifiering för att hitta din enhet/telefon-namn.", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Välj en åtgärd, till exempel byt scen till en där en RGB-lampa är röd.", + "emailTemplateHostnameOrURL": "Värdnamn eller URL", + "From Email": "Från epost", + "dayOfMonth": "Dag i månad", + "dayOfWeek": "Dag i vecka", + "lastDay": "Sista dagen", + "lastDay1": "Sista dagen i månaden", + "lastDay2": "2a sista dagen i månaden", + "lastDay3": "3e sista dagen i månaden", + "lastDay4": "4e sista dagen i månaden", + "No Maintenance": "Inget underhåll", + "pauseMaintenanceMsg": "Är du säker att du vill pausa?", + "chromeExecutableDescription": "Docker-användare, om Chromium inte är installerat kommer det att dröja ett par minuter att installera innan testresultatet visas. Det tar 1GB i diskutrymme.", + "dnsCacheDescription": "Det kan misslyckas i några IPv6-miljöer, inaktivera det om du stöter på några problem.", + "Date and Time": "Datum och tid", + "DateTime Range": "Datum/tid-intervall", + "loadingError": "Kan inte hämta data, vänligen försök senare.", + "install": "Installera", + "installing": "Installerar", + "uninstall": "Avinstallera", + "uninstalling": "Avinstallerar", + "confirmUninstallPlugin": "Är du säker på att du vill avinstallera detta tillägg?", + "plugin": "Tillägg | Tillägg", + "Clone Monitor": "Klona övervakare", + "Clone": "Klona", + "smtp": "Epost (SMTP)", + "secureOptionNone": "Ingen /STARTTLS (25,587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Ignorera TLS-fel", + "leave blank for default body": "lämna blankt för standardmeddelande", + "emailTemplateServiceName": "Tjänstenamn", + "Prefix Custom Message": "Anpassat meddelandeprefix", + "Hello @everyone is...": "Hej {'@'}alla är…", + "wayToGetTeamsURL": "Du kan lära dig hur man skapar en webbhook-URL {0}.", + "wayToGetZohoCliqURL": "Du kan lära dig hur man skapar en webbhook-URL {0}.", + "needSignalAPI": "Du måste ha en signal-klient med REST API.", + "Access Token": "Åtkomsttoken", + "Channel access token": "Kanalåtkomststoken", + "User ID": "Användarid", + "Messaging API": "Meddelandeapi", + "Icon URL": "Ikon-URL", + "deleteMaintenanceMsg": "Är du säker att du vill ta bort detta underhåll?", + "clearHeartbeatsMsg": "Är du säker att du vill ta bort alla hjärtslag för denna övervakare?", + "confirmClearStatisticsMsg": "Är du säker att du vill ta bort ALL statistik?", + "tokenValidSettingsMsg": "Giltig token! Du kan nu spara 2FA-inställningarna.", + "confirmEnableTwoFAMsg": "Är du säker att du vill aktivera 2FA?", + "confirmDisableTwoFAMsg": "Är du säker att du vill inaktivera 2FA?", + "recurringIntervalMessage": "Kör en gång varje dag | Kör en gång var {0} dagar", + "affectedMonitorsDescription": "Välj övervakare som är påverkade av det nuvarande underhållet", + "affectedStatusPages": "Visa detta underhållsmeddelande på valda statussidor", + "atLeastOneMonitor": "Välj minst en påverkad övervakare", + "Basic Settings": "Grundläggande inställningar", + "dnsPortDescription": "DNS-serverport. Standard är 53. Du kan ändra port när som helst.", + "confirmDeleteTagMsg": "Är du säker att du vill radera denna tagg? Övervakare associerade med denna tagg kommer inte att tas bort.", + "enableGRPCTls": "Tillåt att gRPC-förfrågningar skickas med TLS-anslutning", + "invertKeywordDescription": "Titta om nyckelordet frånvarande istället för närvarande.", + "pushoversounds bike": "Cykel", + "pushoversounds cashregister": "Kassaregister", + "pushoversounds classical": "Klassisk", + "pushoversounds cosmic": "Kosmisk", + "pushoversounds falling": "Fallande", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Inkommande", + "pushoversounds intermission": "Paus", + "pushoversounds magic": "Magisk", + "pushoversounds mechanical": "Mekanisk", + "pushoversounds pianobar": "Pianobar", + "pushoversounds siren": "Siren", + "pushoversounds spacealarm": "Rymdalarm", + "pushoversounds climb": "Klättra (lång)", + "pushoversounds persistent": "Beständig (lång)", + "pushoversounds echo": "Pushovereko (lång)", + "pushoversounds updown": "Upp ner (lång)", + "pushoversounds vibrate": "Vibrera endast", + "pushoversounds none": "Ingen (tyst)", + "pushyAPIKey": "Hemlig API-nyckel", + "User Key": "Användarnyckel", + "Device": "Enhet", + "Message Title": "Meddelandetitel", + "Notification Sound": "Notifieringsljud", + "More info on:": "Mer info på: {0}", + "SMS Type": "SMS-typ", + "promosmsLogin": "API-inloggninsnamn", + "promosmsPassword": "API-lösenord", + "apprise": "Apprise (Stödjer 50+ notifieringstjänster)", + "GoogleChat": "Google Chat (Google Workspace endast)", + "backupDescription": "Du kan säkerhetskopiera alla övervakare och notifieringstjänster till en JSON-fil.", + "endpoint": "slutpunkt", + "Read more:": "Lär mer: {0}", + "Status:": "Status: {0}", + "Strategy": "Strategi", + "high": "hög", + "SecretAccessKey": "Accessnyckelshemlighet", + "PhoneNumbers": "Telefonnummer", + "TemplateCode": "Mallkod", + "SignName": "Signaturnamn", + "Bark Group": "Barkgrupp", + "Bark Endpoint": "Barkslutpunkt", + "Bark Sound": "Barkljud", + "WebHookUrl": "Webbhook-URL", + "SecretKey": "Hemlig nyckel", + "For safety, must use secret key": "För säkerhet måste det användas en hemlig nyckel", + "Device Token": "Enhetstoken", + "Platform": "Plattform", + "Huawei": "Huawei", + "High": "Hög", + "Retry": "Försök igen", + "Topic": "Ämne", + "Setup Proxy": "Ställ in proxy", + "Proxy Protocol": "Proxy-protokoll", + "Proxy server has authentication": "Proxy-server har autentisering", + "Channel Name": "Kanalnamn", + "setup a new monitor group": "ställ in en ny övervakningsgrupp", + "openModalTo": "öppna modal till {0}", + "Remove domain": "Ta bort domän '{0}'", + "Icon Emoji": "Ikonemoji", + "apiCredentials": "API-referenser", + "Apprise URL": "Apprise-URL", + "checkPrice": "Kontrollera {0} pris:", + "matrixHomeserverURL": "Hemserver-URL (med http(s):// och valfri port)", + "Internal Room Id": "Internt rums-ID", + "documentation": "dokumentation", + "smtpDkimDomain": "Domännamn", + "smtpDkimKeySelector": "Nyckelväljare", + "smtpDkimPrivateKey": "Privat nyckel", + "smtpDkimHashAlgo": "Hashningsalgoritm (valfritt)", + "do nothing": "gör ingenting", + "alertaEnvironment": "Miljö", + "alertaApiKey": "API-nyckel", + "alertaAlertState": "Larmläge", + "serwersmsAPIPassword": "API-lösenord", + "serwersmsPhoneNumber": "Telefonnummer", + "API Keys": "API-nycklar", + "Expiry": "Utgången", + "Expiry date": "Utgångsdatum", + "Don't expire": "Inget utgångsdatum", + "Continue": "Fortsätt", + "Key Added": "Nyckel tillagd", + "Add API Key": "Lägg till API-nyckel", + "No API Keys": "Inga API-nycklar", + "apiKey-active": "Aktiv", + "apiKey-expired": "Utgången", + "apiKey-inactive": "Inaktiv", + "Expires": "Utgår", + "disableAPIKeyMsg": "Är du säker att du vill inaktivera denna API-nyckel?", + "deleteAPIKeyMsg": "Är du säker att du vill ta bort denna API-nyckel?", + "pagertreeIntegrationUrl": "Integrations-URL", + "pagertreeUrgency": "Brådskande", + "pagertreeSilent": "Tyst", + "pagertreeLow": "Låg", + "pagertreeMedium": "Mellan", + "pagertreeHigh": "Hög", + "pagertreeCritical": "Kritisk", + "ntfyUsernameAndPassword": "Användarnamn och lösenord", + "foundChromiumVersion": "Hittade Chromium/Chrome. Version: {0}", + "Remote Browser not found!": "Fjärrwebbläsare hittades inte!", + "self-hosted container": "själv-hosted container", + "remoteBrowserToggle": "Som standard körs Chromium inuti Uptime Kuma containern.", + "useRemoteBrowser": "Använd en fjärrwebbläsare", + "Saved.": "Sparad.", + "FlashDuty Severity": "Allvarlighetsgrad", + "2faAlreadyEnabled": "2FA är redan aktiverat.", + "2faEnabled": "2FA aktiverat.", + "2faDisabled": "2FA inaktiverat.", + "successAdded": "Lyckades lägga till.", + "successResumed": "Lyckades återuppta.", + "successPaused": "Lyckades pausa.", + "successEdited": "Lyckades redigera.", + "successAuthChangePassword": "Lyckades uppdatera lösenordet.", + "Monitor Group": "Övervakningsgrupp", + "Group": "Grupp", + "showCertificateExpiry": "Visa certifikatets utgångsdatum", + "authUserInactiveOrDeleted": "Användaren är inaktiverad eller borttagen.", + "authInvalidToken": "Ogiltig token.", + "authIncorrectCreds": "Felaktigt användarnamn eller lösenord.", + "deleteRemoteBrowserMessage": "Är du säker att du vill radera denna fjärrwebbläsare för alla övervakare?", + "Browser Screenshot": "Webbläsarskärmdump", + "enableProxyDescription": "Denna proxy påverkar inte övervakarnas förfrågan förräns den är aktiverad. Du kan kontrollera och tillfälligt inaktivera proxyn från alla övervakare genom aktiveringsstatus.", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Långtidsaccess-token kan skapas genom att klicka på ditt profilnamn (nedre vänstra) och skrolla till botten och klicka på Skapa token. ", + "Edit Maintenance": "Redigera underhåll", + "pushoversounds bugle": "Bugla", + "Enable TLS": "Aktivera TLS", + "Economy": "Ekonomi", + "Lowcost": "Låg kostnad", + "Gateway Type": "Gatewaytyp", + "You can divide numbers with": "Du kan dela nummer med", + "Base URL": "Bas-URL", + "promosmsAllowLongSMS": "Tillåt långa SMS", + "promosmsPhoneNumber": "Telefonnummer (för polska mottagare kan du skippa riktnummer)", + "Recipient Number": "Mottagarens nummer", + "From Name/Number": "Från namn/nummer", + "Leave blank to use a shared sender number.": "Lämna tomt för att använda ett delat avsändarnummer.", + "smseagleEncoding": "Skicka som unicode", + "smseaglePriority": "Meddelandeprioritet (0-9, standard = 0)", + "onebotGroupMessage": "Grupp", + "onebotPrivateMessage": "Privat", + "onebotUserOrGroupId": "Grupp/användar-ID", + "pushDeerServerDescription": "Lämna tomt för att använda den officiella servern", + "Custom Monitor Type": "Anpassad övervakartyp", + "Google Analytics ID": "Google Analytics-ID", + "Edit Tag": "Redigera tagg", + "Server Address": "Serveradress", + "wayToGetClickSendSMSToken": "Du kan hitta API-användarnamn och API-nyckel från {0} .", + "pagertreeDoNothing": "Gör ingenting", + "lunaseaTarget": "Mål", + "lunaseaDeviceID": "Enhetsid", + "lunaseaUserID": "Användarid", + "ntfyAuthenticationMethod": "Autentiseringsmetod", + "twilioApiKey": "API-nyckel (valfritt)", + "twilioFromNumber": "Från nummer", + "twilioToNumber": "Till nummer", + "Show Clickable Link": "Visa klickbar länk", + "notificationRegional": "Regional", + "cloneOf": "Klon av {0}", + "Proxy Server": "Proxy-server", + "lineDevConsoleTo": "Linjeutvecklarkonsol - {0}", + "aboutIconURL": "Du kan tillhandahålla en länk till en bild i \"Ikon-URL\" för att åsidosätta standard profilbilden. Används inte om Ikonemoji är inställt.", + "backupDescription2": "Notera: historik och händelsedata är inte inkluderat.", + "promosmsTypeFlash": "SMS FLASH - Meddelanden visas automatiskt på mottagande enhet. Begränsad till Polska mottagare.", + "promosmsTypeFull": "SMS Full - Premium nivå av SMS, du kan använda ditt avsändarnamn (du måste registrera namnet först). Pålitligt för varningar.", + "serwersmsSenderName": "SMS-avsändarnamn (registrerat via kundportalen)", + "smseagleGroup": "Telefonboksgruppnamn", + "smseagleContact": "Telefonbokskontaktsnamn", + "Body Encoding": "Body-kodning", + "Badge Label Prefix": "Bricketikettsprefix", + "Badge Preview": "Brickförhandsvisning", + "Badge Label Suffix": "Bricketikettssuffix", + "Search monitored sites": "Sök övervakade sajter", + "Badge Warn Days": "Varningsbricksdagar", + "statusPageSpecialSlugDesc": "Speciell slug {0}: denna sida kommer att visas när ingen slug anges", + "wayToGetLineChannelToken": "Först besök {0}, skapa en leverantör och kanal (Meddelande-API), efter det kan du få en accesstoken för kanalen och användarid från ovanstående menyobjekt.", + "aboutMattermostChannelName": "Du kan åsidosätta standardkanalen som webbhook postar till genom att ange kanalnamnet i \"Kanalnamn\" fältet. Detta behöver vara aktiverad i Mattermost Webbhook inställningar. Ex: #annan-kanal", + "promosmsTypeEco": "SMS ECO - billig men långsam och ofta överbelastad. Begränsad till Polska mottagare.", + "ntfyPriorityHelptextAllEvents": "Alla händelser skickas med högsta prioritet", + "aboutNotifyChannel": "Notifieringskanalen kommer att utlösa en skrivbords eller mobilnotifiering för alla medlemmar i kanalen, oavsett om deras tillgänglighet är aktiv eller borta.", + "ntfyPriorityHelptextAllExceptDown": "Alla händelser är skickade med denna prioritet, utom {0}-händelser, som har en prioritet av {1}", + "settingUpDatabaseMSG": "Ställer in databasen. Detta kan ta ett tag, ha tålamod.", + "promosmsTypeSpeed": "SMS SPEED - Högsta prioritet i system. Väldigt snabb och tillförlitlig, men kostsam (nästan dubbelt mot SMS FULL priset).", + "Badge Down Days": "Nerbricksdagar", + "grpcMethodDescription": "Metodnamn är konverterad till kamelNotation format som sayHello, check, etc.", + "importHandleDescription": "Välj 'Hoppa över existerande' om du vill hoppa över varje övervakare eller notifiering med samma namn. 'Skriv över' kommer att ta bort existerande övervakare och notifieringar.", + "pushoversounds pushover": "Pushover (standard)", + "backupDescription3": "Känslig data som ex. notifieringstokens är inkluderade i exportfilen; vänligen lagra exporten säkert.", + "octopushLogin": "\"Inloggning\" från HTTP API autentiseringsuppgifter i kontrollpanelen", + "octopushAPIKey": "\"API-nyckel\" från HTTP API autentiseringsuppgifter i kontrollpanelen", + "wayToGetKookGuildID": "Slå på 'Utvecklarläge' i Kook-inställningarna och högerklicka på guild för att få dess ID", + "Guild ID": "Guild-ID", + "pushoverDesc1": "Nödprioritet (2) har 30 sekunders timeout mellan försök och löper ut efter 1 timme som standard.", + "octopushTypePremium": "Premium (Snabb - rekommenderas för varningar)", + "octopushTypeLowCost": "Låg kostnad (långsam - blockeras ibland av operatören)", + "Check octopush prices": "Kontrollera octopush priser {0}.", + "octopushSMSSender": "SMS avsändarnamn: 3-11 alfanumeriska tecken och mellanslag (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea enhetsid", + "Free Mobile User Identifier": "Fri mobilanvändaridentifierare", + "Feishu WebHookUrl": "Feishu WebbhookURL", + "signalImportant": "VIKTIGT: Du kan inte blanda grupper och nummer i mottagare!", + "octopushLegacyHint": "Använder du äldre versionen av Octopush (2011-2020) eller den nya versionen?", + "goAlertInfo": "GoAlert är en öppen källkodsapplikation för jouruppringning, automatiserade eskaleringar och notifieringar (som SMS eller röstsamtal). Engagera automatiskt rätt person, den rätta vägen och i rätt tid! {0}", + "goAlertIntegrationKeyInfo": "Få generiska API-integrationsnycklar för tjänsten i formatet \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" vanligtvis värdet av token-parametern för den kopierade URLen.", + "matrixDesc1": "Du kan hitta det interna rumsid:t genom att titta i den avancerade sektionen av rumsinställningarna i din Matrix-klient. Det bör vara liknande !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Det är rekommenderat att du skapar en ny användare och inte använder din egna Matrix-användares accesstoken eftersom det ger full access till ditt konto och alla rum du gått med i. Skapa en ny användare och invitera endast till rummen du vill ska få notifieringen. Du kan komma åt accesstoken genom att köra {0}", + "aboutWebhooks": "Mer information om Webbhooks på: {0}", + "aboutKumaURL": "Om du lämnar Uptime Kuma URL-fältet tomt, kommer den som standard till projektsidan på Github.", + "smtpDkimDesc": "Vänligen hänvisa till Nodemailer DKIM {0} för användning.", + "smtpDkimheaderFieldNames": "Headernycklar att signera (Valfritt)", + "smtpDkimskipFields": "Headernycklar att inte signera (Valfritt)", + "Auto resolve or acknowledged": "Automatisk lösning eller bekräftad", + "auto resolve": "automatiskt bekräftad", + "auto acknowledged": "automatiskt löst", + "alertaRecoverState": "Återställningsstatus", + "serwersmsAPIUser": "API-användarnamn (inkl. webapi_prefix)", + "smseagleToken": "API-accesstoken", + "smseagleUrl": "Din SMSEagle enhetsURL", + "pagertreeResolve": "Autolös", + "Badge Up Color": "Uppbricksfärg", + "aboutChannelName": "Ange kanalnamnet på {0} kanalnamnsfältet om du vill gå förbi webbhook-kanalen. Ex: #annan-kanal", + "wayToGetPagerDutyKey": "Du kan komma åt detta genom att gå till Tjänst -> Tjänstekatalog -> (välj tjänst) -> Integrationer -> Lägg till integration. Här kan du söka efter \"Events API V2\". För mer info {0}", + "Badge Pending Color": "Väntanbricksfärg", + "Badge Down Color": "Nerbricksfärg", + "Badge Maintenance Color": "Underhållsbricksfärg", + "Badge Warn Color": "Varningsbricksfärg", + "Badge Style": "Brickstil", + "Badge value (For Testing only.)": "Brickvärde (endast för prov.)", + "Badge URL": "BrickURL", + "nostrRelays": "Nostr-relän", + "Badge Label Color": "Bricketikettsfärg", + "Free Mobile API Key": "Fri mobil-API-nyckel", + "Proto Service Name": "Proto tjänstenamn", + "Proto Method": "Proto-metod", + "Proto Content": "Proto-innehåll", + "SendKey": "Skickanyckel", + "SMSManager API Docs": "SMSManager API-dokument ", + "promosmsSMSSender": "SMS-avsändarnamn: Förregistrerat namn eller en av standard: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Octopush API Version": "Octopuch API-version", + "Legacy Octopush-DM": "Äldre Octopush-DM", + "ntfy Topic": "ntfy-ämne", + "Server URL should not contain the nfty topic": "Server-URL ska inte innehålla ntfy-ämne", + "onebotHttpAddress": "OneBot HTTP-adress", + "onebotMessageType": "OneBot meddelandetyp", + "onebotSafetyTips": "För säkerhet, måste ange accesstoken", + "PushDeer Server": "PushDeer-server", + "PushDeer Key": "PuchDeer-nyckel", + "wayToGetPagerTreeIntegrationURL": "Efter att du skapat Uptime Kuma integrationen i PagerTree, kopiera endpoint. Se detaljer {0}", + "twilioAccountSID": "Konto-SID", + "Monitor Setting": "{0}s övervakarinställning", + "Show Clickable Link Description": "Om markerad har alla med access till denna statussida även access till övervakarURL.", + "Open Badge Generator": "Öppna brickgenerator", + "Badge Generator": "{0}s brickgenerator", + "Badge Type": "Bricktyp", + "Badge Duration (in hours)": "Brickvaraktighet (i timmar)", + "Badge Label": "Bricketikett", + "Badge Prefix": "Brickvärdeprefix", + "Badge Suffix": "Brickvärdesuffix", + "Badge Color": "Brickfärg", + "monitorToastMessagesLabel": "Övervakar-toastnotifiering", + "wayToGetFlashDutyKey": "Du kan gå till Kanal -> (Välj en kanal) -> Integrationer -> Lägg till ny integrationssidan, lägg till en 'Uptime Kuma' för att få en pushadress, kopiera integrationsnyckeln i adressen. För mer information, besök", + "gamedigGuessPortDescription": "Porten som används av Valve-serverns förfrågningsprotokol kan vara annorlunda från klientporten. Prova detta om övervakaren inte kan kontakta din server.", + "monitorToastMessagesDescription": "Toastnotifieringar för övervakare försvinner efter angiven tid i sekunder. Ange -1 för att inaktivera timeout. Ange 0 för att inkaktivera toastnotifieringar.", + "Mechanism": "Mekanism", + "Pick a SASL Mechanism...": "Välj en SASL-mekanism…", + "Authorization Identity": "Behörighetsidentitet", + "AccessKey Id": "Accessnyckel-ID", + "Secret AccessKey": "Hemlig accessnyckel", + "toastErrorTimeout": "Timeout för felnotifieringar", + "toastSuccessTimeout": "Timeout för lyckadesnotifieringar", + "Enter the list of brokers": "Ange en lista av mäklare", + "Kafka Brokers": "Kafka-mäklare", + "Press Enter to add broker": "Tryck enter för att lägga till mäklare", + "Kafka Topic Name": "Kafka ämnesnamn", + "Kafka Producer Message": "Kafka producentmeddelande", + "Enable Kafka SSL": "Aktivera Kafka SSL", + "Enable Kafka Producer Auto Topic Creation": "Aktivera Kafka producent autoämnesskapande", + "Kafka SASL Options": "Kafka SASL val", + "Request Body": "Förfrågningsbody", + "nostrRelaysHelp": "En relä-URL per rad", + "nostrSender": "Privat avsändarnyckel (nsec)", + "nostrRecipients": "Publik mottagarnyckel (npub)", + "nostrRecipientsHelp": "npub-format, en per rad", + "gamedigGuessPort": "Gamedig: Gissa port", + "twilioAuthToken": "Auth-token / API-nyckelhemlighet", + "What is a Remote Browser?": "Vad är en fjärrläsare?", + "Channel access token (Long-lived)": "Kanalaccess-token (långtids)", + "Your User ID": "Ditt användarID", + "wayToGetHeiiOnCallDetails": "Hur man får Trigger ID och API-nycklar är förklarat i {dokumentationen}", + "documentationOf": "{0} Dokumentation", + "gtxMessagingFromHint": "På mobiltelefoner, dina mottagare ser TPOA visad som avsändare av meddelandet. 11 alfanumeriska tecken är tillåtet, en kortkod, den lokala långkoden eller internationella nummer ({e164}, {e212} or {e214})", + "gtxMessagingApiKeyHint": "Du kan hitta dina API-nycklar i: Mina routningkonton > Visa kontoinformation > API-referenser > REST API (v2.x)", + "From Phone Number / Transmission Path Originating Address (TPOA)": "Från telefonnummer / Transmission Path Originating Address (TPOA)", + "To Phone Number": "TIll telefonnummer", + "gtxMessagingToHint": "Internationellt format med inledande \"0\" ({e164}, {e212} or {e214})", + "Alphanumeric (recommended)": "Alfanumeriskt (rekommenderat)", + "Originator type": "Avsändartyp", + "cellsyntOriginator": "Synligt på mottagarens mobiltelefon som avsändare av meddelandet. Tillåtna värden och funktioner beror på avsändartyp.", + "cellsyntDestination": "Mottagarens telefonnummer i internationellt format med inledande 00 följt av landskod, ex. 00701234567 för SE nummer 070-123 45 67 (max 17 siffror totalt). Max 25000 kommaseparerade mottagare per HTTP-förfrågan.", + "callMeBotGet": "Här kan du generera en slutpunkt för {0}, {1} och {2}. Var uppmärksam på att du kan få en anslutningsbegränsning. Anslutningsbegränsningarna ser ut som: {3}", + "Telephone number": "Telefonnummer", + "Originator": "Avsändare", + "cellsyntOriginatortypeAlphanumeric": "Alfanumerisk sträng (max 11 alfanumeriska tecken). Mottagare kan inte svara på meddelandet.", + "Destination": "Destination", + "Allow Long SMS": "Tillåt långa SMS", + "cellsyntSplitLongMessages": "Dela långa meddelanden i upp till 6 delar. 153 x 6 = 918 tecken.", + "max 15 digits": "max 15 siffor", + "max 11 alphanumeric characters": "max 11 alfanumeriska tecken", + "cellsyntOriginatortypeNumeric": "Numeriskt värde (max 15 siffror) med telefonnummer i internationellt format utan inledande 00 (exempel SE nummer 070-123 45 67 ska anges som 46701234567). Mottagare kan svara på meddelandet.", + "wayToWriteWhapiRecipient": "Telefonnummer med internationellt prefix, men utan plustecken i början ({0}, KontaktID ({1}) eller GruppID ({2}).", + "wayToGetWhapiUrlAndToken": "Du kan hitta API URL och token genom att gå till din föredragna kanal från {0}", + "whapiRecipient": "Telefonnummer / Kontakt ID / Grupp ID", + "API URL": "API URL", + "Mentioning": "Omnämnande", + "Don't mention people": "Omnämn inte människor", + "Mention group": "Omnämn {group}", + "senderSevenIO": "Skickar nummer eller namn", + "receiverSevenIO": "Mottagande nummer", + "receiverInfoSevenIO": "Om det mottagande numret inte är lokaliserat i Tyskland, måste du lägga till landskoden för numret (ex. för landskod 46 från Sverige, använd 46123123123 istället för 0123123123)", + "apiKeySevenIO": "SevenIO api-nyckel", + "wayToGetSevenIOApiKey": "Besök instrumentpanelen under app.seven.io > utvecklare > api-nyckel > den gröna lägg till knappen", + "locally configured mail transfer agent": "lokalt konfigurerad mejlskickningsagent", + "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Endera värdnamnet på servern du vill ansluta till eller {localhost} om du vill använda {local_mta}", + "Host URL": "Värd-URL", + "whatHappensAtForumPost": "Skapa ett nytt foruminlägg. Detta postar inte meddelande i befintliga inlägg. För att posta i befintligt inlägg, använd \"{option}\"", + "mongodbCommandDescription": "Kör ett MongoDB-kommando mot databasen. För information om tillgängliga kommandon, läs i {documentation}", + "Command": "Kommando", + "smspartnerApiurl": "Du kan hitta din API-nyckel på ditt skrivbord {0}", + "smspartnerPhoneNumber": "Telefonnummer", + "smspartnerSenderName": "SMS-avsändarnamn", + "smspartnerPhoneNumberHelptext": "Numret måste vara i internationellt format {0}, {1}. Flera nummer måste vara separerade med {2}", + "smspartnerSenderNameInfo": "Måste vara mellan 3..=11 vanliga tecken", + "Bitrix24 Webhook URL": "Bitrix24 Webbhook URL", + "wayToGetBitrix24Webhook": "Du kan skapa en webbhook genom att följa stegen på {0}", + "bitrix24SupportUserID": "Ange ditt användarID i Bitrix24. Du kan hitta ditt ID från länken genom att gå till användarprofilen.", + "Send to channel": "Skicka till kanal", + "Create new forum post": "Skapa nytt foruminlägg", + "postToExistingThread": "Posta till befintlig tråd / foruminlägg", + "Select message type": "Välj meddelandetyp", + "forumPostName": "Inläggsnamn i forum", + "threadForumPostID": "Tråd / inläggs-ID", + "e.g. {discordThreadID}": "ex. {discordThreadID}", + "Refresh Interval": "Uppdateringsintervall", + "Refresh Interval Description": "Statussidan uppdateras varje {0} sekunder", + "ignoreTLSErrorGeneral": "Ignorera TLS/SSL fel för anslutningen", + "wayToGetDiscordThreadId": "Hitta ett post- / forum-ID är liknande att hitta ett kanal-ID. Läs mer om hur du hittar IDn {0}", + "threemaRecipient": "Mottagare", + "threemaRecipientType": "Mottagartyp", + "threemaRecipientTypeIdentityFormat": "8 tecken", + "threemaRecipientTypePhone": "Telefonnummer", + "threemaRecipientTypePhoneFormat": "E.164, utan inledande +", + "threemaRecipientTypeEmail": "Epostadress", + "threemaSenderIdentity": "Gateway-ID", + "wayToGetThreemaGateway": "Du kan registrera dig för Threema Gateway {0}.", + "threemaRecipientTypeIdentity": "Threema-ID", + "threemaSenderIdentityFormat": "8 tecken, startar oftast med *", + "threemaApiAuthenticationSecret": "Gateway-ID hemlighet", + "threemaBasicModeInfo": "Notera: Denna integration använder Threema Gateway i standardläge (server-baserad kryptering). Mer detaljer kan hittas {0}.", + "apiKeysDisabledMsg": "API-nycklar är inaktiverade för att autentisering är inaktiverad." +} diff --git a/src/lang/tr-TR.json b/src/lang/tr-TR.json index 0b78d7eea..f69f7d306 100644 --- a/src/lang/tr-TR.json +++ b/src/lang/tr-TR.json @@ -1,1055 +1,1055 @@ -{ - "languageName": "Türkçe", - "checkEverySecond": "{0} saniyede bir kontrol et", - "retryCheckEverySecond": "{0} saniyede bir dene", - "resendEveryXTimes": "Her {0} bir yeniden gönder", - "resendDisabled": "Yeniden gönderme devre dışı", - "retriesDescription": "Servisin kapalı olarak işaretlenmeden ve bir bildirim gönderilmeden önce maksimum yeniden deneme sayısı", - "ignoreTLSError": "HTTPS web siteleri için TLS/SSL hatalarını yok say", - "upsideDownModeDescription": "Servisin durumunu tersine çevirir. Servis çalışıyorsa kapalı olarak işaretler.", - "maxRedirectDescription": "İzlenecek maksimum yönlendirme sayısı. Yönlendirmeleri devre dışı bırakmak için 0'a ayarlayın.", - "acceptedStatusCodesDescription": "Başarılı bir yanıt olarak kabul edilen durum kodlarını seçin.", - "passwordNotMatchMsg": "Şifre eşleşmiyor.", - "notificationDescription": "Servislerin bildirim gönderebilmesi için bir bildirim yöntemi belirleyin.", - "keywordDescription": "Anahtar kelimeyi düz html veya JSON yanıtında arayın ve büyük/küçük harfe duyarlıdır.", - "pauseDashboardHome": "Durdur", - "deleteMonitorMsg": "Servisi silmek istediğinden emin misin?", - "deleteNotificationMsg": "Bu bildirimi tüm servisler için silmek istediğinden emin misin?", - "dnsPortDescription": "DNS sunucusu bağlantı noktası. Varsayılan değer 53'tür. Bağlantı noktasını istediğiniz zaman değiştirebilirsiniz.", - "resolverserverDescription": "Cloudflare varsayılan sunucudur, çözümleyici sunucusunu istediğiniz zaman değiştirebilirsiniz.", - "rrtypeDescription": "İzlemek istediğiniz servisin RR-Tipini seçin", - "pauseMonitorMsg": "Durdurmak istediğinden emin misin?", - "enableDefaultNotificationDescription": "Bu bildirim yeni monitörler için varsayılan olarak etkinleştirilecektir. Bildirimi her monitör için ayrı ayrı devre dışı bırakabilirsiniz.", - "clearEventsMsg": "Bu servisin bütün kayıtlarını silmek istediğinden emin misin?", - "clearHeartbeatsMsg": "Bu servis için tüm sağlık durumunu silmek istediğinden emin misin?", - "confirmClearStatisticsMsg": "Tüm istatistikleri silmek istediğinden emin misin?", - "importHandleDescription": "Aynı isimdeki bütün servisleri ve bildirimleri atlamak için 'Var olanı atla' seçiniz. 'Üzerine yaz' var olan bütün servisleri ve bildirimleri silecektir.", - "confirmImportMsg": "Yedeği içeri aktarmak istediğinize emin misiniz? Lütfen doğru içeri aktarma seçeneğini seçtiğinizden emin olunuz.", - "twoFAVerifyLabel": "2FA doğrulamasını sağlamak için lütfen token bilgisini giriniz:", - "tokenValidSettingsMsg": "Token geçerli! Şimdi 2FA ayarlarını kaydedebilirsiniz.", - "confirmEnableTwoFAMsg": "2FA'ı etkinleştirmek istediğinizden emin misiniz?", - "confirmDisableTwoFAMsg": "2FA'ı devre dışı bırakmak istediğinize emin misiniz?", - "Settings": "Ayarlar", - "Dashboard": "Panel", - "New Update": "Yeni Güncelleme", - "Language": "Dil", - "Appearance": "Görünüm", - "Theme": "Tema", - "General": "Genel", - "Primary Base URL": "Birincil Temel URL", - "Version": "Versiyon", - "Check Update On GitHub": "GitHub'da Güncellemeyi Kontrol Edin", - "List": "Liste", - "Add": "Ekle", - "Add New Monitor": "Yeni Servis Ekle", - "Quick Stats": "Servis istatistikleri", - "Up": "Normal", - "Down": "Hatalı", - "Pending": "Bekliyor", - "Unknown": "Bilinmeyen", - "Pause": "Durdur", - "Name": "Servis ismi", - "Status": "Durum", - "DateTime": "Zaman", - "Message": "Mesaj", - "No important events": "Önemli olay yok", - "Resume": "Devam et", - "Edit": "Düzenle", - "Delete": "Sil", - "Current": "Şu anda", - "Uptime": "Çalışma zamanı", - "Cert Exp.": "Sertifika Geçerlilik Süresi.", - "day": "gün | günler", - "-day": "-gün", - "hour": "saat", - "-hour": "-saat", - "Response": "Cevap Süresi", - "Ping": "Ping", - "Monitor Type": "Servis Tipi", - "Keyword": "Anahtar Kelime", - "Friendly Name": "Panelde görünecek isim", - "URL": "URL", - "Hostname": "Hostname", - "Port": "Port", - "Heartbeat Interval": "Servis Test Aralığı", - "Retries": "Yeniden deneme", - "Heartbeat Retry Interval": "Sağlık Durumları Tekrar Deneme Sıklığı", - "Resend Notification if Down X times consecutively": "Art arda X kez düşerse bildirimi yeniden gönder", - "Advanced": "Gelişmiş", - "Upside Down Mode": "Ters/Düz Modu", - "Max. Redirects": "Maksimum Yönlendirme", - "Accepted Status Codes": "Kabul Edilen Durum Kodları", - "Push URL": "Push URL", - "needPushEvery": "Bu URL'yi her {0} saniyede bir aramalısınız.", - "pushOptionalParams": "İsteğe bağlı parametreler: {0}", - "Save": "Kaydet", - "Notifications": "Bildirimler", - "Not available, please setup.": "Mevcut değil, lütfen ayarlardan belirleyin.", - "Setup Notification": "Bildirim yöntemi ayarla", - "Light": "Açık", - "Dark": "Koyu", - "Auto": "Oto", - "Theme - Heartbeat Bar": "Servis Bar Konumu", - "Normal": "Normal", - "Bottom": "Aşağıda", - "None": "Gösterme", - "Timezone": "Zaman Dilimi", - "Search Engine Visibility": "Arama Motoru Görünürlüğü", - "Allow indexing": "İndekslemeye izin ver", - "Discourage search engines from indexing site": "İndekslemeyi reddet", - "Change Password": "Şifre Değiştir", - "Current Password": "Şuan ki Şifre", - "New Password": "Yeni Şifre", - "Repeat New Password": "Yeni Şifreyi Tekrar Girin", - "Update Password": "Şifreyi Değiştir", - "Disable Auth": "Şifreli girişi iptal et", - "Enable Auth": "Şifreli girişi aktif et", - "disableauth.message1": "{disableAuth}emin misiniz?", - "disable authentication": "Şifreli girişi devre dışı bırakmak istediğinizden", - "disableauth.message2": "Bu, Uptime Kuma'nın önünde Cloudflare Access gibi {intendThirdPartyAuth} kişiler içindir.", - "where you intend to implement third-party authentication": "üçüncü taraf yetkilendirmesi olan", - "Please use this option carefully!": "Lütfen dikkatli kullanın!", - "Logout": "Çıkış yap", - "Leave": "Ayrıl", - "I understand, please disable": "Evet farkındayım, iptal et", - "Confirm": "Onayla", - "Yes": "Evet", - "No": "Hayır", - "Username": "Kullanıcı Adı", - "Password": "Şifre", - "Remember me": "Beni Hatırla", - "Login": "Giriş yap", - "No Monitors, please": "Servis yok, lütfen", - "add one": "bir servis ekleyin", - "Notification Type": "Bildirim Yöntemi", - "Email": "E-mail", - "Test": "Test", - "Certificate Info": "Sertifika Bilgisi", - "Resolver Server": "Çözümleyici Sunucu", - "Resource Record Type": "Kaynak Kayıt Türü", - "Last Result": "En son sonuçlar", - "Create your admin account": "Yönetici hesabınızı oluşturun", - "Repeat Password": "Şifrenizi tekrar girin", - "Import Backup": "Yedeği içe aktar", - "Export Backup": "Yedeği dışa aktar", - "Export": "Dışa aktar", - "Import": "İçe aktar", - "respTime": "Cevap Süresi (ms)", - "notAvailableShort": "N/A", - "Default enabled": "Varsayılan etkinleştirilmiş", - "Apply on all existing monitors": "Var olan bütün servislere uygula", - "Create": "Oluştur", - "Clear Data": "Verileri Temizle", - "Events": "Olaylar", - "Heartbeats": "Sağlık Durumları", - "Auto Get": "Otomatik Al", - "backupDescription": "Bütün servisleri ve bildirimleri JSON dosyasına yedekleyebilirsiniz.", - "backupDescription2": "Not: Geçmiş ve etkinlik verileri içinde değildir.", - "backupDescription3": "Dışa aktarma dosyasında bildirim tokeni gibi hassas veriler bulunur, dikkatli bir şekilde saklayınız.", - "alertNoFile": "İçeri aktarmak için bir dosya seçiniz.", - "alertWrongFileType": "Lütfen bir JSON dosyası seçiniz.", - "Clear all statistics": "Bütün istatistikleri temizle", - "Skip existing": "Var olanı atla", - "Overwrite": "Üzerine yaz", - "Options": "Seçenekler", - "Keep both": "İkisini sakla", - "Verify Token": "Tokeni doğrula", - "Setup 2FA": "2FA Ayarla", - "Enable 2FA": "2FA Etkinleştir", - "Disable 2FA": "2FA Devre dışı bırak", - "2FA Settings": "2FA Ayarları", - "Two Factor Authentication": "İki Faktörlü Kimlik Doğrulama (2FA)", - "Active": "Aktif", - "Inactive": "İnaktif", - "Token": "Token", - "Show URI": "URI'yi göster", - "Tags": "Etiketler", - "Add New below or Select...": "Aşağıya Yeni Ekle veya Seç…", - "Tag with this name already exist.": "Bu ada sahip etiket zaten var.", - "Tag with this value already exist.": "Bu değere sahip etiket zaten var.", - "color": "renk", - "value (optional)": "değer (isteğe bağlı)", - "Gray": "Gri", - "Red": "Kırmızı", - "Orange": "Turuncu", - "Green": "Yeşil", - "Blue": "Mavi", - "Indigo": "Çivit mavisi", - "Purple": "Mor", - "Pink": "Pembe", - "Search...": "Ara…", - "Avg. Ping": "Ortalama Ping", - "Avg. Response": "Ortalama Cevap Süresi", - "Entry Page": "Giriş Sayfası", - "statusPageNothing": "Burada hiçbir şey yok, lütfen bir grup veya servis ekleyin.", - "No Services": "Hizmet Yok", - "All Systems Operational": "Tüm Sistemler Operasyonel", - "Partially Degraded Service": "Kısmen Bozulmuş Hizmet", - "Degraded Service": "Bozulmuş Hizmet", - "Add Group": "Grup Ekle", - "Add a monitor": "Servis Ekle", - "Edit Status Page": "Durum Sayfasını Düzenle", - "Go to Dashboard": "Panele Git", - "Status Page": "Durum Sayfası", - "Status Pages": "Durum Sayfaları", - "defaultNotificationName": "Benim {notification} Alarmım ({number})", - "here": "burada", - "Required": "Gerekli", - "telegram": "Telegram", - "Bot Token": "Bot Anahtarı", - "wayToGetTelegramToken": "{0} adresinden bir token alabilirsiniz.", - "Chat ID": "Chat ID", - "supportTelegramChatID": "Doğrudan Sohbet / Grup / Kanalın Sohbet Kimliğini Destekleyin", - "wayToGetTelegramChatID": "Bot'a bir mesaj göndererek ve chat_id'yi görüntülemek için bu URL'ye giderek sohbet kimliğinizi alabilirsiniz:", - "YOUR BOT TOKEN HERE": "BOT TOKENİNİZ BURADA", - "chatIDNotFound": "Chat ID bulunamadı; lütfen önce bu bota bir mesaj gönderin", - "webhook": "Webhook", - "Post URL": "Post URL", - "Content Type": "Content Type", - "webhookJsonDesc": "{0}, Express.js gibi tüm modern HTTP sunucuları için iyidir", - "webhookFormDataDesc": "{multipart} PHP için iyidir. JSON'un {decodeFunction} ile ayrıştırılması gerekecek", - "smtp": "E-mail (SMTP)", - "secureOptionNone": "Hiçbiri / STARTTLS (25, 587)", - "secureOptionTLS": "TLS (465)", - "Ignore TLS Error": "TLS Hatasını Yoksay", - "From Email": "E-postadan", - "emailCustomSubject": "Özel Konu", - "To Email": "E-postaya", - "smtpCC": "CC", - "smtpBCC": "BCC", - "discord": "Discord", - "Discord Webhook URL": "Discord Webhook Bağlantısı", - "wayToGetDiscordURL": "Bunu Sunucu Ayarları -> Entegrasyonlar -> Webhookları Görüntüle -> Yeni Webhook Oluştur adımını izleyerek alabilirsiniz", - "Bot Display Name": "Botun Görünecek Adı", - "Prefix Custom Message": "Önek Özel Mesaj", - "Hello @everyone is...": "Merhaba {'@'}everyone…", - "teams": "Microsoft Teams", - "Webhook URL": "Webhook URL", - "wayToGetTeamsURL": "Bir webhook URL'sinin nasıl oluşturulacağını öğrenebilirsiniz {0}.", - "signal": "Sinyal", - "Number": "Numara", - "Recipients": "Alıcılar", - "needSignalAPI": "REST API ile bir signal istemciniz olması gerekiyor.", - "wayToCheckSignalURL": "Nasıl kurulacağını görmek için bu URL'yi kontrol edebilirsiniz:", - "signalImportant": "ÖNEMLİ: Alıcılarda grupları ve sayıları karıştıramazsınız!", - "gotify": "Gotify", - "Application Token": "Uygulama Tokeni", - "Server URL": "Sunucu URL", - "Priority": "Öncelik", - "Icon Emoji": "İkon Emoji", - "Channel Name": "Kanal Adı", - "Uptime Kuma URL": "Uptime Kuma URL", - "aboutWebhooks": "Webhook hakkında daha fazla bilgi: {0}", - "aboutChannelName": "Webhook kanalını atlamak istiyorsanız, {0} Kanal Adı alanına kanal adını girin. Ör: #diğer-kanal", - "aboutKumaURL": "Uptime Kuma URL alanını boş bırakırsanız, varsayılan olarak Project GitHub sayfası olur.", - "emojiCheatSheet": "Emoji referans sayfası: {0}", - "PushByTechulus": "Push by Techulus", - "apprise": "Apprise (50'den fazla Bildirim hizmetini destekler)", - "GoogleChat": "Google Chat (sadece Google Workspace)", - "pushbullet": "Pushbullet", - "User Key": "Kullancı Anahtarı", - "Device": "Cihaz", - "Message Title": "Mesaj Başlığı", - "Notification Sound": "Bilgilendirme sesi", - "More info on:": "Daha fazla bilgi: {0}", - "pushoverDesc1": "Acil durum önceliği (2), yeniden denemeler arasında varsayılan olarak 30 saniyelik bir zaman aşımına sahiptir ve 1 saat sonra sona erecektir.", - "pushoverDesc2": "Farklı cihazlara bildirim göndermek istiyorsanız Cihaz alanını doldurunuz.", - "SMS Type": "SMS Tipi", - "octopushTypePremium": "Premium (Hızlı - uyarı için önerilir)", - "octopushTypeLowCost": "Düşük Maliyet (Yavaş - bazen operatör tarafından engellenir)", - "checkPrice": "{0} fiyatlarını kontrol edin:", - "apiCredentials": "API kimlik bilgileri", - "octopushLegacyHint": "Octopush'un (2011-2020) eski sürümünü mü yoksa yeni sürümünü mü kullanıyorsunuz?", - "Check octopush prices": "Octopush fiyatlarını kontrol edin {0}.", - "octopushPhoneNumber": "Telefon numarası (uluslararası biçim, örneğin: +33612345678) ", - "octopushSMSSender": "SMS Gönderici Adı : 3-11 alfanümerik karakter ve boşluk (a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea Cihaz ID", - "Apprise URL": "Apprise Bağlantısı", - "Example:": "Örnek: {0}", - "Read more:": "Daha fazla oku: {0}", - "Status:": "Durum: {0}", - "Read more": "Daha fazla oku", - "appriseInstalled": "Apprise yüklendi.", - "appriseNotInstalled": "Appris yüklü değil. {0}", - "Access Token": "Erişim Tokeni", - "Channel access token": "Kanal erişim tokeni", - "Line Developers Console": "Line Geliştirici Konsolu", - "lineDevConsoleTo": "Line Geliştirici Konsolu - {0}", - "Basic Settings": "Temel Ayarlar", - "User ID": "Kullanıcı ID", - "Messaging API": "Mesajlaşma API'si", - "wayToGetLineChannelToken": "Önce {0}'e erişin, bir sağlayıcı ve kanal (Messaging API) oluşturun, ardından yukarıda belirtilen menü öğelerinden kanal erişim tokenini ve kullanıcı id alabilirsiniz.", - "Icon URL": "Simge URL", - "aboutIconURL": "Varsayılan profil resmini geçersiz kılmak için \"Simge URL\" bölümünde bir resme bağlantı sağlayabilirsiniz. Simge Emojisi ayarlanmışsa kullanılmayacaktır.", - "aboutMattermostChannelName": "Kanal adını \"Kanal Adı\" alanına girerek Webhook'un gönderi yaptığı varsayılan kanalı geçersiz kılabilirsiniz. Bunun Mattermost Webhook ayarlarında etkinleştirilmesi gerekir. Ör: #diğer-kanal", - "matrix": "Matrix", - "promosmsTypeEco": "SMS ECO - ucuz ama yavaş ve genellikle aşırı yüklü. Yalnızca Polonyalı alıcılarla sınırlıdır.", - "promosmsTypeFlash": "SMS FLASH - Mesaj, alıcı cihazda otomatik olarak gösterilecektir. Yalnızca Polonyalı alıcılarla sınırlıdır.", - "promosmsTypeFull": "SMS FULL - Premium SMS katmanı, Gönderici Adınızı kullanabilirsiniz (Önce adınızı kaydetmeniz gerekir). Uyarılar için güvenilir.", - "promosmsTypeSpeed": "SMS HIZI - Sistemde en yüksek öncelik. Çok hızlı ve güvenilir ancak maliyetli (SMS FULL fiyatının yaklaşık iki katı).", - "promosmsPhoneNumber": "Telefon numarası (Polonyalı alıcı için Alan kodlarını atlayabilirsiniz)", - "promosmsSMSSender": "SMS Gönderici Adı : Ön kayıtlı ad veya varsayılanlardan biri: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - "matrixHomeserverURL": "Homeserver URL (http(s):// ve isteğe bağlı olarak bağlantı noktası ile)", - "Internal Room Id": "Internal Room ID", - "matrixDesc1": "Internal Room ID'sini, Matrix istemcinizdeki oda ayarlarının gelişmiş bölümüne bakarak bulabilirsiniz. !QMdRCpUIfLwsfjxye6:home.server gibi görünmelidir.", - "matrixDesc2": "Hesabınıza ve katıldığınız tüm odalara tam erişime izin vereceğinden, yeni bir kullanıcı oluşturmanız ve kendi Matrix kullanıcınızın erişim belirtecini kullanmamanız şiddetle tavsiye edilir. Bunun yerine, yeni bir kullanıcı oluşturun ve onu yalnızca bildirimi almak istediğiniz odaya davet edin. {0} komutunu çalıştırarak erişim tokenini alabilirsiniz.", - "Method": "Yöntem", - "Body": "Gövde", - "Headers": "Başlıklar", - "PushUrl": "Push URL", - "HeadersInvalidFormat": "İstek başlıkları geçerli JSON değil. ", - "BodyInvalidFormat": "İstek gövdesi geçerli JSON değil: ", - "Monitor History": "Servis Geçmişi", - "clearDataOlderThan": "{0} gün boyunca izleme geçmişi verilerini saklayın.", - "PasswordsDoNotMatch": "Parolalar uyuşmuyor.", - "records": "kayıtlar", - "One record": "Bir Kayıt", - "steamApiKeyDescription": "Bir Steam Oyun Sunucusunu izlemek için bir Steam Web-API anahtarına ihtiyacınız vardır. API anahtarınızı buradan kaydedebilirsiniz: ", - "Current User": "Şu anki kullanıcı", - "topic": "Başlık", - "topicExplanation": "İzlenecek MQTT servisi", - "successMessage": "Başarılı Mesaj", - "successMessageExplanation": "Başarılı olarak kabul edilecek MQTT mesajı", - "recent": "Son", - "Done": "Tamamlandı", - "Info": "Bilgi", - "Security": "Güvenlik", - "Steam API Key": "Steam API Anahtarı", - "Shrink Database": "Veritabanını Küçült", - "Pick a RR-Type...": "Bir RR-Tipi seçin…", - "Pick Accepted Status Codes...": "Kabul Edilen Durum Kodlarını Seçin…", - "Default": "Varsayılan", - "HTTP Options": "HTTP Ayarları", - "Create Incident": "Olay Oluştur", - "Title": "Başlık", - "Content": "İçerik", - "Style": "Stil", - "info": "info", - "warning": "uyarı", - "danger": "tehlike", - "error": "hata", - "critical": "kritik", - "primary": "öncelik", - "light": "hafif", - "dark": "koyu", - "Post": "Post", - "Please input title and content": "Lütfen başlık ve içerik girin", - "Created": "Oluşturuldu", - "Last Updated": "Son Güncelleme", - "Unpin": "Sabitlemeyi Kaldır", - "Switch to Light Theme": "Açık Temaya Geç", - "Switch to Dark Theme": "Karanlık Temaya Geç", - "Show Tags": "Etiketleri Göster", - "Hide Tags": "Etiketleri Gizle", - "Description": "Açıklama", - "No monitors available.": "Kullanılabilir servis yok.", - "Add one": "Bir tane ekle", - "No Monitors": "Servis Yok", - "Untitled Group": "Adsız Grup", - "Services": "Hizmetler", - "Discard": "İptal Et", - "Cancel": "İptal Et", - "Powered by": "Tarafından desteklenmektedir", - "serwersms": "SerwerSMS.pl", - "serwersmsAPIUser": "API Kullanıcı Adı (webapi_ öneki dahil)", - "serwersmsAPIPassword": "API Şifre", - "serwersmsPhoneNumber": "Telefon numarası", - "serwersmsSenderName": "SMS Gönderici Adı (müşteri portalı üzerinden kayıtlı)", - "stackfield": "Stackfield", - "Customize": "Özelleştirme", - "Custom Footer": "Özel Altbilgi", - "Custom CSS": "Özel CSS", - "smtpDkimSettings": "DKIM Ayarları", - "smtpDkimDesc": "Kullanım için lütfen Nodemailer DKIM'e {0} bakın.", - "documentation": "belgeler", - "smtpDkimDomain": "Alan adı", - "smtpDkimKeySelector": "Anahtar Seçici", - "smtpDkimPrivateKey": "Özel anahtar", - "smtpDkimHashAlgo": "Hash Algoritması (Opsiyonel)", - "smtpDkimheaderFieldNames": "İmzalanacak Başlık Anahtarları (Opsiyonel)", - "smtpDkimskipFields": "İmzalamayacak Başlık Anahtarları (Opsiyonel)", - "wayToGetPagerDutyKey": "Bunu Hizmet -> Hizmet Dizini -> (Bir hizmet seçin) -> Entegrasyonlar -> Entegrasyon ekle'ye giderek alabilirsiniz. Burada \"Events API V2\" için arama yapabilirsiniz. Daha fazla bilgi {0}", - "Integration Key": "Entegrasyon Anahtarı", - "Integration URL": "Entegrasyon URL'si", - "Auto resolve or acknowledged": "Otomatik çözümleme veya onaylandı", - "do nothing": "hiçbir şey yapma", - "auto acknowledged": "otomatik onaylandı", - "auto resolve": "otomatik çözümleme", - "gorush": "Gorush", - "alerta": "Alerta", - "alertaApiEndpoint": "API Endpoint", - "alertaEnvironment": "Environment", - "alertaApiKey": "API Anahtarı", - "alertaAlertState": "Uyarı Durumu", - "alertaRecoverState": "Kurtarma Durumu", - "deleteStatusPageMsg": "Bu durum sayfasını silmek istediğinizden emin misiniz?", - "Proxies": "Proxy'ler", - "default": "Varsayılan", - "enabled": "Etkinleştirilmiş", - "setAsDefault": "Varsayılan Olarak Ayarla", - "deleteProxyMsg": "Bu proxy'yi tüm servisler için silmek istediğinizden emin misiniz?", - "proxyDescription": "Proxy'lerin çalışması için bir servise atanması gerekir.", - "enableProxyDescription": "Bu proxy, etkinleştirilene kadar izleme isteklerini etkilemeyecektir. Aktivasyon durumuna göre proxy'yi tüm servislerden geçici olarak devre dışı bırakabilirsiniz.", - "setAsDefaultProxyDescription": "Bu proxy, yeni servisler için varsayılan olarak etkinleştirilecektir. Yine de proxy'yi her bir servis için devre dışı bırakabilirsiniz.", - "Certificate Chain": "Sertifika Zinciri", - "Valid": "Geçerli", - "Invalid": "Geçersiz", - "AccessKeyId": "AccessKey ID", - "SecretAccessKey": "AccessKey Gizli Anahtarı", - "PhoneNumbers": "Telefon numaraları", - "TemplateCode": "TemplateCode", - "SignName": "SignName", - "Sms template must contain parameters: ": "Sms şablonu parametreleri içermelidir: ", - "Bark Endpoint": "Bark Endpoint", - "Bark Group": "Bark Group", - "Bark Sound": "Bark Sound", - "WebHookUrl": "WebHookUrl", - "SecretKey": "SecretKey", - "For safety, must use secret key": "Güvenlik için gizli anahtar kullanılmalıdır", - "Device Token": "Cihaz Tokeni", - "Platform": "Platform", - "Huawei": "Huawei", - "High": "High", - "Retry": "Tekrar", - "Topic": "Başlık", - "WeCom Bot Key": "WeCom Bot Anahtarı", - "Setup Proxy": "Proxy Ayarla", - "Proxy Protocol": "Proxy Protokolü", - "Proxy Server": "Proxy Sunucusu", - "Proxy server has authentication": "Proxy sunucusunun kimlik doğrulaması var", - "User": "Kullanıcı", - "Installed": "Yüklenmiş", - "Not installed": "Yüklü değil", - "Running": "Çalışıyor", - "Not running": "Çalışmıyor", - "Remove Token": "Tokeni Kaldır", - "Start": "Başlat", - "Stop": "Durdur", - "Uptime Kuma": "Uptime Kuma", - "Add New Status Page": "Yeni Durum Sayfası Ekle", - "Slug": "Slug", - "Accept characters:": "Kabul edilen karakterler:", - "startOrEndWithOnly": "Yalnızca {0} ile başlayın veya bitirin", - "No consecutive dashes": "Ardışık tire yok", - "Next": "Sonraki", - "The slug is already taken. Please choose another slug.": "Slug zaten alındı. Lütfen başka bir slug seçin.", - "No Proxy": "Proxy Yok", - "Authentication": "Kimlik doğrulama", - "HTTP Basic Auth": "HTTP Temel Yetkilendirme", - "New Status Page": "Yeni Durum Sayfası", - "Page Not Found": "Sayfa bulunamadı", - "Reverse Proxy": "Ters Proxy", - "Backup": "Yedek", - "About": "Hakkında", - "wayToGetCloudflaredURL": "(Cloudflared'i {0} adresinden indirin)", - "cloudflareWebsite": "Cloudflare İnt. Sitesi", - "Message:": "Mesaj:", - "Don't know how to get the token? Please read the guide:": "Tokeni nasıl alacağınızı bilmiyor musunuz? Lütfen kılavuzu okuyun:", - "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Halihazırda Cloudflare Tüneli üzerinden bağlanıyorsanız mevcut bağlantı kesilebilir. Durdurmak istediğinden emin misin? Onaylamak için mevcut şifrenizi yazın.", - "HTTP Headers": "HTTP Başlıkları", - "Trust Proxy": "Trust Proxy", - "Other Software": "Diğer Yazılımlar", - "For example: nginx, Apache and Traefik.": "Örneğin: nginx, Apache ve Traefik.", - "Please read": "Lütfen oku", - "Subject:": "Başlık:", - "Valid To:": "Geçerlilik:", - "Days Remaining:": "Kalan günler:", - "Issuer:": "Veren:", - "Fingerprint:": "Parmak izi:", - "No status pages": "Durum sayfası yok", - "Domain Name Expiry Notification": "Alan Adı Sona Erme Bildirimi", - "Proxy": "Proxy", - "Date Created": "Tarih Oluşturuldu", - "HomeAssistant": "Home Assistant", - "onebotHttpAddress": "OneBot HTTP Adresi", - "onebotMessageType": "OneBot Mesaj Türü", - "onebotGroupMessage": "Grup", - "onebotPrivateMessage": "Özel", - "onebotUserOrGroupId": "Grup/Kullanıcı Kimliği", - "onebotSafetyTips": "Güvenlik için erişim tokeni ayarlamalısınız", - "PushDeer Key": "PushDeer Anahtarı", - "Footer Text": "Altbilgi metni", - "Show Powered By": "\"Powered by\" kısmını göster", - "Domain Names": "Alan isimleri", - "signedInDisp": "{0} olarak oturum açıldı", - "signedInDispDisabled": "Yetkilendirme Devre Dışı.", - "RadiusSecret": "Radius Gizli Anahtar", - "RadiusSecretDescription": "İstemci ve sunucu arasında paylaşılan gizli anahtar", - "RadiusCalledStationId": "Aranan İstasyon Kimliği", - "RadiusCalledStationIdDescription": "Aranan cihazın tanımlayıcısı", - "RadiusCallingStationId": "Arayan İstasyon Kimliği", - "RadiusCallingStationIdDescription": "Arayan cihazın tanımlayıcısı", - "Certificate Expiry Notification": "Sertifika Sona Erme Bildirimi", - "API Username": "API Kullanıc Adı", - "API Key": "API Anahtarı", - "Recipient Number": "Alıcı Numarası", - "From Name/Number": "İsimden/Numaradan", - "Leave blank to use a shared sender number.": "Paylaşılan bir gönderen numarası kullanmak için boş bırakın.", - "Octopush API Version": "Octopush API Sürümü", - "Legacy Octopush-DM": "Eski Octopush-DM", - "endpoint": "uç nokta", - "octopushAPIKey": "Kontrol panelindeki HTTP API kimlik bilgilerinden \"API Key\"", - "octopushLogin": "Kontrol panelindeki HTTP API kimlik bilgilerinden \"Login\"", - "promosmsLogin": "API Oturum Açma Adı", - "promosmsPassword": "API Şifresi", - "pushoversounds pushover": "Pushover (varsayılan)", - "pushoversounds bike": "Bisiklet", - "pushoversounds bugle": "Boru", - "pushoversounds cashregister": "Yazar kasa", - "pushoversounds classical": "Klasik", - "pushoversounds cosmic": "Kozmik", - "pushoversounds falling": "Düşme", - "pushoversounds gamelan": "Oyun Alanı", - "pushoversounds incoming": "Gelen", - "pushoversounds intermission": "Ara", - "pushoversounds magic": "Büyü", - "pushoversounds mechanical": "Mekanik", - "pushoversounds pianobar": "Piano", - "pushoversounds siren": "Siren", - "pushoversounds spacealarm": "Uzay Alarmı", - "pushoversounds tugboat": "Römorkör", - "pushoversounds alien": "Uzaylı Alarmı (uzun)", - "pushoversounds climb": "Tırmanış (uzun)", - "pushoversounds persistent": "Sürekli (uzun)", - "pushoversounds echo": "Pushover Yankı (uzun)", - "pushoversounds updown": "Yukarı Aşağı (uzun)", - "pushoversounds vibrate": "Sadece titreşim", - "pushoversounds none": "Yok (sessiz)", - "pushyAPIKey": "Gizli API Anahtarı", - "pushyToken": "Cihaz tokeni", - "Show update if available": "Varsa güncellemeyi göster", - "Also check beta release": "Ayrıca beta sürümünü kontrol edin", - "Using a Reverse Proxy?": "Ters Proxy mi Kullanıyorsunuz?", - "Check how to config it for WebSocket": "WebSocket için nasıl yapılandırılacağını kontrol edin", - "Steam Game Server": "Steam Oyun Sunucusu", - "Most likely causes:": "En olası nedenler:", - "The resource is no longer available.": "Kaynak artık mevcut değil.", - "There might be a typing error in the address.": "Adreste bir yazım hatası olabilir.", - "What you can try:": "Ne deneyebilirsin:", - "Retype the address.": "Adresi tekrar yazın.", - "Go back to the previous page.": "Bir önceki sayfaya geri git.", - "Coming Soon": "Yakında gelecek", - "wayToGetClickSendSMSToken": "API Kullanıcı Adı ve API Anahtarını {0} adresinden alabilirsiniz.", - "Connection String": "Bağlantı dizisi", - "Query": "Sorgu", - "settingsCertificateExpiry": "TLS Sertifikasının Geçerlilik Süresi", - "certificationExpiryDescription": "HTTPS Monitörleri, TLS sertifikasının süresi dolduğunda bildirimi tetikler:", - "Setup Docker Host": "Docker Ana Bilgisayarını Ayarla", - "Connection Type": "Bağlantı türü", - "Docker Daemon": "Docker Daemon", - "deleteDockerHostMsg": "Bu docker ana bilgisayarını tüm monitörler için silmek istediğinizden emin misiniz?", - "socket": "Soket", - "tcp": "TCP / HTTP", - "Docker Container": "Docker Konteyner", - "Container Name / ID": "Konteyner Adı / Kimliği", - "Docker Host": "Docker Ana Bilgisayarı", - "Docker Hosts": "Docker Ana Bilgisayarları", - "ntfy Topic": "ntfy Konu", - "Domain": "Alan Adı", - "Workstation": "İş İstasyonu", - "disableCloudflaredNoAuthMsg": "Yetki yok modundasınız, şifre gerekli değil.", - "trustProxyDescription": "'X-Forwarded-*' başlıklarına güvenin. Doğru istemci IP'sini almak istiyorsanız ve Uptime Kuma'nız Nginx veya Apache gibi bir proxy'nin arkasındaysa, bunu etkinleştirmelisiniz.", - "wayToGetLineNotifyToken": "{0} adresinden bir erişim jetonu alabilirsiniz", - "Examples": "Örnekler", - "Home Assistant URL": "Home Assistant Bağlantısı", - "Long-Lived Access Token": "Long-Lived Erişim Anahtarı", - "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Erişim Anahtarı, profil adınıza (sol altta) tıklayarak ve aşağıya kaydırarak ve ardından Anahtar Oluştur'a tıklayarak oluşturulabilir. ", - "Notification Service": "Bildirim Hizmeti", - "default: notify all devices": "varsayılan: tüm cihazları bilgilendir", - "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Cihazınızın/telefonunuzun adını bulmak için Home Assistant'ta \"Geliştirici Araçları > Hizmetler\" \"bildirim\" araması altında bir Bildirim Hizmetleri listesi bulunabilir.", - "Automations can optionally be triggered in Home Assistant:": "Otomasyonlar isteğe bağlı olarak Home Assistant'ta tetiklenebilir:", - "Trigger type:": "Trigger tipi:", - "Event type:": "Etkinlik tipi:", - "Event data:": "Etkinlik verileri:", - "Then choose an action, for example switch the scene to where an RGB light is red.": "Ardından bir eylem seçin, örneğin RGB ışığının kırmızı olduğu sahneyi değiştirin.", - "Frontend Version": "Frontend Sürümü", - "Frontend Version do not match backend version!": "Frontend Sürümü, backend sürümüyle eşleşmiyor!", - "Base URL": "Temel URL", - "goAlertInfo": "GoAlert, çağrı üzerine zamanlama, otomatik eskalasyonlar ve bildirimler (SMS veya sesli çağrılar gibi) için açık kaynaklı bir uygulamadır. Doğru kişiyi, doğru şekilde ve doğru zamanda otomatik olarak devreye sokun! {0}", - "goAlertIntegrationKeyInfo": "Servis için genel API entegrasyon anahtarını, genellikle kopyalanan URL'nin belirteç parametresinin değeri olan \"aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" biçiminde alın.", - "goAlert": "GoAlert", - "backupOutdatedWarning": "Kullanımdan kaldırıldı: Birçok özellik eklendiğinden ve bu yedekleme özelliği biraz bakımsız olduğundan tam bir yedekleme oluşturamaz veya geri yükleyemez.", - "backupRecommend": "Lütfen bunun yerine birimi veya veri klasörünü (./data/) doğrudan yedekleyin.", - "enableGRPCTls": "TLS bağlantısıyla gRPC isteği göndermeye izin ver", - "grpcMethodDescription": "Yöntem adı, sayHello, check, vb. gibi camelCase biçimine dönüştürülür.", - "Maintenance": "Bakım", - "statusMaintenance": "Bakım", - "Schedule maintenance": "Bakım Planla", - "Affected Monitors": "Etkilenen Monitörler", - "Pick Affected Monitors...": "Etkilenen Monitörleri Seçin…", - "Start of maintenance": "Bakım başlangıcı", - "All Status Pages": "Tüm Durum Sayfaları", - "Select status pages...": "Durum sayfalarını seçin…", - "recurringIntervalMessage": "Her gün bir kez çalıştırın | {0} günde bir çalıştırın", - "affectedMonitorsDescription": "Geçerli bakımdan etkilenen monitörleri seçin", - "affectedStatusPages": "Bu bakım mesajını seçili durum sayfalarında göster", - "atLeastOneMonitor": "Etkilenen en az bir monitör seçin", - "deleteMaintenanceMsg": "Bu bakımı silmek istediğinizden emin misiniz?", - "ZohoCliq": "ZohoCliq", - "webhookAdditionalHeadersTitle": "Ek Başlıklar", - "webhookAdditionalHeadersDesc": "Webhook ile gönderilen ek başlıkları ayarlar. Her başlık bir JSON anahtarı/değeri olarak tanımlanmalıdır.", - "wayToGetZohoCliqURL": "Bir webhook URL'sinin nasıl oluşturulacağını öğrenebilirsiniz {0}.", - "Kook": "Kook", - "wayToGetKookBotToken": "Uygulama oluşturun ve {0} adresinde bot tokenı alın", - "wayToGetKookGuildID": "Kook ayarında \"Geliştirici Modu\"nu açın ve kimliğini almak için guild'e sağ tıklayın", - "Guild ID": "Guild ID", - "smseagle": "SMSEagle", - "smseagleTo": "Telefon numara(ları)", - "smseagleGroup": "Telefon defteri grubu ad(lar)ı", - "smseagleContact": "Telefon rehberi kişi ad(lar)ı", - "smseagleRecipientType": "Alıcı Türü", - "smseagleRecipient": "Alıcı(lar) (birden çok olanlar virgülle ayrılmalıdır)", - "smseagleToken": "API Erişim Tokenı", - "smseagleUrl": "SMSEagle cihaz URL\"niz", - "smseagleEncoding": "Unicode olarak gönder", - "smseaglePriority": "Mesaj önceliği (0-9, varsayılan = 0)", - "Optional": "İsteğe bağlı", - "squadcast": "Squadcast", - "SendKey": "SendKey", - "SMSManager API Docs": "SMSManager API Dökümanları ", - "Gateway Type": "Ağ Geçidi Türü", - "SMSManager": "SMSManager", - "You can divide numbers with": "Sayıları aşağıdakilerle bölebilirsiniz", - "or": "veya", - "recurringInterval": "Sıklık", - "Recurring": "Yineleme", - "strategyManual": "Manuel olarak Aktif/Pasif", - "warningTimezone": "Sunucunun kullandığı saat dilimi", - "weekdayShortMon": "Pzt", - "weekdayShortTue": "Sal", - "weekdayShortWed": "Çar", - "weekdayShortThu": "Per", - "weekdayShortFri": "Cum", - "weekdayShortSat": "Cmt", - "weekdayShortSun": "Paz", - "dayOfWeek": "Haftanın Günleri", - "dayOfMonth": "Ayın Günleri", - "lastDay": "Son Gün", - "lastDay1": "Ayın Son Günü", - "lastDay2": "Ayın 2. Son Günü", - "lastDay3": "Ayın 3. Son Günü", - "lastDay4": "Ayın 4. Son Günü", - "No Maintenance": "Bakım Yok", - "pauseMaintenanceMsg": "Duraklatmak istediğinizden emin misiniz?", - "maintenanceStatus-under-maintenance": "Bakımda", - "maintenanceStatus-inactive": "Etkin Değil", - "maintenanceStatus-scheduled": "Planlanmış", - "maintenanceStatus-ended": "Bitti", - "maintenanceStatus-unknown": "Bilinmiyor", - "Display Timezone": "Saat dilimini göster", - "Server Timezone": "Sunucu Saat Dilimi", - "statusPageMaintenanceEndDate": "Bitiş Zamanı", - "IconUrl": "Icon URL", - "Enable DNS Cache": "(Kullanımdan kaldırıldı) HTTP(ler) monitörleri için DNS Önbelleğini etkinleştirin", - "Enable": "Etkin", - "Disable": "Devre Dışı", - "dnsCacheDescription": "Bazı IPv6 ortamlarında çalışmıyor olabilir, herhangi bir sorunla karşılaşırsanız devre dışı bırakın.", - "Single Maintenance Window": "Tek Seferlik Bakım", - "Maintenance Time Window of a Day": "Bür Günlük Bakım", - "Effective Date Range": "Geçerlilik Tarihi Aralığı (Opsiyonel)", - "Schedule Maintenance": "Bakım Planla", - "Date and Time": "Tarih ve Saat", - "DateTime Range": "Tarih ve Saat Aralığı", - "Strategy": "Strateji", - "Free Mobile User Identifier": "Ücretsiz Mobil Kullanıcı ID", - "Free Mobile API Key": "Ücretsiz Mobil API Anahtarı", - "Enable TLS": "TLS'yi Etkinleştir", - "Proto Service Name": "Proto Service İsmi", - "Proto Method": "Proto Method", - "Proto Content": "Proto İçeriği", - "Economy": "Ekonomik", - "Lowcost": "Düşük maliyetli", - "high": "Yüksek", - "General Monitor Type": "Genel Monitör Tipi", - "Passive Monitor Type": "Pasif Monitör Tipi", - "Specific Monitor Type": "Özel Monitör Tipi", - "Help": "Yardım", - "Monitor": "Monitör | Monitörler", - "Custom": "Özel", - "dataRetentionTimeError": "Saklama süresi 0 veya daha büyük olmalıdır", - "confirmDeleteTagMsg": "Bu etiketi silmek istediğinizden emin misiniz? Bu etiketle ilişkili monitörler silinmez.", - "promosmsAllowLongSMS": "Uzun SMS'e izin ver", - "infiniteRetention": "Sonsuza dek saklamak için 0 giriniz.", - "rocket.chat": "Rocket.Chat", - "slack": "Slack", - "pushover": "Pushover", - "Game": "Oyun", - "Packet Size": "Paket Boyutu", - "Custom Monitor Type": "Özel Monitör Tipi", - "clicksendsms": "ClickSend SMS", - "loadingError": "Veriler getirilemiyor, lütfen daha sonra tekrar deneyin.", - "plugin": "Eklenti | Eklentiler", - "install": "Yükle", - "installing": "Yükleniyor", - "uninstall": "Kaldır", - "uninstalling": "Yükleme kaldırılıyor", - "confirmUninstallPlugin": "Bu eklentiyi kaldırmak istediğinizden emin misiniz?", - "pushy": "Pushy", - "octopush": "Octopush", - "promosms": "PromoSMS", - "lunasea": "LunaSea", - "line": "Line Messenger", - "mattermost": "Mattermost", - "markdownSupported": "Markdown yazım formatı desteklenir", - "Google Analytics ID": "Google Analytics Kodu", - "Edit Tag": "Etiketi Düzenle", - "Learn More": "Daha fazla bilgi edin", - "Server Address": "Sunucu Adresi", - "telegramMessageThreadIDDescription": "Forumun hedef ileti dizisi (konusu) için isteğe bağlı benzersiz kimlik; yalnızca forum üst grupları için geçerli", - "telegramMessageThreadID": "(İsteğe bağlı) Mesaj Thread ID", - "notificationRegional": "Bölgesel", - "telegramSendSilently": "Sessizce Gönder", - "telegramSendSilentlyDescription": "Mesajı sessizce gönderir. Kullanıcılar sessiz bir bildirim alacaktır.", - "telegramProtectContent": "Yönlendirmeyi/Kaydetmeyi Koru", - "telegramProtectContentDescription": "Etkinleştirilirse, Telegram'daki bot mesajları iletilmeye ve kaydedilmeye karşı korunacaktır.", - "Body Encoding": "JSON veya XML olabilen HTTP İstek Gövdesinin Kodlaması. İstek İçeriği Türü olarak da bilinir: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type", - "Clone Monitor": "Klon Monitör", - "Clone": "Klon", - "cloneOf": "{0} Monitörünün Klonu", - "Expiry": "son kullanma tarihi", - "Expiry date": "Son kullanma tarihi", - "Don't expire": "sona erme", - "Continue": "Devam etmek", - "Key Added": "Anahtar Eklendi", - "Add API Key": "API Anahtarı Ekle", - "No API Keys": "API Anahtarı Yok", - "apiKey-active": "Aktif", - "apiKey-expired": "Günü geçmiş", - "apiKey-inactive": "etkin değil", - "Expires": "süresi doluyor", - "disableAPIKeyMsg": "Bu API anahtarını devre dışı bırakmak istediğinizden emin misiniz?", - "deleteAPIKeyMsg": "Bu API anahtarını silmek istediğinizden emin misiniz?", - "Generate": "oluştur", - "API Keys": "api anahtarları", - "Add Another": "Başka birtane ekle", - "apiKeyAddedMsg": "API anahtarınız eklendi. Bir daha gösterilmeyeceği için lütfen not edin.", - "pagertreeUrgency": "Önem", - "pagertreeSilent": "Sessiz", - "pagertreeLow": "Düşük", - "pagertreeMedium": "Orta", - "pagertreeHigh": "Yüksek", - "pagertreeCritical": "Kritik", - "pagertreeDoNothing": "Hiçbir şey yapma", - "wayToGetPagerTreeIntegrationURL": "PagerTree'de Uptime Kuma entegrasyonunu oluşturduktan sonra Endpoint'i kopyalayın. Tüm ayrıntıları görün {0}", - "pagertreeIntegrationUrl": "Entegrasyon URL", - "pagertreeResolve": "Otomatik Çöz", - "lunaseaTarget": "Hedef", - "Add New Tag": "Yeni Etiket Ekle", - "lunaseaDeviceID": "Cihaz ID", - "lunaseaUserID": "Kullanıcı ID", - "statusPageRefreshIn": "{0} içinde yenilenecek", - "twilioAuthToken": "Kimlik Doğrulama Jetonu / Gizli Api Anahtarı", - "twilioFromNumber": "Gönderen Numara", - "twilioToNumber": "Alıcı Numara", - "twilioAccountSID": "Hesap ID", - "sameAsServerTimezone": "Sunucu Saat Dilimi ile aynı", - "startDateTime": "Başlangıç Tarihi/Saati", - "endDateTime": "Bitiş Tarihi/Saati", - "cronExpression": "Cron İfadesi", - "cronSchedule": "Zamanlama: ", - "invalidCronExpression": "Geçersiz Cron İfadesi: {0}", - "ntfyAuthenticationMethod": "Kimlik Doğrulama Yöntemi", - "ntfyUsernameAndPassword": "Kullanıcı adı ve şifre", - "pushoverMessageTtl": "Mesajın Yaşama Süresi (Saniye)", - "Show Clickable Link": "Tıklanabilir Bağlantıyı Göster", - "Open Badge Generator": "Rozet Oluşturucuyu Aç", - "Badge Generator": "{0} Rozet Oluşturucu", - "Badge Type": "Rozet Türü", - "Badge Duration": "Rozet Süresi", - "Badge Label": "Rozet Etiketi", - "Badge Prefix": "Rozet Değer Öneki", - "Badge Suffix": "Rozet Değer Soneki", - "Badge Label Color": "Rozet Etiket Rengi", - "Badge Color": "Rozet Rengi", - "Badge Label Prefix": "Rozet Etiket Öneki", - "Badge Label Suffix": "Rozet Etiket Eki", - "Badge Up Color": "Rozet Normal Rengi", - "Badge Down Color": "Rozet Hatalı Rengi", - "Badge Pending Color": "Rozet Bekleyen Rengi", - "Badge Maintenance Color": "Rozet Bakım Rengi", - "Badge Warn Color": "Rozet Uyarı Rengi", - "Badge Warn Days": "Rozet Uyarı Günleri", - "Badge Down Days": "Rozet Hatalı Günleri", - "Badge Style": "Rozet Stili", - "Badge value (For Testing only.)": "Rozet değeri (Yalnızca Test için.)", - "Badge URL": "Rozet URL'i", - "Monitor Setting": "{0}'nin Monitör Ayarı", - "Show Clickable Link Description": "Eğer işaretlenirse, bu durum sayfasına erişimi olan herkes monitor URL'ine erişebilir.", - "Group": "Grup", - "Monitor Group": "Monitor Grup", - "Cannot connect to the socket server": "Soket sunucusuna bağlanılamıyor", - "Edit Maintenance": "Bakımı Düzenle", - "Reconnecting...": "Yeniden bağlanılıyor...", - "Home": "Anasayfa", - "noGroupMonitorMsg": "Uygun değil. Önce bir Grup Monitörü oluşturun.", - "Close": "Kapalı", - "chromeExecutable": "Çalıştırılabilir Chrome/Chromium", - "chromeExecutableAutoDetect": "Otomatik algılama", - "chromeExecutableDescription": "Docker kullanıcıları için Chromium henüz kurulmamışsa, yüklenmesi ve test sonucunun görüntülenmesi birkaç dakika sürebilir. 1 GB disk alanı gerektirir.", - "Invert Keyword": "Anahtar Kelimeyi Ters Çevir", - "invertKeywordDescription": "Anahtar kelimenin mevcut olmasından ziyade mevcut olmamasına bakın.", - "webhookCustomBodyDesc": "İstek için özel bir HTTP Gövdesi tanımlayın. {msg}, {heartbeat}, {monitor} şablon değişkenleri kabul edilir.", - "webhookBodyPresetOption": "Ön ayar - {0}", - "webhookBodyCustomOption": "Özel Gövde", - "Request Body": "İstek Gövdesi", - "twilioApiKey": "Api Anahtarı (isteğe bağlı)", - "Expected Value": "Beklenen Değer", - "Json Query": "Json Sorgusu", - "Badge Duration (in hours)": "Rozet Süresi (saat cinsinden)", - "Badge Preview": "Rozet Önizlemesi", - "Notify Channel": "Bildirim Kanalı", - "aboutNotifyChannel": "Bildirim kanalı, müsaitlik durumu etkin veya uzakta olarak ayarlanmış olsun, kanalın tüm üyeleri için bir masaüstü veya mobil bildirimi tetikler.", - "filterActive": "Aktif", - "filterActivePaused": "Duraklatıldı", - "Enter the list of brokers": "Aracı listesine girin", - "Kafka Topic Name": "Kafka Başlık Adı", - "Kafka Producer Message": "Kafka Üretici Mesajı", - "Enable Kafka SSL": "Kafka SSL'i etkinleştir", - "Kafka SASL Options": "Kafka SASL Seçenekleri", - "Mechanism": "Mekanizma", - "Pick a SASL Mechanism...": "Bir SASL Mekanizması seçin…", - "Authorization Identity": "Yetki Kimliği", - "Secret AccessKey": "Gizli Erişim Anahtarı", - "Session Token": "Oturum Jetonu", - "Kafka Brokers": "Kafka Aracıları", - "Press Enter to add broker": "Aracı eklemek için Enter'a basın", - "Enable Kafka Producer Auto Topic Creation": "Kafka Üreticisi Otomatik Başlık Oluşturmayı Etkinleştir", - "AccessKey Id": "Erişim Anahtarı Kimliği", - "tailscalePingWarning": "Tailscale Ping monitörünü kullanabilmek için Docker olmadan Uptime Kuma kurmanız ve ayrıca sunucunuza Tailscale client kurmanız gerekmektedir.", - "Server URL should not contain the nfty topic": "Sunucu URL'si nfty konusunu içermemelidir", - "FlashDuty Severity": "Önem derecesi", - "nostrRelays": "Nostr röleleri", - "nostrRelaysHelp": "Satır başına bir geçiş URL'si", - "nostrSender": "Gönderen Özel Anahtarı (nsec)", - "nostrRecipients": "Alıcıların Genel Anahtarları (npub)", - "nostrRecipientsHelp": "npub biçimi, her satıra bir tane", - "showCertificateExpiry": "Sertifika Geçerlilik Süresini Göster", - "noOrBadCertificate": "Sertifika Yok/Geçersiz", - "Select": "Seç", - "PushDeer Server": "PushDeer Sunucusu", - "wayToGetFlashDutyKey": "Kanal -> (Bir Kanal Seçin) -> Entegrasyonlar -> Yeni bir entegrasyon ekle' sayfasına gidebilir, bir push adresi almak için 'Çalışma Süresi Kuma' ekleyebilir, Entegrasyon Anahtarını adrese kopyalayabilirsiniz. Daha fazla bilgi için lütfen ziyaret edin", - "selectedMonitorCount": "Seçildi: {0}", - "Check/Uncheck": "İşaretle/İşareti Kaldır", - "pushDeerServerDescription": "Resmi sunucuyu kullanmak için boş bırakın", - "Request Timeout": "İstek zaman aşımına uğradı", - "timeoutAfter": "{0} saniye sonra zaman aşımı", - "gamedigGuessPort": "Gamedig: Ziyaretçi Portu", - "gamedigGuessPortDescription": "Valve Server Sorgu Protokolü tarafından kullanılan bağlantı noktası, istemci bağlantı noktasından farklı olabilir. Monitör sunucunuza bağlanamıyorsa bunu deneyin.", - "styleElapsedTimeShowNoLine": "Göster (Satır Yok)", - "styleElapsedTime": "Kalp atışı çubuğunun altında geçen süre", - "styleElapsedTimeShowWithLine": "Göster (Satır ile birlikte)", - "enableNSCD": "Tüm DNS isteklerini önbelleğe almak için NSCD'yi (Ad Hizmeti Önbellek Programı) etkinleştirin", - "setupDatabaseEmbeddedMariaDB": "Hiçbir şey ayarlamanıza gerek yok. Bu docker imajı, MariaDB'yi sizin için otomatik olarak yerleştirdi ve yapılandırdı. Çalışma Süresi Kuma bu veritabanına unix soketi aracılığıyla bağlanacaktır.", - "setupDatabaseSQLite": "Küçük ölçekli dağıtımlar için önerilen basit bir veritabanı dosyası. v2.0.0'dan önce Uptime Kuma, varsayılan veritabanı olarak SQLite'ı kullanıyordu.", - "setupDatabaseChooseDatabase": "Hangi veritabanını kullanmak istersiniz?", - "setupDatabaseMariaDB": "Harici bir MariaDB veritabanına bağlanın. Veritabanı bağlantı bilgilerini ayarlamanız gerekir.", - "dbName": "Veritabanı ismi", - "Saved.": "Kaydedildi.", - "toastErrorTimeout": "Hata Bildirimleri için Zaman Aşımı", - "toastSuccessTimeout": "Başarı Bildirimleri için Zaman Aşımı", - "monitorToastMessagesLabel": "Toast bildirimlerini izleyin", - "monitorToastMessagesDescription": "Monitörler için bildirimler, saniye cinsinden belirli bir süre sonunda kaybolur. -1'e ayarlamak zaman aşımını devre dışı bırakır. 0'a ayarlamak, tost bildirimlerini devre dışı bırakır.", - "Bark API Version": "Bark API Sürümü", - "pushViewCode": "Push monitör nasıl kullanılır? (Kodu Görüntüle)", - "programmingLanguages": "Programlama dilleri", - "pushOthers": "Diğerleri", - "authInvalidToken": "Geçersiz Token.", - "authIncorrectCreds": "Kullanıcı adı ya da parola yanlış.", - "2faAlreadyEnabled": "2FA zaten etkin.", - "2faEnabled": "2FA Etkin.", - "2faDisabled": "2FA Devre Dışı.", - "successResumed": "Başarıyla Devam Edildi.", - "successPaused": "Başarıyla Duraklatıldı.", - "successDeleted": "Başarıyla silindi.", - "successEdited": "Başarıyla Düzenlendi.", - "successBackupRestored": "Yedekleme başarıyla geri yüklendi.", - "successDisabled": "Başarıyla Devre Dışı Bırakıldı.", - "successEnabled": "Başarıyla Etkinleştirildi.", - "tagNotFound": "Etiket bulunamadı.", - "authUserInactiveOrDeleted": "Kullanıcı etkin değil veya silinmiş.", - "successAdded": "Başarıyla eklendi.", - "successAuthChangePassword": "Şifre başarıyla güncellendi.", - "foundChromiumVersion": "Chromium/Chrome bulundu. Versiyon: {0}", - "Reset Token": "Jetonu Sıfırla", - "emailCustomisableContent": "Özelleştirilebilir içerik", - "smtpLiquidIntroduction": "Aşağıdaki iki alan Liquid şablonlama Dili aracılığıyla şablonlanabilir. Kullanım talimatları için lütfen {0}'a bakın. Bunlar mevcut değişkenlerdir:", - "leave blank for default subject": "varsayılan konu için boş bırakın", - "emailCustomBody": "Özel Gövde", - "leave blank for default body": "varsayılan gövde için boş bırakın", - "emailTemplateServiceName": "Hizmet Adı", - "emailTemplateHostnameOrURL": "Hostname veya URL", - "emailTemplateStatus": "Durum", - "emailTemplateMonitorJSON": "monitörü tanımlayan nesne", - "emailTemplateHeartbeatJSON": "kalp atışını tanımlayan nesne", - "liquidIntroduction": "Şablonlanabilirlik, Liquid şablonlama dili aracılığıyla sağlanır. Kullanım talimatları için lütfen {0}'a bakın. Bunlar mevcut değişkenlerdir:", - "templateMsg": "bildirim mesajı", - "templateHeartbeatJSON": "kalp atışını tanımlayan nesne", - "templateMonitorJSON": "monitörü tanımlayan nesne", - "templateLimitedToUpDownCertNotifications": "yalnızca Normal/Hatalı/Sertifika sona erme bildirimleri için kullanılabilir", - "templateLimitedToUpDownNotifications": "yalnızca Normal/Hatalı bildirimleri için kullanılabilir", - "emailTemplateMsg": "bildirim mesajı", - "emailTemplateLimitedToUpDownNotification": "yalnızca Normal/Hatalı kalp atışları için kullanılabilir, aksi takdirde boş", - "GrafanaOncallUrl": "Grafana Oncall URL'i", - "noDockerHostMsg": "Uygun değil. Önce Docker Ana Bilgisayarını Ayarlayın.", - "DockerHostRequired": "Lütfen bu monitör için Docker Ana Bilgisayarını ayarlayın.", - "Browser Screenshot": "Tarayıcı Ekran Görüntüsü", - "successKeyword": "Başarı Anahtar Kelimesi", - "successKeywordExplanation": "Başarılı olarak kabul edilecek MQTT anahtar kelimesi", - "Add a new expiry notification day": "Yeni bir sona erme bildirim günü ekle", - "Remove the expiry notification": "Sona erme bildirim gününü kaldır", - "setup a new monitor group": "yeni bir monitör grubu ayarla", - "Remove domain": "'{0}' alan adını kaldır", - "Remote Browsers": "Uzak Tarayıcılar", - "Remote Browser": "Uzak Tarayıcı", - "Add a Remote Browser": "Uzak Tarayıcı Ekle", - "Remote Browser not found!": "Uzak Tarayıcı bulunamadı!", - "remoteBrowsersDescription": "Uzak Tarayıcılar, Chromium'u yerel olarak çalıştırmanın bir alternatifidir. browserless.io gibi bir hizmet ile kurulum yapın veya kendi hizmetinize bağlanın", - "self-hosted container": "kendi kendine barındırılan konteyner", - "remoteBrowserToggle": "Varsayılan olarak Chromium, Uptime Kuma kapsayıcısının içinde çalışır. Bu anahtarı değiştirerek uzak bir tarayıcıyı kullanabilirsiniz.", - "useRemoteBrowser": "Uzak Tarayıcı Kullanın", - "deleteRemoteBrowserMessage": "Bu Uzak Tarayıcıyı tüm monitörler için silmek istediğinizden emin misiniz?", - "openModalTo": "modeli {0}'a aç", - "Add a domain": "Alan adı ekle", - "Search monitored sites": "İzlenen siteleri arayın", - "ntfyPriorityHelptextAllEvents": "Tüm olaylar maksimum öncelik ile gönderilir", - "settingUpDatabaseMSG": "Veritabanı kuruluyor. Biraz zaman alabilir, lütfen sabırlı olun.", - "statusPageSpecialSlugDesc": "Özel slug {0}: slug belirtilmediğinde bu sayfa gösterilecektir", - "ntfyPriorityHelptextAllExceptDown": "Önceliği {1} olan {0}-olayları hariç tüm olaylar bu öncelik ile gönderilir", - "What is a Remote Browser?": "Uzak Tarayıcı Nedir?", - "Your User ID": "Kullanıcı kimliğiniz", - "Channel access token (Long-lived)": "Kanal erişim tokenı (Uzun ömürlü)", - "wayToGetHeiiOnCallDetails": "Tetikleyici Kimliği ve API Anahtarlarının nasıl alınacağı {dokümantasyon} bölümünde açıklanmıştır", - "documentationOf": "{0} Dokümantasyon", - "From Phone Number / Transmission Path Originating Address (TPOA)": "Telefon Numarasından / İletim Yolu Kaynak Adresinden (TPOA)", - "gtxMessagingFromHint": "Cep telefonlarında, alıcılarınız mesajın göndericisi olarak görüntülenen TPOA'yı görür. En fazla 11 alfanümerik karakter, bir kısa kod, yerel uzun kod veya uluslararası numaralara izin verilir ({e164}, {e212} veya {e214})", - "To Phone Number": "Telefon Numarasına", - "gtxMessagingToHint": "Uluslararası format, başında \"+\" ile ({e164}, {e212} veya {e214})", - "gtxMessagingApiKeyHint": "API anahtarınızı şu adreste bulabilirsiniz: Yönlendirme Hesaplarım > Hesap Bilgilerini Göster > API Kimlik Bilgileri > REST API (v2.x)", - "Destination": "Varış Noktası", - "cellsyntDestination": "Alıcının uluslararası formattaki telefon numarası, baştaki 00 ve ardından ülke kodu, örneğin İngiltere numarası 07920 110 000 için 00447920110000 (toplamda en fazla 17 hane). HTTP isteği başına maksimum 25000 virgülle ayrılmış alıcı.", - "Allow Long SMS": "Uzun SMS'e İzin Ver", - "cellsyntSplitLongMessages": "Uzun mesajları en fazla 6 parçaya bölün. 153 x 6 = 918 karakter.", - "max 15 digits": "maksimum 15 hane", - "Originator type": "Kaynak tipi", - "Alphanumeric (recommended)": "Alfanümerik (önerilir)", - "Telephone number": "Telefon numarası", - "cellsyntOriginatortypeAlphanumeric": "Alfanümerik dize (maksimum 11 alfanümerik karakter). Alıcılar mesajı yanıtlayamaz.", - "cellsyntOriginatortypeNumeric": "Başında 00 olmadan uluslararası formatta telefon numarası içeren sayısal değer (maksimum 15 hane) (örneğin İngiltere numarası 07920 110 000 447920110000 olarak ayarlanmalıdır). Alıcılar mesajı yanıtlayabilir.", - "Originator": "Kaynak", - "cellsyntOriginator": "Alıcının cep telefonunda mesajın kaynağı olarak görünür. İzin verilen değerler ve işlev kaynaktipi parametresine bağlıdır.", - "callMeBotGet": "Burada {0}, {1} ve {2} için bir uç nokta oluşturabilirsiniz. Hız sınırlaması alabileceğinizi unutmayın. Hız limitleri şöyle görünür: {3}", - "wayToWriteWhapiRecipient": "Uluslararası ön eke sahip, ancak başında artı işareti olmayan telefon numarası ({0}), Kişi Kimliği ({1}) veya Grup Kimliği ({2}).", - "wayToGetWhapiUrlAndToken": "API URL'sini ve belirtecini {0} adresinden istediğiniz kanala girerek alabilirsiniz", - "whapiRecipient": "Telefon Numarası / Kişi Kimliği / Grup Kimliği", - "API URL": "API URL", - "max 11 alphanumeric characters": "maksimum 11 alfanümerik karakter", - "Mentioning": "Bahsetme", - "Don't mention people": "İnsanlardan bahsetme", - "Mention group": "Mention {grup}", - "wayToGetSevenIOApiKey": "App.seven.io > geliştirici > API anahtarı > yeşil ekle düğmesi altındaki kontrol panelini ziyaret edin", - "senderSevenIO": "Numara veya isim gönderiliyor", - "receiverSevenIO": "Alıcı numarası", - "apiKeySevenIO": "SevenIO API Anahtarı", - "receiverInfoSevenIO": "Alıcı numara Almanya'da değilse, numaranın önüne ülke kodunu eklemeniz gerekir (örneğin, ABD'den ülke kodu 1 için 017612121212 yerine 117612121212 kullanın)", - "locally configured mail transfer agent": "yerel olarak yapılandırılmış posta aktarım aracısı", - "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Bağlanmak istediğiniz sunucunun ana bilgisayar adını girin veya {local_mta} kullanmayı düşünüyorsanız {localhost} girin", - "Host URL": "Host URL", - "whatHappensAtForumPost": "Yeni bir forum gönderisi oluşturun. Bu, mevcut gönderiye mesaj YAYINLAMAZ. Mevcut gönderide yayınlamak için \"{option}\" seçeneğini kullanın", - "Command": "Komut", - "mongodbCommandDescription": "Veritabanına karşı bir MongoDB komutu çalıştırın. Mevcut komutlar hakkında bilgi için {dokümantasyona} bakın", - "Bitrix24 Webhook URL": "Bitrix24 Webhook URL", - "wayToGetBitrix24Webhook": "{0} adresindeki adımları izleyerek bir web kancası oluşturabilirsiniz", - "bitrix24SupportUserID": "Bitrix24'e kullanıcı kimliğinizi girin. Kullanıcının profiline giderek bağlantıdan kimliğini öğrenebilirsiniz.", - "Select message type": "Mesaj türünü seçin", - "Send to channel": "Kanala gönder", - "Create new forum post": "Yeni forum gönderisi oluştur", - "postToExistingThread": "Mevcut konuya / forum gönderisine gönder", - "forumPostName": "Forum gönderi adı", - "Refresh Interval": "Yenileme aralığı", - "Refresh Interval Description": "Durum sayfası her {0} saniyede bir tam site yenilemesi yapacaktır", - "ignoreTLSErrorGeneral": "Bağlantı için TLS/SSL hatasını yoksay", - "threadForumPostID": "Konu / Forum gönderi kimliği", - "e.g. {discordThreadID}": "Örneğin. {discordThreadID}", - "wayToGetDiscordThreadId": "Konu başlığı/forum gönderisi kimliği almak, kanal kimliği almaya benzer. Kimliklerin nasıl alınacağı hakkında daha fazla bilgi edinin {0}", - "smspartnerPhoneNumber": "Telefon numaraları", - "smspartnerSenderName": "SMS Gönderenin Adı", - "smspartnerApiurl": "API anahtarınızı {0} adresindeki kontrol panelinizde bulabilirsiniz", - "smspartnerPhoneNumberHelptext": "Numara uluslararası biçimde {0}, {1} olmalıdır. Birden çok sayı {2} ile ayrılmalıdır", - "smspartnerSenderNameInfo": "3..=11 normal karakter arasında olmalıdır", - "threemaRecipient": "Alıcı", - "threemaRecipientType": "Alıcı Tipi", - "threemaRecipientTypeIdentity": "Threema-ID", - "threemaRecipientTypePhone": "Telefon numarası", - "threemaRecipientTypeEmail": "E-posta Adresi", - "threemaSenderIdentity": "Ağ Geçidi Kimliği", - "threemaSenderIdentityFormat": "8 karakter, genellikle * ile başlar", - "threemaApiAuthenticationSecret": "Ağ Geçidi Kimliği Gizli Anahtarı", - "threemaBasicModeInfo": "Not: Bu entegrasyon, temel modda (sunucu tabanlı şifreleme) Threema Gateway'i kullanır. Daha fazla ayrıntıyı {0} adresinde bulabilirsiniz.", - "wayToGetThreemaGateway": "Threema Gateway {0}'e kaydolabilirsiniz.", - "threemaRecipientTypeIdentityFormat": "8 karakter", - "threemaRecipientTypePhoneFormat": "E.164, başında + olmadan", - "apiKeysDisabledMsg": "Kimlik doğrulama devre dışı olduğundan API anahtarları devre dışı bırakıldı.", - "now": "Şimdi", - "time ago": "{0} önce", - "-year": "-yıl", - "Json Query Expression": "JSON Sorgu İfadesi", - "and": "ve", - "cacheBusterParam": "{0} parametresini ekleyin", - "cacheBusterParamDescription": "Önbellekleri atlamak için rastgele oluşturulmuş parametre.", - "Community String": "Topluluk Metni", - "snmpCommunityStringHelptext": "Bu metin, SNMP özellikli cihazlara erişimi doğrulamak ve kontrol etmek için bir şifre işlevi görür. Bunu SNMP cihazınızın yapılandırmasıyla eşleştirin.", - "OID (Object Identifier)": "OID (Nesne Tanımlayıcı)", - "snmpOIDHelptext": "İzlemek istediğiniz sensörün veya durumun OID'sini girin. OID'den emin değilseniz MIB tarayıcıları veya SNMP yazılımı gibi ağ yönetimi araçlarını kullanın.", - "Condition": "Koşul", - "SNMP Version": "SNMP Sürümü", - "Please enter a valid OID.": "Lütfen geçerli bir OID girin.", - "groupOnesenderDesc": "Gruba mesaj göndermek için, GroupID değerinin geçerli olduğundan emin olun. Örneğin: 628123456789-342345", - "Group ID": "Grup Kimliği", - "wayToGetOnesenderUrlandToken": "Onesender web sitesine giderek URL'yi ve Jetonu alabilirsiniz. Daha fazla bilgi için {0}", - "Add Remote Browser": "Uzak Tarayıcı Ekle", - "New Group": "Yeni Grup", - "Host Onesender": "Onesender Host Adresi", - "Token Onesender": "Onesender Jetonu", - "Group Name": "Grup Adı", - "OAuth2: Client Credentials": "OAuth2: İstemci Kimlik Bilgileri", - "Recipient Type": "Alıcı Türü", - "Private Number": "Özel Numara", - "Authentication Method": "Kimlik Doğrulama Yöntemi", - "privateOnesenderDesc": "Özel numaralı telefona mesaj göndermek için, telefon numarasının geçerli olduğundan emin olun. Örneğin: 628123456789", - "Authorization Header": "Yetkilendirme Başlığı", - "Form Data Body": "Form Veri Gövdesi", - "Go back to home page.": "Ana sayfaya geri dönün.", - "No tags found.": "Etiket bulunamadı.", - "Lost connection to the socket server.": "Soket sunucusuyla bağlantı kesildi.", - "Cannot connect to the socket server.": "Soket sunucusuna bağlanılamıyor.", - "SIGNL4": "SIGNL4", - "SIGNL4 Webhook URL": "SIGNL4 Web Kancası URL'si", - "OAuth Token URL": "OAuth Jetonu URL'si", - "Client ID": "İstemci Kimliği", - "Client Secret": "İstemci Jetonu", - "OAuth Scope": "OAuth Kapsamı", - "Optional: Space separated list of scopes": "İsteğe bağlı: Kapsamların boşlukla ayrılmış listesi", - "signl4Docs": "SIGNL4'ün nasıl yapılandırılacağı ve SIGNL4 web kancası URL'sinin nasıl elde edileceği hakkında daha fazla bilgiyi {0} içinde bulabilirsiniz.", - "not contains": "içermez/içermiyor", - "starts with": "başlar/başlıyor", - "equals": "eşit", - "not starts with": "ile başlamaz", - "not equals": "eşit değil", - "contains": "içerir", - "conditionDeleteGroup": "Grubu Sil", - "conditionValuePlaceholder": "Değer", - "Conditions": "Koşullar", - "conditionAdd": "Koşul Ekle", - "conditionDelete": "Koşul Sil", - "conditionAddGroup": "Grup Ekle", - "ends with": "ile biter", - "not ends with": "ile bitmiyor", - "less than or equal to": "küçük veya eşit", - "greater than": "daha büyük", - "less than": "daha küçük", - "greater than or equal to": "büyük veya eşit", - "record": "kayıt", - "jsonQueryDescription": "JSON sorgusunu kullanarak sunucunun JSON yanıtından belirli verileri ayrıştırın ve çıkarın. JSON beklemiyorsanız ham yanıt için \"$\" sembolünü kullanın. Sonuç daha sonra metin olarak beklenen değerle karşılaştırılır. Belgeler için {0}'a bakın ve sorgularla denemeler yapmak için {1}'i kullanın.", - "shrinkDatabaseDescriptionSqlite": "SQLite için {vacuum} veritabanını tetikle. {auto_vacuum} zaten etkin ancak bu, {vacuum} komutunun yaptığı gibi veritabanını birleştirmez veya tek tek veritabanı sayfalarını yeniden paketlemez." -} +{ + "languageName": "Türkçe", + "checkEverySecond": "{0} saniyede bir kontrol et", + "retryCheckEverySecond": "{0} saniyede bir dene", + "resendEveryXTimes": "Her {0} bir yeniden gönder", + "resendDisabled": "Yeniden gönderme devre dışı", + "retriesDescription": "Servisin kapalı olarak işaretlenmeden ve bir bildirim gönderilmeden önce maksimum yeniden deneme sayısı", + "ignoreTLSError": "HTTPS web siteleri için TLS/SSL hatalarını yok say", + "upsideDownModeDescription": "Servisin durumunu tersine çevirir. Servis çalışıyorsa kapalı olarak işaretler.", + "maxRedirectDescription": "İzlenecek maksimum yönlendirme sayısı. Yönlendirmeleri devre dışı bırakmak için 0'a ayarlayın.", + "acceptedStatusCodesDescription": "Başarılı bir yanıt olarak kabul edilen durum kodlarını seçin.", + "passwordNotMatchMsg": "Şifre eşleşmiyor.", + "notificationDescription": "Servislerin bildirim gönderebilmesi için bir bildirim yöntemi belirleyin.", + "keywordDescription": "Anahtar kelimeyi düz html veya JSON yanıtında arayın ve büyük/küçük harfe duyarlıdır.", + "pauseDashboardHome": "Durdur", + "deleteMonitorMsg": "Servisi silmek istediğinden emin misin?", + "deleteNotificationMsg": "Bu bildirimi tüm servisler için silmek istediğinden emin misin?", + "dnsPortDescription": "DNS sunucusu bağlantı noktası. Varsayılan değer 53'tür. Bağlantı noktasını istediğiniz zaman değiştirebilirsiniz.", + "resolverserverDescription": "Cloudflare varsayılan sunucudur, çözümleyici sunucusunu istediğiniz zaman değiştirebilirsiniz.", + "rrtypeDescription": "İzlemek istediğiniz servisin RR-Tipini seçin", + "pauseMonitorMsg": "Durdurmak istediğinden emin misin?", + "enableDefaultNotificationDescription": "Bu bildirim yeni monitörler için varsayılan olarak etkinleştirilecektir. Bildirimi her monitör için ayrı ayrı devre dışı bırakabilirsiniz.", + "clearEventsMsg": "Bu servisin bütün kayıtlarını silmek istediğinden emin misin?", + "clearHeartbeatsMsg": "Bu servis için tüm sağlık durumunu silmek istediğinden emin misin?", + "confirmClearStatisticsMsg": "Tüm istatistikleri silmek istediğinden emin misin?", + "importHandleDescription": "Aynı isimdeki bütün servisleri ve bildirimleri atlamak için 'Var olanı atla' seçiniz. 'Üzerine yaz' var olan bütün servisleri ve bildirimleri silecektir.", + "confirmImportMsg": "Yedeği içeri aktarmak istediğinize emin misiniz? Lütfen doğru içeri aktarma seçeneğini seçtiğinizden emin olunuz.", + "twoFAVerifyLabel": "2FA doğrulamasını sağlamak için lütfen token bilgisini giriniz:", + "tokenValidSettingsMsg": "Token geçerli! Şimdi 2FA ayarlarını kaydedebilirsiniz.", + "confirmEnableTwoFAMsg": "2FA'ı etkinleştirmek istediğinizden emin misiniz?", + "confirmDisableTwoFAMsg": "2FA'ı devre dışı bırakmak istediğinize emin misiniz?", + "Settings": "Ayarlar", + "Dashboard": "Panel", + "New Update": "Yeni Güncelleme", + "Language": "Dil", + "Appearance": "Görünüm", + "Theme": "Tema", + "General": "Genel", + "Primary Base URL": "Birincil Temel URL", + "Version": "Versiyon", + "Check Update On GitHub": "GitHub'da Güncellemeyi Kontrol Edin", + "List": "Liste", + "Add": "Ekle", + "Add New Monitor": "Yeni Servis Ekle", + "Quick Stats": "Servis istatistikleri", + "Up": "Normal", + "Down": "Hatalı", + "Pending": "Bekliyor", + "Unknown": "Bilinmeyen", + "Pause": "Durdur", + "Name": "Servis ismi", + "Status": "Durum", + "DateTime": "Zaman", + "Message": "Mesaj", + "No important events": "Önemli olay yok", + "Resume": "Devam et", + "Edit": "Düzenle", + "Delete": "Sil", + "Current": "Şu anda", + "Uptime": "Çalışma zamanı", + "Cert Exp.": "Sertifika Geçerlilik Süresi.", + "day": "gün | günler", + "-day": "-gün", + "hour": "saat", + "-hour": "-saat", + "Response": "Cevap Süresi", + "Ping": "Ping", + "Monitor Type": "Servis Tipi", + "Keyword": "Anahtar Kelime", + "Friendly Name": "Panelde görünecek isim", + "URL": "URL", + "Hostname": "Hostname", + "Port": "Port", + "Heartbeat Interval": "Servis Test Aralığı", + "Retries": "Yeniden deneme", + "Heartbeat Retry Interval": "Sağlık Durumları Tekrar Deneme Sıklığı", + "Resend Notification if Down X times consecutively": "Art arda X kez düşerse bildirimi yeniden gönder", + "Advanced": "Gelişmiş", + "Upside Down Mode": "Ters/Düz Modu", + "Max. Redirects": "Maksimum Yönlendirme", + "Accepted Status Codes": "Kabul Edilen Durum Kodları", + "Push URL": "Push URL", + "needPushEvery": "Bu URL'yi her {0} saniyede bir aramalısınız.", + "pushOptionalParams": "İsteğe bağlı parametreler: {0}", + "Save": "Kaydet", + "Notifications": "Bildirimler", + "Not available, please setup.": "Mevcut değil, lütfen ayarlardan belirleyin.", + "Setup Notification": "Bildirim yöntemi ayarla", + "Light": "Açık", + "Dark": "Koyu", + "Auto": "Oto", + "Theme - Heartbeat Bar": "Servis Bar Konumu", + "Normal": "Normal", + "Bottom": "Aşağıda", + "None": "Gösterme", + "Timezone": "Zaman Dilimi", + "Search Engine Visibility": "Arama Motoru Görünürlüğü", + "Allow indexing": "İndekslemeye izin ver", + "Discourage search engines from indexing site": "İndekslemeyi reddet", + "Change Password": "Şifre Değiştir", + "Current Password": "Şuan ki Şifre", + "New Password": "Yeni Şifre", + "Repeat New Password": "Yeni Şifreyi Tekrar Girin", + "Update Password": "Şifreyi Değiştir", + "Disable Auth": "Şifreli girişi iptal et", + "Enable Auth": "Şifreli girişi aktif et", + "disableauth.message1": "{disableAuth}emin misiniz?", + "disable authentication": "Şifreli girişi devre dışı bırakmak istediğinizden", + "disableauth.message2": "Bu, Uptime Kuma'nın önünde Cloudflare Access gibi {intendThirdPartyAuth} kişiler içindir.", + "where you intend to implement third-party authentication": "üçüncü taraf yetkilendirmesi olan", + "Please use this option carefully!": "Lütfen dikkatli kullanın!", + "Logout": "Çıkış yap", + "Leave": "Ayrıl", + "I understand, please disable": "Evet farkındayım, iptal et", + "Confirm": "Onayla", + "Yes": "Evet", + "No": "Hayır", + "Username": "Kullanıcı Adı", + "Password": "Şifre", + "Remember me": "Beni Hatırla", + "Login": "Giriş yap", + "No Monitors, please": "Servis yok, lütfen", + "add one": "bir servis ekleyin", + "Notification Type": "Bildirim Yöntemi", + "Email": "E-mail", + "Test": "Test", + "Certificate Info": "Sertifika Bilgisi", + "Resolver Server": "Çözümleyici Sunucu", + "Resource Record Type": "Kaynak Kayıt Türü", + "Last Result": "En son sonuçlar", + "Create your admin account": "Yönetici hesabınızı oluşturun", + "Repeat Password": "Şifrenizi tekrar girin", + "Import Backup": "Yedeği içe aktar", + "Export Backup": "Yedeği dışa aktar", + "Export": "Dışa aktar", + "Import": "İçe aktar", + "respTime": "Cevap Süresi (ms)", + "notAvailableShort": "N/A", + "Default enabled": "Varsayılan etkinleştirilmiş", + "Apply on all existing monitors": "Var olan bütün servislere uygula", + "Create": "Oluştur", + "Clear Data": "Verileri Temizle", + "Events": "Olaylar", + "Heartbeats": "Sağlık Durumları", + "Auto Get": "Otomatik Al", + "backupDescription": "Bütün servisleri ve bildirimleri JSON dosyasına yedekleyebilirsiniz.", + "backupDescription2": "Not: Geçmiş ve etkinlik verileri içinde değildir.", + "backupDescription3": "Dışa aktarma dosyasında bildirim tokeni gibi hassas veriler bulunur, dikkatli bir şekilde saklayınız.", + "alertNoFile": "İçeri aktarmak için bir dosya seçiniz.", + "alertWrongFileType": "Lütfen bir JSON dosyası seçiniz.", + "Clear all statistics": "Bütün istatistikleri temizle", + "Skip existing": "Var olanı atla", + "Overwrite": "Üzerine yaz", + "Options": "Seçenekler", + "Keep both": "İkisini sakla", + "Verify Token": "Tokeni doğrula", + "Setup 2FA": "2FA Ayarla", + "Enable 2FA": "2FA Etkinleştir", + "Disable 2FA": "2FA Devre dışı bırak", + "2FA Settings": "2FA Ayarları", + "Two Factor Authentication": "İki Faktörlü Kimlik Doğrulama (2FA)", + "Active": "Aktif", + "Inactive": "İnaktif", + "Token": "Token", + "Show URI": "URI'yi göster", + "Tags": "Etiketler", + "Add New below or Select...": "Aşağıya Yeni Ekle veya Seç…", + "Tag with this name already exist.": "Bu ada sahip etiket zaten var.", + "Tag with this value already exist.": "Bu değere sahip etiket zaten var.", + "color": "renk", + "value (optional)": "değer (isteğe bağlı)", + "Gray": "Gri", + "Red": "Kırmızı", + "Orange": "Turuncu", + "Green": "Yeşil", + "Blue": "Mavi", + "Indigo": "Çivit mavisi", + "Purple": "Mor", + "Pink": "Pembe", + "Search...": "Ara…", + "Avg. Ping": "Ortalama Ping", + "Avg. Response": "Ortalama Cevap Süresi", + "Entry Page": "Giriş Sayfası", + "statusPageNothing": "Burada hiçbir şey yok, lütfen bir grup veya servis ekleyin.", + "No Services": "Hizmet Yok", + "All Systems Operational": "Tüm Sistemler Operasyonel", + "Partially Degraded Service": "Kısmen Bozulmuş Hizmet", + "Degraded Service": "Bozulmuş Hizmet", + "Add Group": "Grup Ekle", + "Add a monitor": "Servis Ekle", + "Edit Status Page": "Durum Sayfasını Düzenle", + "Go to Dashboard": "Panele Git", + "Status Page": "Durum Sayfası", + "Status Pages": "Durum Sayfaları", + "defaultNotificationName": "Benim {notification} Alarmım ({number})", + "here": "burada", + "Required": "Gerekli", + "telegram": "Telegram", + "Bot Token": "Bot Anahtarı", + "wayToGetTelegramToken": "{0} adresinden bir token alabilirsiniz.", + "Chat ID": "Chat ID", + "supportTelegramChatID": "Doğrudan Sohbet / Grup / Kanalın Sohbet Kimliğini Destekleyin", + "wayToGetTelegramChatID": "Bot'a bir mesaj göndererek ve chat_id'yi görüntülemek için bu URL'ye giderek sohbet kimliğinizi alabilirsiniz:", + "YOUR BOT TOKEN HERE": "BOT TOKENİNİZ BURADA", + "chatIDNotFound": "Chat ID bulunamadı; lütfen önce bu bota bir mesaj gönderin", + "webhook": "Webhook", + "Post URL": "Post URL", + "Content Type": "Content Type", + "webhookJsonDesc": "{0}, Express.js gibi tüm modern HTTP sunucuları için iyidir", + "webhookFormDataDesc": "{multipart} PHP için iyidir. JSON'un {decodeFunction} ile ayrıştırılması gerekecek", + "smtp": "E-mail (SMTP)", + "secureOptionNone": "Hiçbiri / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "TLS Hatasını Yoksay", + "From Email": "E-postadan", + "emailCustomSubject": "Özel Konu", + "To Email": "E-postaya", + "smtpCC": "CC", + "smtpBCC": "BCC", + "discord": "Discord", + "Discord Webhook URL": "Discord Webhook Bağlantısı", + "wayToGetDiscordURL": "Bunu Sunucu Ayarları -> Entegrasyonlar -> Webhookları Görüntüle -> Yeni Webhook Oluştur adımını izleyerek alabilirsiniz", + "Bot Display Name": "Botun Görünecek Adı", + "Prefix Custom Message": "Önek Özel Mesaj", + "Hello @everyone is...": "Merhaba {'@'}everyone…", + "teams": "Microsoft Teams", + "Webhook URL": "Webhook URL", + "wayToGetTeamsURL": "Bir webhook URL'sinin nasıl oluşturulacağını öğrenebilirsiniz {0}.", + "signal": "Sinyal", + "Number": "Numara", + "Recipients": "Alıcılar", + "needSignalAPI": "REST API ile bir signal istemciniz olması gerekiyor.", + "wayToCheckSignalURL": "Nasıl kurulacağını görmek için bu URL'yi kontrol edebilirsiniz:", + "signalImportant": "ÖNEMLİ: Alıcılarda grupları ve sayıları karıştıramazsınız!", + "gotify": "Gotify", + "Application Token": "Uygulama Tokeni", + "Server URL": "Sunucu URL", + "Priority": "Öncelik", + "Icon Emoji": "İkon Emoji", + "Channel Name": "Kanal Adı", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Webhook hakkında daha fazla bilgi: {0}", + "aboutChannelName": "Webhook kanalını atlamak istiyorsanız, {0} Kanal Adı alanına kanal adını girin. Ör: #diğer-kanal", + "aboutKumaURL": "Uptime Kuma URL alanını boş bırakırsanız, varsayılan olarak Project GitHub sayfası olur.", + "emojiCheatSheet": "Emoji referans sayfası: {0}", + "PushByTechulus": "Push by Techulus", + "apprise": "Apprise (50'den fazla Bildirim hizmetini destekler)", + "GoogleChat": "Google Chat (sadece Google Workspace)", + "pushbullet": "Pushbullet", + "User Key": "Kullancı Anahtarı", + "Device": "Cihaz", + "Message Title": "Mesaj Başlığı", + "Notification Sound": "Bilgilendirme sesi", + "More info on:": "Daha fazla bilgi: {0}", + "pushoverDesc1": "Acil durum önceliği (2), yeniden denemeler arasında varsayılan olarak 30 saniyelik bir zaman aşımına sahiptir ve 1 saat sonra sona erecektir.", + "pushoverDesc2": "Farklı cihazlara bildirim göndermek istiyorsanız Cihaz alanını doldurunuz.", + "SMS Type": "SMS Tipi", + "octopushTypePremium": "Premium (Hızlı - uyarı için önerilir)", + "octopushTypeLowCost": "Düşük Maliyet (Yavaş - bazen operatör tarafından engellenir)", + "checkPrice": "{0} fiyatlarını kontrol edin:", + "apiCredentials": "API kimlik bilgileri", + "octopushLegacyHint": "Octopush'un (2011-2020) eski sürümünü mü yoksa yeni sürümünü mü kullanıyorsunuz?", + "Check octopush prices": "Octopush fiyatlarını kontrol edin {0}.", + "octopushPhoneNumber": "Telefon numarası (uluslararası biçim, örneğin: +33612345678) ", + "octopushSMSSender": "SMS Gönderici Adı : 3-11 alfanümerik karakter ve boşluk (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Cihaz ID", + "Apprise URL": "Apprise Bağlantısı", + "Example:": "Örnek: {0}", + "Read more:": "Daha fazla oku: {0}", + "Status:": "Durum: {0}", + "Read more": "Daha fazla oku", + "appriseInstalled": "Apprise yüklendi.", + "appriseNotInstalled": "Appris yüklü değil. {0}", + "Access Token": "Erişim Tokeni", + "Channel access token": "Kanal erişim tokeni", + "Line Developers Console": "Line Geliştirici Konsolu", + "lineDevConsoleTo": "Line Geliştirici Konsolu - {0}", + "Basic Settings": "Temel Ayarlar", + "User ID": "Kullanıcı ID", + "Messaging API": "Mesajlaşma API'si", + "wayToGetLineChannelToken": "Önce {0}'e erişin, bir sağlayıcı ve kanal (Messaging API) oluşturun, ardından yukarıda belirtilen menü öğelerinden kanal erişim tokenini ve kullanıcı id alabilirsiniz.", + "Icon URL": "Simge URL", + "aboutIconURL": "Varsayılan profil resmini geçersiz kılmak için \"Simge URL\" bölümünde bir resme bağlantı sağlayabilirsiniz. Simge Emojisi ayarlanmışsa kullanılmayacaktır.", + "aboutMattermostChannelName": "Kanal adını \"Kanal Adı\" alanına girerek Webhook'un gönderi yaptığı varsayılan kanalı geçersiz kılabilirsiniz. Bunun Mattermost Webhook ayarlarında etkinleştirilmesi gerekir. Ör: #diğer-kanal", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - ucuz ama yavaş ve genellikle aşırı yüklü. Yalnızca Polonyalı alıcılarla sınırlıdır.", + "promosmsTypeFlash": "SMS FLASH - Mesaj, alıcı cihazda otomatik olarak gösterilecektir. Yalnızca Polonyalı alıcılarla sınırlıdır.", + "promosmsTypeFull": "SMS FULL - Premium SMS katmanı, Gönderici Adınızı kullanabilirsiniz (Önce adınızı kaydetmeniz gerekir). Uyarılar için güvenilir.", + "promosmsTypeSpeed": "SMS HIZI - Sistemde en yüksek öncelik. Çok hızlı ve güvenilir ancak maliyetli (SMS FULL fiyatının yaklaşık iki katı).", + "promosmsPhoneNumber": "Telefon numarası (Polonyalı alıcı için Alan kodlarını atlayabilirsiniz)", + "promosmsSMSSender": "SMS Gönderici Adı : Ön kayıtlı ad veya varsayılanlardan biri: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + "matrixHomeserverURL": "Homeserver URL (http(s):// ve isteğe bağlı olarak bağlantı noktası ile)", + "Internal Room Id": "Internal Room ID", + "matrixDesc1": "Internal Room ID'sini, Matrix istemcinizdeki oda ayarlarının gelişmiş bölümüne bakarak bulabilirsiniz. !QMdRCpUIfLwsfjxye6:home.server gibi görünmelidir.", + "matrixDesc2": "Hesabınıza ve katıldığınız tüm odalara tam erişime izin vereceğinden, yeni bir kullanıcı oluşturmanız ve kendi Matrix kullanıcınızın erişim belirtecini kullanmamanız şiddetle tavsiye edilir. Bunun yerine, yeni bir kullanıcı oluşturun ve onu yalnızca bildirimi almak istediğiniz odaya davet edin. {0} komutunu çalıştırarak erişim tokenini alabilirsiniz.", + "Method": "Yöntem", + "Body": "Gövde", + "Headers": "Başlıklar", + "PushUrl": "Push URL", + "HeadersInvalidFormat": "İstek başlıkları geçerli JSON değil. ", + "BodyInvalidFormat": "İstek gövdesi geçerli JSON değil: ", + "Monitor History": "Servis Geçmişi", + "clearDataOlderThan": "{0} gün boyunca izleme geçmişi verilerini saklayın.", + "PasswordsDoNotMatch": "Parolalar uyuşmuyor.", + "records": "kayıtlar", + "One record": "Bir Kayıt", + "steamApiKeyDescription": "Bir Steam Oyun Sunucusunu izlemek için bir Steam Web-API anahtarına ihtiyacınız vardır. API anahtarınızı buradan kaydedebilirsiniz: ", + "Current User": "Şu anki kullanıcı", + "topic": "Başlık", + "topicExplanation": "İzlenecek MQTT servisi", + "successMessage": "Başarılı Mesaj", + "successMessageExplanation": "Başarılı olarak kabul edilecek MQTT mesajı", + "recent": "Son", + "Done": "Tamamlandı", + "Info": "Bilgi", + "Security": "Güvenlik", + "Steam API Key": "Steam API Anahtarı", + "Shrink Database": "Veritabanını Küçült", + "Pick a RR-Type...": "Bir RR-Tipi seçin…", + "Pick Accepted Status Codes...": "Kabul Edilen Durum Kodlarını Seçin…", + "Default": "Varsayılan", + "HTTP Options": "HTTP Ayarları", + "Create Incident": "Olay Oluştur", + "Title": "Başlık", + "Content": "İçerik", + "Style": "Stil", + "info": "info", + "warning": "uyarı", + "danger": "tehlike", + "error": "hata", + "critical": "kritik", + "primary": "öncelik", + "light": "hafif", + "dark": "koyu", + "Post": "Post", + "Please input title and content": "Lütfen başlık ve içerik girin", + "Created": "Oluşturuldu", + "Last Updated": "Son Güncelleme", + "Unpin": "Sabitlemeyi Kaldır", + "Switch to Light Theme": "Açık Temaya Geç", + "Switch to Dark Theme": "Karanlık Temaya Geç", + "Show Tags": "Etiketleri Göster", + "Hide Tags": "Etiketleri Gizle", + "Description": "Açıklama", + "No monitors available.": "Kullanılabilir servis yok.", + "Add one": "Bir tane ekle", + "No Monitors": "Servis Yok", + "Untitled Group": "Adsız Grup", + "Services": "Hizmetler", + "Discard": "İptal Et", + "Cancel": "İptal Et", + "Powered by": "Tarafından desteklenmektedir", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Kullanıcı Adı (webapi_ öneki dahil)", + "serwersmsAPIPassword": "API Şifre", + "serwersmsPhoneNumber": "Telefon numarası", + "serwersmsSenderName": "SMS Gönderici Adı (müşteri portalı üzerinden kayıtlı)", + "stackfield": "Stackfield", + "Customize": "Özelleştirme", + "Custom Footer": "Özel Altbilgi", + "Custom CSS": "Özel CSS", + "smtpDkimSettings": "DKIM Ayarları", + "smtpDkimDesc": "Kullanım için lütfen Nodemailer DKIM'e {0} bakın.", + "documentation": "belgeler", + "smtpDkimDomain": "Alan adı", + "smtpDkimKeySelector": "Anahtar Seçici", + "smtpDkimPrivateKey": "Özel anahtar", + "smtpDkimHashAlgo": "Hash Algoritması (Opsiyonel)", + "smtpDkimheaderFieldNames": "İmzalanacak Başlık Anahtarları (Opsiyonel)", + "smtpDkimskipFields": "İmzalamayacak Başlık Anahtarları (Opsiyonel)", + "wayToGetPagerDutyKey": "Bunu Hizmet -> Hizmet Dizini -> (Bir hizmet seçin) -> Entegrasyonlar -> Entegrasyon ekle'ye giderek alabilirsiniz. Burada \"Events API V2\" için arama yapabilirsiniz. Daha fazla bilgi {0}", + "Integration Key": "Entegrasyon Anahtarı", + "Integration URL": "Entegrasyon URL'si", + "Auto resolve or acknowledged": "Otomatik çözümleme veya onaylandı", + "do nothing": "hiçbir şey yapma", + "auto acknowledged": "otomatik onaylandı", + "auto resolve": "otomatik çözümleme", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API Endpoint", + "alertaEnvironment": "Environment", + "alertaApiKey": "API Anahtarı", + "alertaAlertState": "Uyarı Durumu", + "alertaRecoverState": "Kurtarma Durumu", + "deleteStatusPageMsg": "Bu durum sayfasını silmek istediğinizden emin misiniz?", + "Proxies": "Proxy'ler", + "default": "Varsayılan", + "enabled": "Etkinleştirilmiş", + "setAsDefault": "Varsayılan Olarak Ayarla", + "deleteProxyMsg": "Bu proxy'yi tüm servisler için silmek istediğinizden emin misiniz?", + "proxyDescription": "Proxy'lerin çalışması için bir servise atanması gerekir.", + "enableProxyDescription": "Bu proxy, etkinleştirilene kadar izleme isteklerini etkilemeyecektir. Aktivasyon durumuna göre proxy'yi tüm servislerden geçici olarak devre dışı bırakabilirsiniz.", + "setAsDefaultProxyDescription": "Bu proxy, yeni servisler için varsayılan olarak etkinleştirilecektir. Yine de proxy'yi her bir servis için devre dışı bırakabilirsiniz.", + "Certificate Chain": "Sertifika Zinciri", + "Valid": "Geçerli", + "Invalid": "Geçersiz", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Gizli Anahtarı", + "PhoneNumbers": "Telefon numaraları", + "TemplateCode": "TemplateCode", + "SignName": "SignName", + "Sms template must contain parameters: ": "Sms şablonu parametreleri içermelidir: ", + "Bark Endpoint": "Bark Endpoint", + "Bark Group": "Bark Group", + "Bark Sound": "Bark Sound", + "WebHookUrl": "WebHookUrl", + "SecretKey": "SecretKey", + "For safety, must use secret key": "Güvenlik için gizli anahtar kullanılmalıdır", + "Device Token": "Cihaz Tokeni", + "Platform": "Platform", + "Huawei": "Huawei", + "High": "High", + "Retry": "Tekrar", + "Topic": "Başlık", + "WeCom Bot Key": "WeCom Bot Anahtarı", + "Setup Proxy": "Proxy Ayarla", + "Proxy Protocol": "Proxy Protokolü", + "Proxy Server": "Proxy Sunucusu", + "Proxy server has authentication": "Proxy sunucusunun kimlik doğrulaması var", + "User": "Kullanıcı", + "Installed": "Yüklenmiş", + "Not installed": "Yüklü değil", + "Running": "Çalışıyor", + "Not running": "Çalışmıyor", + "Remove Token": "Tokeni Kaldır", + "Start": "Başlat", + "Stop": "Durdur", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "Yeni Durum Sayfası Ekle", + "Slug": "Slug", + "Accept characters:": "Kabul edilen karakterler:", + "startOrEndWithOnly": "Yalnızca {0} ile başlayın veya bitirin", + "No consecutive dashes": "Ardışık tire yok", + "Next": "Sonraki", + "The slug is already taken. Please choose another slug.": "Slug zaten alındı. Lütfen başka bir slug seçin.", + "No Proxy": "Proxy Yok", + "Authentication": "Kimlik doğrulama", + "HTTP Basic Auth": "HTTP Temel Yetkilendirme", + "New Status Page": "Yeni Durum Sayfası", + "Page Not Found": "Sayfa bulunamadı", + "Reverse Proxy": "Ters Proxy", + "Backup": "Yedek", + "About": "Hakkında", + "wayToGetCloudflaredURL": "(Cloudflared'i {0} adresinden indirin)", + "cloudflareWebsite": "Cloudflare İnt. Sitesi", + "Message:": "Mesaj:", + "Don't know how to get the token? Please read the guide:": "Tokeni nasıl alacağınızı bilmiyor musunuz? Lütfen kılavuzu okuyun:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Halihazırda Cloudflare Tüneli üzerinden bağlanıyorsanız mevcut bağlantı kesilebilir. Durdurmak istediğinden emin misin? Onaylamak için mevcut şifrenizi yazın.", + "HTTP Headers": "HTTP Başlıkları", + "Trust Proxy": "Trust Proxy", + "Other Software": "Diğer Yazılımlar", + "For example: nginx, Apache and Traefik.": "Örneğin: nginx, Apache ve Traefik.", + "Please read": "Lütfen oku", + "Subject:": "Başlık:", + "Valid To:": "Geçerlilik:", + "Days Remaining:": "Kalan günler:", + "Issuer:": "Veren:", + "Fingerprint:": "Parmak izi:", + "No status pages": "Durum sayfası yok", + "Domain Name Expiry Notification": "Alan Adı Sona Erme Bildirimi", + "Proxy": "Proxy", + "Date Created": "Tarih Oluşturuldu", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "OneBot HTTP Adresi", + "onebotMessageType": "OneBot Mesaj Türü", + "onebotGroupMessage": "Grup", + "onebotPrivateMessage": "Özel", + "onebotUserOrGroupId": "Grup/Kullanıcı Kimliği", + "onebotSafetyTips": "Güvenlik için erişim tokeni ayarlamalısınız", + "PushDeer Key": "PushDeer Anahtarı", + "Footer Text": "Altbilgi metni", + "Show Powered By": "\"Powered by\" kısmını göster", + "Domain Names": "Alan isimleri", + "signedInDisp": "{0} olarak oturum açıldı", + "signedInDispDisabled": "Yetkilendirme Devre Dışı.", + "RadiusSecret": "Radius Gizli Anahtar", + "RadiusSecretDescription": "İstemci ve sunucu arasında paylaşılan gizli anahtar", + "RadiusCalledStationId": "Aranan İstasyon Kimliği", + "RadiusCalledStationIdDescription": "Aranan cihazın tanımlayıcısı", + "RadiusCallingStationId": "Arayan İstasyon Kimliği", + "RadiusCallingStationIdDescription": "Arayan cihazın tanımlayıcısı", + "Certificate Expiry Notification": "Sertifika Sona Erme Bildirimi", + "API Username": "API Kullanıc Adı", + "API Key": "API Anahtarı", + "Recipient Number": "Alıcı Numarası", + "From Name/Number": "İsimden/Numaradan", + "Leave blank to use a shared sender number.": "Paylaşılan bir gönderen numarası kullanmak için boş bırakın.", + "Octopush API Version": "Octopush API Sürümü", + "Legacy Octopush-DM": "Eski Octopush-DM", + "endpoint": "uç nokta", + "octopushAPIKey": "Kontrol panelindeki HTTP API kimlik bilgilerinden \"API Key\"", + "octopushLogin": "Kontrol panelindeki HTTP API kimlik bilgilerinden \"Login\"", + "promosmsLogin": "API Oturum Açma Adı", + "promosmsPassword": "API Şifresi", + "pushoversounds pushover": "Pushover (varsayılan)", + "pushoversounds bike": "Bisiklet", + "pushoversounds bugle": "Boru", + "pushoversounds cashregister": "Yazar kasa", + "pushoversounds classical": "Klasik", + "pushoversounds cosmic": "Kozmik", + "pushoversounds falling": "Düşme", + "pushoversounds gamelan": "Oyun Alanı", + "pushoversounds incoming": "Gelen", + "pushoversounds intermission": "Ara", + "pushoversounds magic": "Büyü", + "pushoversounds mechanical": "Mekanik", + "pushoversounds pianobar": "Piano", + "pushoversounds siren": "Siren", + "pushoversounds spacealarm": "Uzay Alarmı", + "pushoversounds tugboat": "Römorkör", + "pushoversounds alien": "Uzaylı Alarmı (uzun)", + "pushoversounds climb": "Tırmanış (uzun)", + "pushoversounds persistent": "Sürekli (uzun)", + "pushoversounds echo": "Pushover Yankı (uzun)", + "pushoversounds updown": "Yukarı Aşağı (uzun)", + "pushoversounds vibrate": "Sadece titreşim", + "pushoversounds none": "Yok (sessiz)", + "pushyAPIKey": "Gizli API Anahtarı", + "pushyToken": "Cihaz tokeni", + "Show update if available": "Varsa güncellemeyi göster", + "Also check beta release": "Ayrıca beta sürümünü kontrol edin", + "Using a Reverse Proxy?": "Ters Proxy mi Kullanıyorsunuz?", + "Check how to config it for WebSocket": "WebSocket için nasıl yapılandırılacağını kontrol edin", + "Steam Game Server": "Steam Oyun Sunucusu", + "Most likely causes:": "En olası nedenler:", + "The resource is no longer available.": "Kaynak artık mevcut değil.", + "There might be a typing error in the address.": "Adreste bir yazım hatası olabilir.", + "What you can try:": "Ne deneyebilirsin:", + "Retype the address.": "Adresi tekrar yazın.", + "Go back to the previous page.": "Bir önceki sayfaya geri git.", + "Coming Soon": "Yakında gelecek", + "wayToGetClickSendSMSToken": "API Kullanıcı Adı ve API Anahtarını {0} adresinden alabilirsiniz.", + "Connection String": "Bağlantı dizisi", + "Query": "Sorgu", + "settingsCertificateExpiry": "TLS Sertifikasının Geçerlilik Süresi", + "certificationExpiryDescription": "HTTPS Monitörleri, TLS sertifikasının süresi dolduğunda bildirimi tetikler:", + "Setup Docker Host": "Docker Ana Bilgisayarını Ayarla", + "Connection Type": "Bağlantı türü", + "Docker Daemon": "Docker Daemon", + "deleteDockerHostMsg": "Bu docker ana bilgisayarını tüm monitörler için silmek istediğinizden emin misiniz?", + "socket": "Soket", + "tcp": "TCP / HTTP", + "Docker Container": "Docker Konteyner", + "Container Name / ID": "Konteyner Adı / Kimliği", + "Docker Host": "Docker Ana Bilgisayarı", + "Docker Hosts": "Docker Ana Bilgisayarları", + "ntfy Topic": "ntfy Konu", + "Domain": "Alan Adı", + "Workstation": "İş İstasyonu", + "disableCloudflaredNoAuthMsg": "Yetki yok modundasınız, şifre gerekli değil.", + "trustProxyDescription": "'X-Forwarded-*' başlıklarına güvenin. Doğru istemci IP'sini almak istiyorsanız ve Uptime Kuma'nız Nginx veya Apache gibi bir proxy'nin arkasındaysa, bunu etkinleştirmelisiniz.", + "wayToGetLineNotifyToken": "{0} adresinden bir erişim jetonu alabilirsiniz", + "Examples": "Örnekler", + "Home Assistant URL": "Home Assistant Bağlantısı", + "Long-Lived Access Token": "Long-Lived Erişim Anahtarı", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Erişim Anahtarı, profil adınıza (sol altta) tıklayarak ve aşağıya kaydırarak ve ardından Anahtar Oluştur'a tıklayarak oluşturulabilir. ", + "Notification Service": "Bildirim Hizmeti", + "default: notify all devices": "varsayılan: tüm cihazları bilgilendir", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Cihazınızın/telefonunuzun adını bulmak için Home Assistant'ta \"Geliştirici Araçları > Hizmetler\" \"bildirim\" araması altında bir Bildirim Hizmetleri listesi bulunabilir.", + "Automations can optionally be triggered in Home Assistant:": "Otomasyonlar isteğe bağlı olarak Home Assistant'ta tetiklenebilir:", + "Trigger type:": "Trigger tipi:", + "Event type:": "Etkinlik tipi:", + "Event data:": "Etkinlik verileri:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Ardından bir eylem seçin, örneğin RGB ışığının kırmızı olduğu sahneyi değiştirin.", + "Frontend Version": "Frontend Sürümü", + "Frontend Version do not match backend version!": "Frontend Sürümü, backend sürümüyle eşleşmiyor!", + "Base URL": "Temel URL", + "goAlertInfo": "GoAlert, çağrı üzerine zamanlama, otomatik eskalasyonlar ve bildirimler (SMS veya sesli çağrılar gibi) için açık kaynaklı bir uygulamadır. Doğru kişiyi, doğru şekilde ve doğru zamanda otomatik olarak devreye sokun! {0}", + "goAlertIntegrationKeyInfo": "Servis için genel API entegrasyon anahtarını, genellikle kopyalanan URL'nin belirteç parametresinin değeri olan \"aaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" biçiminde alın.", + "goAlert": "GoAlert", + "backupOutdatedWarning": "Kullanımdan kaldırıldı: Birçok özellik eklendiğinden ve bu yedekleme özelliği biraz bakımsız olduğundan tam bir yedekleme oluşturamaz veya geri yükleyemez.", + "backupRecommend": "Lütfen bunun yerine birimi veya veri klasörünü (./data/) doğrudan yedekleyin.", + "enableGRPCTls": "TLS bağlantısıyla gRPC isteği göndermeye izin ver", + "grpcMethodDescription": "Yöntem adı, sayHello, check, vb. gibi camelCase biçimine dönüştürülür.", + "Maintenance": "Bakım", + "statusMaintenance": "Bakım", + "Schedule maintenance": "Bakım Planla", + "Affected Monitors": "Etkilenen Monitörler", + "Pick Affected Monitors...": "Etkilenen Monitörleri Seçin…", + "Start of maintenance": "Bakım başlangıcı", + "All Status Pages": "Tüm Durum Sayfaları", + "Select status pages...": "Durum sayfalarını seçin…", + "recurringIntervalMessage": "Her gün bir kez çalıştırın | {0} günde bir çalıştırın", + "affectedMonitorsDescription": "Geçerli bakımdan etkilenen monitörleri seçin", + "affectedStatusPages": "Bu bakım mesajını seçili durum sayfalarında göster", + "atLeastOneMonitor": "Etkilenen en az bir monitör seçin", + "deleteMaintenanceMsg": "Bu bakımı silmek istediğinizden emin misiniz?", + "ZohoCliq": "ZohoCliq", + "webhookAdditionalHeadersTitle": "Ek Başlıklar", + "webhookAdditionalHeadersDesc": "Webhook ile gönderilen ek başlıkları ayarlar. Her başlık bir JSON anahtarı/değeri olarak tanımlanmalıdır.", + "wayToGetZohoCliqURL": "Bir webhook URL'sinin nasıl oluşturulacağını öğrenebilirsiniz {0}.", + "Kook": "Kook", + "wayToGetKookBotToken": "Uygulama oluşturun ve {0} adresinde bot tokenı alın", + "wayToGetKookGuildID": "Kook ayarında \"Geliştirici Modu\"nu açın ve kimliğini almak için guild'e sağ tıklayın", + "Guild ID": "Guild ID", + "smseagle": "SMSEagle", + "smseagleTo": "Telefon numara(ları)", + "smseagleGroup": "Telefon defteri grubu ad(lar)ı", + "smseagleContact": "Telefon rehberi kişi ad(lar)ı", + "smseagleRecipientType": "Alıcı Türü", + "smseagleRecipient": "Alıcı(lar) (birden çok olanlar virgülle ayrılmalıdır)", + "smseagleToken": "API Erişim Tokenı", + "smseagleUrl": "SMSEagle cihaz URL\"niz", + "smseagleEncoding": "Unicode olarak gönder", + "smseaglePriority": "Mesaj önceliği (0-9, varsayılan = 0)", + "Optional": "İsteğe bağlı", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "SMSManager API Dökümanları ", + "Gateway Type": "Ağ Geçidi Türü", + "SMSManager": "SMSManager", + "You can divide numbers with": "Sayıları aşağıdakilerle bölebilirsiniz", + "or": "veya", + "recurringInterval": "Sıklık", + "Recurring": "Yineleme", + "strategyManual": "Manuel olarak Aktif/Pasif", + "warningTimezone": "Sunucunun kullandığı saat dilimi", + "weekdayShortMon": "Pzt", + "weekdayShortTue": "Sal", + "weekdayShortWed": "Çar", + "weekdayShortThu": "Per", + "weekdayShortFri": "Cum", + "weekdayShortSat": "Cmt", + "weekdayShortSun": "Paz", + "dayOfWeek": "Haftanın Günleri", + "dayOfMonth": "Ayın Günleri", + "lastDay": "Son Gün", + "lastDay1": "Ayın Son Günü", + "lastDay2": "Ayın 2. Son Günü", + "lastDay3": "Ayın 3. Son Günü", + "lastDay4": "Ayın 4. Son Günü", + "No Maintenance": "Bakım Yok", + "pauseMaintenanceMsg": "Duraklatmak istediğinizden emin misiniz?", + "maintenanceStatus-under-maintenance": "Bakımda", + "maintenanceStatus-inactive": "Etkin Değil", + "maintenanceStatus-scheduled": "Planlanmış", + "maintenanceStatus-ended": "Bitti", + "maintenanceStatus-unknown": "Bilinmiyor", + "Display Timezone": "Saat dilimini göster", + "Server Timezone": "Sunucu Saat Dilimi", + "statusPageMaintenanceEndDate": "Bitiş Zamanı", + "IconUrl": "Icon URL", + "Enable DNS Cache": "(Kullanımdan kaldırıldı) HTTP(ler) monitörleri için DNS Önbelleğini etkinleştirin", + "Enable": "Etkin", + "Disable": "Devre Dışı", + "dnsCacheDescription": "Bazı IPv6 ortamlarında çalışmıyor olabilir, herhangi bir sorunla karşılaşırsanız devre dışı bırakın.", + "Single Maintenance Window": "Tek Seferlik Bakım", + "Maintenance Time Window of a Day": "Bür Günlük Bakım", + "Effective Date Range": "Geçerlilik Tarihi Aralığı (Opsiyonel)", + "Schedule Maintenance": "Bakım Planla", + "Date and Time": "Tarih ve Saat", + "DateTime Range": "Tarih ve Saat Aralığı", + "Strategy": "Strateji", + "Free Mobile User Identifier": "Ücretsiz Mobil Kullanıcı ID", + "Free Mobile API Key": "Ücretsiz Mobil API Anahtarı", + "Enable TLS": "TLS'yi Etkinleştir", + "Proto Service Name": "Proto Service İsmi", + "Proto Method": "Proto Method", + "Proto Content": "Proto İçeriği", + "Economy": "Ekonomik", + "Lowcost": "Düşük maliyetli", + "high": "Yüksek", + "General Monitor Type": "Genel Monitör Tipi", + "Passive Monitor Type": "Pasif Monitör Tipi", + "Specific Monitor Type": "Özel Monitör Tipi", + "Help": "Yardım", + "Monitor": "Monitör | Monitörler", + "Custom": "Özel", + "dataRetentionTimeError": "Saklama süresi 0 veya daha büyük olmalıdır", + "confirmDeleteTagMsg": "Bu etiketi silmek istediğinizden emin misiniz? Bu etiketle ilişkili monitörler silinmez.", + "promosmsAllowLongSMS": "Uzun SMS'e izin ver", + "infiniteRetention": "Sonsuza dek saklamak için 0 giriniz.", + "rocket.chat": "Rocket.Chat", + "slack": "Slack", + "pushover": "Pushover", + "Game": "Oyun", + "Packet Size": "Paket Boyutu", + "Custom Monitor Type": "Özel Monitör Tipi", + "clicksendsms": "ClickSend SMS", + "loadingError": "Veriler getirilemiyor, lütfen daha sonra tekrar deneyin.", + "plugin": "Eklenti | Eklentiler", + "install": "Yükle", + "installing": "Yükleniyor", + "uninstall": "Kaldır", + "uninstalling": "Yükleme kaldırılıyor", + "confirmUninstallPlugin": "Bu eklentiyi kaldırmak istediğinizden emin misiniz?", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "line": "Line Messenger", + "mattermost": "Mattermost", + "markdownSupported": "Markdown yazım formatı desteklenir", + "Google Analytics ID": "Google Analytics Kodu", + "Edit Tag": "Etiketi Düzenle", + "Learn More": "Daha fazla bilgi edin", + "Server Address": "Sunucu Adresi", + "telegramMessageThreadIDDescription": "Forumun hedef ileti dizisi (konusu) için isteğe bağlı benzersiz kimlik; yalnızca forum üst grupları için geçerli", + "telegramMessageThreadID": "(İsteğe bağlı) Mesaj Thread ID", + "notificationRegional": "Bölgesel", + "telegramSendSilently": "Sessizce Gönder", + "telegramSendSilentlyDescription": "Mesajı sessizce gönderir. Kullanıcılar sessiz bir bildirim alacaktır.", + "telegramProtectContent": "Yönlendirmeyi/Kaydetmeyi Koru", + "telegramProtectContentDescription": "Etkinleştirilirse, Telegram'daki bot mesajları iletilmeye ve kaydedilmeye karşı korunacaktır.", + "Body Encoding": "JSON veya XML olabilen HTTP İstek Gövdesinin Kodlaması. İstek İçeriği Türü olarak da bilinir: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type", + "Clone Monitor": "Klon Monitör", + "Clone": "Klon", + "cloneOf": "{0} Monitörünün Klonu", + "Expiry": "son kullanma tarihi", + "Expiry date": "Son kullanma tarihi", + "Don't expire": "sona erme", + "Continue": "Devam etmek", + "Key Added": "Anahtar Eklendi", + "Add API Key": "API Anahtarı Ekle", + "No API Keys": "API Anahtarı Yok", + "apiKey-active": "Aktif", + "apiKey-expired": "Günü geçmiş", + "apiKey-inactive": "etkin değil", + "Expires": "süresi doluyor", + "disableAPIKeyMsg": "Bu API anahtarını devre dışı bırakmak istediğinizden emin misiniz?", + "deleteAPIKeyMsg": "Bu API anahtarını silmek istediğinizden emin misiniz?", + "Generate": "oluştur", + "API Keys": "api anahtarları", + "Add Another": "Başka birtane ekle", + "apiKeyAddedMsg": "API anahtarınız eklendi. Bir daha gösterilmeyeceği için lütfen not edin.", + "pagertreeUrgency": "Önem", + "pagertreeSilent": "Sessiz", + "pagertreeLow": "Düşük", + "pagertreeMedium": "Orta", + "pagertreeHigh": "Yüksek", + "pagertreeCritical": "Kritik", + "pagertreeDoNothing": "Hiçbir şey yapma", + "wayToGetPagerTreeIntegrationURL": "PagerTree'de Uptime Kuma entegrasyonunu oluşturduktan sonra Endpoint'i kopyalayın. Tüm ayrıntıları görün {0}", + "pagertreeIntegrationUrl": "Entegrasyon URL", + "pagertreeResolve": "Otomatik Çöz", + "lunaseaTarget": "Hedef", + "Add New Tag": "Yeni Etiket Ekle", + "lunaseaDeviceID": "Cihaz ID", + "lunaseaUserID": "Kullanıcı ID", + "statusPageRefreshIn": "{0} içinde yenilenecek", + "twilioAuthToken": "Kimlik Doğrulama Jetonu / Gizli Api Anahtarı", + "twilioFromNumber": "Gönderen Numara", + "twilioToNumber": "Alıcı Numara", + "twilioAccountSID": "Hesap ID", + "sameAsServerTimezone": "Sunucu Saat Dilimi ile aynı", + "startDateTime": "Başlangıç Tarihi/Saati", + "endDateTime": "Bitiş Tarihi/Saati", + "cronExpression": "Cron İfadesi", + "cronSchedule": "Zamanlama: ", + "invalidCronExpression": "Geçersiz Cron İfadesi: {0}", + "ntfyAuthenticationMethod": "Kimlik Doğrulama Yöntemi", + "ntfyUsernameAndPassword": "Kullanıcı adı ve şifre", + "pushoverMessageTtl": "Mesajın Yaşama Süresi (Saniye)", + "Show Clickable Link": "Tıklanabilir Bağlantıyı Göster", + "Open Badge Generator": "Rozet Oluşturucuyu Aç", + "Badge Generator": "{0} Rozet Oluşturucu", + "Badge Type": "Rozet Türü", + "Badge Duration": "Rozet Süresi", + "Badge Label": "Rozet Etiketi", + "Badge Prefix": "Rozet Değer Öneki", + "Badge Suffix": "Rozet Değer Soneki", + "Badge Label Color": "Rozet Etiket Rengi", + "Badge Color": "Rozet Rengi", + "Badge Label Prefix": "Rozet Etiket Öneki", + "Badge Label Suffix": "Rozet Etiket Eki", + "Badge Up Color": "Rozet Normal Rengi", + "Badge Down Color": "Rozet Hatalı Rengi", + "Badge Pending Color": "Rozet Bekleyen Rengi", + "Badge Maintenance Color": "Rozet Bakım Rengi", + "Badge Warn Color": "Rozet Uyarı Rengi", + "Badge Warn Days": "Rozet Uyarı Günleri", + "Badge Down Days": "Rozet Hatalı Günleri", + "Badge Style": "Rozet Stili", + "Badge value (For Testing only.)": "Rozet değeri (Yalnızca Test için.)", + "Badge URL": "Rozet URL'i", + "Monitor Setting": "{0}'nin Monitör Ayarı", + "Show Clickable Link Description": "Eğer işaretlenirse, bu durum sayfasına erişimi olan herkes monitor URL'ine erişebilir.", + "Group": "Grup", + "Monitor Group": "Monitor Grup", + "Cannot connect to the socket server": "Soket sunucusuna bağlanılamıyor", + "Edit Maintenance": "Bakımı Düzenle", + "Reconnecting...": "Yeniden bağlanılıyor...", + "Home": "Anasayfa", + "noGroupMonitorMsg": "Uygun değil. Önce bir Grup Monitörü oluşturun.", + "Close": "Kapalı", + "chromeExecutable": "Çalıştırılabilir Chrome/Chromium", + "chromeExecutableAutoDetect": "Otomatik algılama", + "chromeExecutableDescription": "Docker kullanıcıları için Chromium henüz kurulmamışsa, yüklenmesi ve test sonucunun görüntülenmesi birkaç dakika sürebilir. 1 GB disk alanı gerektirir.", + "Invert Keyword": "Anahtar Kelimeyi Ters Çevir", + "invertKeywordDescription": "Anahtar kelimenin mevcut olmasından ziyade mevcut olmamasına bakın.", + "webhookCustomBodyDesc": "İstek için özel bir HTTP Gövdesi tanımlayın. {msg}, {heartbeat}, {monitor} şablon değişkenleri kabul edilir.", + "webhookBodyPresetOption": "Ön ayar - {0}", + "webhookBodyCustomOption": "Özel Gövde", + "Request Body": "İstek Gövdesi", + "twilioApiKey": "Api Anahtarı (isteğe bağlı)", + "Expected Value": "Beklenen Değer", + "Json Query": "Json Sorgusu", + "Badge Duration (in hours)": "Rozet Süresi (saat cinsinden)", + "Badge Preview": "Rozet Önizlemesi", + "Notify Channel": "Bildirim Kanalı", + "aboutNotifyChannel": "Bildirim kanalı, müsaitlik durumu etkin veya uzakta olarak ayarlanmış olsun, kanalın tüm üyeleri için bir masaüstü veya mobil bildirimi tetikler.", + "filterActive": "Aktif", + "filterActivePaused": "Duraklatıldı", + "Enter the list of brokers": "Aracı listesine girin", + "Kafka Topic Name": "Kafka Başlık Adı", + "Kafka Producer Message": "Kafka Üretici Mesajı", + "Enable Kafka SSL": "Kafka SSL'i etkinleştir", + "Kafka SASL Options": "Kafka SASL Seçenekleri", + "Mechanism": "Mekanizma", + "Pick a SASL Mechanism...": "Bir SASL Mekanizması seçin…", + "Authorization Identity": "Yetki Kimliği", + "Secret AccessKey": "Gizli Erişim Anahtarı", + "Session Token": "Oturum Jetonu", + "Kafka Brokers": "Kafka Aracıları", + "Press Enter to add broker": "Aracı eklemek için Enter'a basın", + "Enable Kafka Producer Auto Topic Creation": "Kafka Üreticisi Otomatik Başlık Oluşturmayı Etkinleştir", + "AccessKey Id": "Erişim Anahtarı Kimliği", + "tailscalePingWarning": "Tailscale Ping monitörünü kullanabilmek için Docker olmadan Uptime Kuma kurmanız ve ayrıca sunucunuza Tailscale client kurmanız gerekmektedir.", + "Server URL should not contain the nfty topic": "Sunucu URL'si nfty konusunu içermemelidir", + "FlashDuty Severity": "Önem derecesi", + "nostrRelays": "Nostr röleleri", + "nostrRelaysHelp": "Satır başına bir geçiş URL'si", + "nostrSender": "Gönderen Özel Anahtarı (nsec)", + "nostrRecipients": "Alıcıların Genel Anahtarları (npub)", + "nostrRecipientsHelp": "npub biçimi, her satıra bir tane", + "showCertificateExpiry": "Sertifika Geçerlilik Süresini Göster", + "noOrBadCertificate": "Sertifika Yok/Geçersiz", + "Select": "Seç", + "PushDeer Server": "PushDeer Sunucusu", + "wayToGetFlashDutyKey": "Kanal -> (Bir Kanal Seçin) -> Entegrasyonlar -> Yeni bir entegrasyon ekle' sayfasına gidebilir, bir push adresi almak için 'Çalışma Süresi Kuma' ekleyebilir, Entegrasyon Anahtarını adrese kopyalayabilirsiniz. Daha fazla bilgi için lütfen ziyaret edin", + "selectedMonitorCount": "Seçildi: {0}", + "Check/Uncheck": "İşaretle/İşareti Kaldır", + "pushDeerServerDescription": "Resmi sunucuyu kullanmak için boş bırakın", + "Request Timeout": "İstek zaman aşımına uğradı", + "timeoutAfter": "{0} saniye sonra zaman aşımı", + "gamedigGuessPort": "Gamedig: Ziyaretçi Portu", + "gamedigGuessPortDescription": "Valve Server Sorgu Protokolü tarafından kullanılan bağlantı noktası, istemci bağlantı noktasından farklı olabilir. Monitör sunucunuza bağlanamıyorsa bunu deneyin.", + "styleElapsedTimeShowNoLine": "Göster (Satır Yok)", + "styleElapsedTime": "Kalp atışı çubuğunun altında geçen süre", + "styleElapsedTimeShowWithLine": "Göster (Satır ile birlikte)", + "enableNSCD": "Tüm DNS isteklerini önbelleğe almak için NSCD'yi (Ad Hizmeti Önbellek Programı) etkinleştirin", + "setupDatabaseEmbeddedMariaDB": "Hiçbir şey ayarlamanıza gerek yok. Bu docker imajı, MariaDB'yi sizin için otomatik olarak yerleştirdi ve yapılandırdı. Çalışma Süresi Kuma bu veritabanına unix soketi aracılığıyla bağlanacaktır.", + "setupDatabaseSQLite": "Küçük ölçekli dağıtımlar için önerilen basit bir veritabanı dosyası. v2.0.0'dan önce Uptime Kuma, varsayılan veritabanı olarak SQLite'ı kullanıyordu.", + "setupDatabaseChooseDatabase": "Hangi veritabanını kullanmak istersiniz?", + "setupDatabaseMariaDB": "Harici bir MariaDB veritabanına bağlanın. Veritabanı bağlantı bilgilerini ayarlamanız gerekir.", + "dbName": "Veritabanı ismi", + "Saved.": "Kaydedildi.", + "toastErrorTimeout": "Hata Bildirimleri için Zaman Aşımı", + "toastSuccessTimeout": "Başarı Bildirimleri için Zaman Aşımı", + "monitorToastMessagesLabel": "Toast bildirimlerini izleyin", + "monitorToastMessagesDescription": "Monitörler için bildirimler, saniye cinsinden belirli bir süre sonunda kaybolur. -1'e ayarlamak zaman aşımını devre dışı bırakır. 0'a ayarlamak, tost bildirimlerini devre dışı bırakır.", + "Bark API Version": "Bark API Sürümü", + "pushViewCode": "Push monitör nasıl kullanılır? (Kodu Görüntüle)", + "programmingLanguages": "Programlama dilleri", + "pushOthers": "Diğerleri", + "authInvalidToken": "Geçersiz Token.", + "authIncorrectCreds": "Kullanıcı adı ya da parola yanlış.", + "2faAlreadyEnabled": "2FA zaten etkin.", + "2faEnabled": "2FA Etkin.", + "2faDisabled": "2FA Devre Dışı.", + "successResumed": "Başarıyla Devam Edildi.", + "successPaused": "Başarıyla Duraklatıldı.", + "successDeleted": "Başarıyla silindi.", + "successEdited": "Başarıyla Düzenlendi.", + "successBackupRestored": "Yedekleme başarıyla geri yüklendi.", + "successDisabled": "Başarıyla Devre Dışı Bırakıldı.", + "successEnabled": "Başarıyla Etkinleştirildi.", + "tagNotFound": "Etiket bulunamadı.", + "authUserInactiveOrDeleted": "Kullanıcı etkin değil veya silinmiş.", + "successAdded": "Başarıyla eklendi.", + "successAuthChangePassword": "Şifre başarıyla güncellendi.", + "foundChromiumVersion": "Chromium/Chrome bulundu. Versiyon: {0}", + "Reset Token": "Jetonu Sıfırla", + "emailCustomisableContent": "Özelleştirilebilir içerik", + "smtpLiquidIntroduction": "Aşağıdaki iki alan Liquid şablonlama Dili aracılığıyla şablonlanabilir. Kullanım talimatları için lütfen {0}'a bakın. Bunlar mevcut değişkenlerdir:", + "leave blank for default subject": "varsayılan konu için boş bırakın", + "emailCustomBody": "Özel Gövde", + "leave blank for default body": "varsayılan gövde için boş bırakın", + "emailTemplateServiceName": "Hizmet Adı", + "emailTemplateHostnameOrURL": "Hostname veya URL", + "emailTemplateStatus": "Durum", + "emailTemplateMonitorJSON": "monitörü tanımlayan nesne", + "emailTemplateHeartbeatJSON": "kalp atışını tanımlayan nesne", + "liquidIntroduction": "Şablonlanabilirlik, Liquid şablonlama dili aracılığıyla sağlanır. Kullanım talimatları için lütfen {0}'a bakın. Bunlar mevcut değişkenlerdir:", + "templateMsg": "bildirim mesajı", + "templateHeartbeatJSON": "kalp atışını tanımlayan nesne", + "templateMonitorJSON": "monitörü tanımlayan nesne", + "templateLimitedToUpDownCertNotifications": "yalnızca Normal/Hatalı/Sertifika sona erme bildirimleri için kullanılabilir", + "templateLimitedToUpDownNotifications": "yalnızca Normal/Hatalı bildirimleri için kullanılabilir", + "emailTemplateMsg": "bildirim mesajı", + "emailTemplateLimitedToUpDownNotification": "yalnızca Normal/Hatalı kalp atışları için kullanılabilir, aksi takdirde boş", + "GrafanaOncallUrl": "Grafana Oncall URL'i", + "noDockerHostMsg": "Uygun değil. Önce Docker Ana Bilgisayarını Ayarlayın.", + "DockerHostRequired": "Lütfen bu monitör için Docker Ana Bilgisayarını ayarlayın.", + "Browser Screenshot": "Tarayıcı Ekran Görüntüsü", + "successKeyword": "Başarı Anahtar Kelimesi", + "successKeywordExplanation": "Başarılı olarak kabul edilecek MQTT anahtar kelimesi", + "Add a new expiry notification day": "Yeni bir sona erme bildirim günü ekle", + "Remove the expiry notification": "Sona erme bildirim gününü kaldır", + "setup a new monitor group": "yeni bir monitör grubu ayarla", + "Remove domain": "'{0}' alan adını kaldır", + "Remote Browsers": "Uzak Tarayıcılar", + "Remote Browser": "Uzak Tarayıcı", + "Add a Remote Browser": "Uzak Tarayıcı Ekle", + "Remote Browser not found!": "Uzak Tarayıcı bulunamadı!", + "remoteBrowsersDescription": "Uzak Tarayıcılar, Chromium'u yerel olarak çalıştırmanın bir alternatifidir. browserless.io gibi bir hizmet ile kurulum yapın veya kendi hizmetinize bağlanın", + "self-hosted container": "kendi kendine barındırılan konteyner", + "remoteBrowserToggle": "Varsayılan olarak Chromium, Uptime Kuma kapsayıcısının içinde çalışır. Bu anahtarı değiştirerek uzak bir tarayıcıyı kullanabilirsiniz.", + "useRemoteBrowser": "Uzak Tarayıcı Kullanın", + "deleteRemoteBrowserMessage": "Bu Uzak Tarayıcıyı tüm monitörler için silmek istediğinizden emin misiniz?", + "openModalTo": "modeli {0}'a aç", + "Add a domain": "Alan adı ekle", + "Search monitored sites": "İzlenen siteleri arayın", + "ntfyPriorityHelptextAllEvents": "Tüm olaylar maksimum öncelik ile gönderilir", + "settingUpDatabaseMSG": "Veritabanı kuruluyor. Biraz zaman alabilir, lütfen sabırlı olun.", + "statusPageSpecialSlugDesc": "Özel slug {0}: slug belirtilmediğinde bu sayfa gösterilecektir", + "ntfyPriorityHelptextAllExceptDown": "Önceliği {1} olan {0}-olayları hariç tüm olaylar bu öncelik ile gönderilir", + "What is a Remote Browser?": "Uzak Tarayıcı Nedir?", + "Your User ID": "Kullanıcı kimliğiniz", + "Channel access token (Long-lived)": "Kanal erişim tokenı (Uzun ömürlü)", + "wayToGetHeiiOnCallDetails": "Tetikleyici Kimliği ve API Anahtarlarının nasıl alınacağı {dokümantasyon} bölümünde açıklanmıştır", + "documentationOf": "{0} Dokümantasyon", + "From Phone Number / Transmission Path Originating Address (TPOA)": "Telefon Numarasından / İletim Yolu Kaynak Adresinden (TPOA)", + "gtxMessagingFromHint": "Cep telefonlarında, alıcılarınız mesajın göndericisi olarak görüntülenen TPOA'yı görür. En fazla 11 alfanümerik karakter, bir kısa kod, yerel uzun kod veya uluslararası numaralara izin verilir ({e164}, {e212} veya {e214})", + "To Phone Number": "Telefon Numarasına", + "gtxMessagingToHint": "Uluslararası format, başında \"+\" ile ({e164}, {e212} veya {e214})", + "gtxMessagingApiKeyHint": "API anahtarınızı şu adreste bulabilirsiniz: Yönlendirme Hesaplarım > Hesap Bilgilerini Göster > API Kimlik Bilgileri > REST API (v2.x)", + "Destination": "Varış Noktası", + "cellsyntDestination": "Alıcının uluslararası formattaki telefon numarası, baştaki 00 ve ardından ülke kodu, örneğin İngiltere numarası 07920 110 000 için 00447920110000 (toplamda en fazla 17 hane). HTTP isteği başına maksimum 25000 virgülle ayrılmış alıcı.", + "Allow Long SMS": "Uzun SMS'e İzin Ver", + "cellsyntSplitLongMessages": "Uzun mesajları en fazla 6 parçaya bölün. 153 x 6 = 918 karakter.", + "max 15 digits": "maksimum 15 hane", + "Originator type": "Kaynak tipi", + "Alphanumeric (recommended)": "Alfanümerik (önerilir)", + "Telephone number": "Telefon numarası", + "cellsyntOriginatortypeAlphanumeric": "Alfanümerik dize (maksimum 11 alfanümerik karakter). Alıcılar mesajı yanıtlayamaz.", + "cellsyntOriginatortypeNumeric": "Başında 00 olmadan uluslararası formatta telefon numarası içeren sayısal değer (maksimum 15 hane) (örneğin İngiltere numarası 07920 110 000 447920110000 olarak ayarlanmalıdır). Alıcılar mesajı yanıtlayabilir.", + "Originator": "Kaynak", + "cellsyntOriginator": "Alıcının cep telefonunda mesajın kaynağı olarak görünür. İzin verilen değerler ve işlev kaynaktipi parametresine bağlıdır.", + "callMeBotGet": "Burada {0}, {1} ve {2} için bir uç nokta oluşturabilirsiniz. Hız sınırlaması alabileceğinizi unutmayın. Hız limitleri şöyle görünür: {3}", + "wayToWriteWhapiRecipient": "Uluslararası ön eke sahip, ancak başında artı işareti olmayan telefon numarası ({0}), Kişi Kimliği ({1}) veya Grup Kimliği ({2}).", + "wayToGetWhapiUrlAndToken": "API URL'sini ve belirtecini {0} adresinden istediğiniz kanala girerek alabilirsiniz", + "whapiRecipient": "Telefon Numarası / Kişi Kimliği / Grup Kimliği", + "API URL": "API URL", + "max 11 alphanumeric characters": "maksimum 11 alfanümerik karakter", + "Mentioning": "Bahsetme", + "Don't mention people": "İnsanlardan bahsetme", + "Mention group": "Mention {grup}", + "wayToGetSevenIOApiKey": "App.seven.io > geliştirici > API anahtarı > yeşil ekle düğmesi altındaki kontrol panelini ziyaret edin", + "senderSevenIO": "Numara veya isim gönderiliyor", + "receiverSevenIO": "Alıcı numarası", + "apiKeySevenIO": "SevenIO API Anahtarı", + "receiverInfoSevenIO": "Alıcı numara Almanya'da değilse, numaranın önüne ülke kodunu eklemeniz gerekir (örneğin, ABD'den ülke kodu 1 için 017612121212 yerine 117612121212 kullanın)", + "locally configured mail transfer agent": "yerel olarak yapılandırılmış posta aktarım aracısı", + "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Bağlanmak istediğiniz sunucunun ana bilgisayar adını girin veya {local_mta} kullanmayı düşünüyorsanız {localhost} girin", + "Host URL": "Host URL", + "whatHappensAtForumPost": "Yeni bir forum gönderisi oluşturun. Bu, mevcut gönderiye mesaj YAYINLAMAZ. Mevcut gönderide yayınlamak için \"{option}\" seçeneğini kullanın", + "Command": "Komut", + "mongodbCommandDescription": "Veritabanına karşı bir MongoDB komutu çalıştırın. Mevcut komutlar hakkında bilgi için {dokümantasyona} bakın", + "Bitrix24 Webhook URL": "Bitrix24 Webhook URL", + "wayToGetBitrix24Webhook": "{0} adresindeki adımları izleyerek bir web kancası oluşturabilirsiniz", + "bitrix24SupportUserID": "Bitrix24'e kullanıcı kimliğinizi girin. Kullanıcının profiline giderek bağlantıdan kimliğini öğrenebilirsiniz.", + "Select message type": "Mesaj türünü seçin", + "Send to channel": "Kanala gönder", + "Create new forum post": "Yeni forum gönderisi oluştur", + "postToExistingThread": "Mevcut konuya / forum gönderisine gönder", + "forumPostName": "Forum gönderi adı", + "Refresh Interval": "Yenileme aralığı", + "Refresh Interval Description": "Durum sayfası her {0} saniyede bir tam site yenilemesi yapacaktır", + "ignoreTLSErrorGeneral": "Bağlantı için TLS/SSL hatasını yoksay", + "threadForumPostID": "Konu / Forum gönderi kimliği", + "e.g. {discordThreadID}": "Örneğin. {discordThreadID}", + "wayToGetDiscordThreadId": "Konu başlığı/forum gönderisi kimliği almak, kanal kimliği almaya benzer. Kimliklerin nasıl alınacağı hakkında daha fazla bilgi edinin {0}", + "smspartnerPhoneNumber": "Telefon numaraları", + "smspartnerSenderName": "SMS Gönderenin Adı", + "smspartnerApiurl": "API anahtarınızı {0} adresindeki kontrol panelinizde bulabilirsiniz", + "smspartnerPhoneNumberHelptext": "Numara uluslararası biçimde {0}, {1} olmalıdır. Birden çok sayı {2} ile ayrılmalıdır", + "smspartnerSenderNameInfo": "3..=11 normal karakter arasında olmalıdır", + "threemaRecipient": "Alıcı", + "threemaRecipientType": "Alıcı Tipi", + "threemaRecipientTypeIdentity": "Threema-ID", + "threemaRecipientTypePhone": "Telefon numarası", + "threemaRecipientTypeEmail": "E-posta Adresi", + "threemaSenderIdentity": "Ağ Geçidi Kimliği", + "threemaSenderIdentityFormat": "8 karakter, genellikle * ile başlar", + "threemaApiAuthenticationSecret": "Ağ Geçidi Kimliği Gizli Anahtarı", + "threemaBasicModeInfo": "Not: Bu entegrasyon, temel modda (sunucu tabanlı şifreleme) Threema Gateway'i kullanır. Daha fazla ayrıntıyı {0} adresinde bulabilirsiniz.", + "wayToGetThreemaGateway": "Threema Gateway {0}'e kaydolabilirsiniz.", + "threemaRecipientTypeIdentityFormat": "8 karakter", + "threemaRecipientTypePhoneFormat": "E.164, başında + olmadan", + "apiKeysDisabledMsg": "Kimlik doğrulama devre dışı olduğundan API anahtarları devre dışı bırakıldı.", + "now": "Şimdi", + "time ago": "{0} önce", + "-year": "-yıl", + "Json Query Expression": "JSON Sorgu İfadesi", + "and": "ve", + "cacheBusterParam": "{0} parametresini ekleyin", + "cacheBusterParamDescription": "Önbellekleri atlamak için rastgele oluşturulmuş parametre.", + "Community String": "Topluluk Metni", + "snmpCommunityStringHelptext": "Bu metin, SNMP özellikli cihazlara erişimi doğrulamak ve kontrol etmek için bir şifre işlevi görür. Bunu SNMP cihazınızın yapılandırmasıyla eşleştirin.", + "OID (Object Identifier)": "OID (Nesne Tanımlayıcı)", + "snmpOIDHelptext": "İzlemek istediğiniz sensörün veya durumun OID'sini girin. OID'den emin değilseniz MIB tarayıcıları veya SNMP yazılımı gibi ağ yönetimi araçlarını kullanın.", + "Condition": "Koşul", + "SNMP Version": "SNMP Sürümü", + "Please enter a valid OID.": "Lütfen geçerli bir OID girin.", + "groupOnesenderDesc": "Gruba mesaj göndermek için, GroupID değerinin geçerli olduğundan emin olun. Örneğin: 628123456789-342345", + "Group ID": "Grup Kimliği", + "wayToGetOnesenderUrlandToken": "Onesender web sitesine giderek URL'yi ve Jetonu alabilirsiniz. Daha fazla bilgi için {0}", + "Add Remote Browser": "Uzak Tarayıcı Ekle", + "New Group": "Yeni Grup", + "Host Onesender": "Onesender Host Adresi", + "Token Onesender": "Onesender Jetonu", + "Group Name": "Grup Adı", + "OAuth2: Client Credentials": "OAuth2: İstemci Kimlik Bilgileri", + "Recipient Type": "Alıcı Türü", + "Private Number": "Özel Numara", + "Authentication Method": "Kimlik Doğrulama Yöntemi", + "privateOnesenderDesc": "Özel numaralı telefona mesaj göndermek için, telefon numarasının geçerli olduğundan emin olun. Örneğin: 628123456789", + "Authorization Header": "Yetkilendirme Başlığı", + "Form Data Body": "Form Veri Gövdesi", + "Go back to home page.": "Ana sayfaya geri dönün.", + "No tags found.": "Etiket bulunamadı.", + "Lost connection to the socket server.": "Soket sunucusuyla bağlantı kesildi.", + "Cannot connect to the socket server.": "Soket sunucusuna bağlanılamıyor.", + "SIGNL4": "SIGNL4", + "SIGNL4 Webhook URL": "SIGNL4 Web Kancası URL'si", + "OAuth Token URL": "OAuth Jetonu URL'si", + "Client ID": "İstemci Kimliği", + "Client Secret": "İstemci Jetonu", + "OAuth Scope": "OAuth Kapsamı", + "Optional: Space separated list of scopes": "İsteğe bağlı: Kapsamların boşlukla ayrılmış listesi", + "signl4Docs": "SIGNL4'ün nasıl yapılandırılacağı ve SIGNL4 web kancası URL'sinin nasıl elde edileceği hakkında daha fazla bilgiyi {0} içinde bulabilirsiniz.", + "not contains": "içermez/içermiyor", + "starts with": "başlar/başlıyor", + "equals": "eşit", + "not starts with": "ile başlamaz", + "not equals": "eşit değil", + "contains": "içerir", + "conditionDeleteGroup": "Grubu Sil", + "conditionValuePlaceholder": "Değer", + "Conditions": "Koşullar", + "conditionAdd": "Koşul Ekle", + "conditionDelete": "Koşul Sil", + "conditionAddGroup": "Grup Ekle", + "ends with": "ile biter", + "not ends with": "ile bitmiyor", + "less than or equal to": "küçük veya eşit", + "greater than": "daha büyük", + "less than": "daha küçük", + "greater than or equal to": "büyük veya eşit", + "record": "kayıt", + "jsonQueryDescription": "JSON sorgusunu kullanarak sunucunun JSON yanıtından belirli verileri ayrıştırın ve çıkarın. JSON beklemiyorsanız ham yanıt için \"$\" sembolünü kullanın. Sonuç daha sonra metin olarak beklenen değerle karşılaştırılır. Belgeler için {0}'a bakın ve sorgularla denemeler yapmak için {1}'i kullanın.", + "shrinkDatabaseDescriptionSqlite": "SQLite için {vacuum} veritabanını tetikle. {auto_vacuum} zaten etkin ancak bu, {vacuum} komutunun yaptığı gibi veritabanını birleştirmez veya tek tek veritabanı sayfalarını yeniden paketlemez." +} diff --git a/src/lang/uk-UA.json b/src/lang/uk-UA.json index f813b4612..bd3d6a7d3 100644 --- a/src/lang/uk-UA.json +++ b/src/lang/uk-UA.json @@ -1,1061 +1,1061 @@ -{ - "languageName": "Українська", - "checkEverySecond": "Перевірка кожні {0} секунд", - "retriesDescription": "Максимальна кількість спроб перед позначенням сервісу як недоступного та надсиланням повідомлення", - "ignoreTLSError": "Ігнорувати помилки TLS/SSL для сайтів HTTPS", - "upsideDownModeDescription": "Реверс статусу сервісу. Якщо сервіс доступний, він позначається як НЕДОСТУПНИЙ.", - "maxRedirectDescription": "Максимальна кількість перенаправлень. Поставте 0, щоб вимкнути перенаправлення.", - "acceptedStatusCodesDescription": "Виберіть коди статусів для визначення доступності сервісу.", - "passwordNotMatchMsg": "Повторення паролю не збігається.", - "notificationDescription": "Прив'яжіть сповіщення до моніторів.", - "keywordDescription": "Пошук слова в чистому HTML або JSON-відповіді. Пошук чутливий до регістру.", - "pauseDashboardHome": "Пауза", - "deleteMonitorMsg": "Ви дійсно хочете видалити цей монітор?", - "deleteNotificationMsg": "Ви дійсно хочете видалити це сповіщення для всіх моніторів?", - "resolverserverDescription": "Cloudflare є сервером за замовчуванням. Ви завжди можете змінити цей сервер.", - "rrtypeDescription": "Виберіть тип ресурсного запису, який ви хочете відстежувати", - "pauseMonitorMsg": "Ви дійсно хочете поставити на паузу?", - "Settings": "Налаштування", - "Dashboard": "Панель керування", - "New Update": "Оновлення", - "Language": "Мова", - "Appearance": "Зовнішній вигляд", - "Theme": "Тема", - "General": "Загальне", - "Version": "Версія", - "Check Update On GitHub": "Перевірити оновлення на GitHub", - "List": "Список", - "Add": "Додати", - "Add New Monitor": "Новий монітор", - "Quick Stats": "Статистика", - "Up": "Доступний", - "Down": "Недоступний", - "Pending": "Очікування", - "Unknown": "Невідомо", - "Pause": "Пауза", - "Name": "Ім'я", - "Status": "Статус", - "DateTime": "Дата і час", - "Message": "Повідомлення", - "No important events": "Важливих подій немає", - "Resume": "Відновити", - "Edit": "Змінити", - "Delete": "Видалити", - "Current": "Поточний", - "Uptime": "Аптайм", - "Cert Exp.": "Сертифікат сп.", - "day": "день | днів", - "-day": "днів", - "hour": "година", - "-hour": "години", - "Response": "Відповідь", - "Ping": "Пінг", - "Monitor Type": "Тип монітора", - "Keyword": "Ключове слово", - "Friendly Name": "Ім'я", - "URL": "URL", - "Hostname": "Адреса хоста", - "Port": "Порт", - "Heartbeat Interval": "Частота опитування", - "Retries": "Спроб", - "Advanced": "Додатково", - "Upside Down Mode": "Реверс статусу", - "Max. Redirects": "Макс. кількість перенаправлень", - "Accepted Status Codes": "Припустимі коди статусу", - "Save": "Зберегти", - "Notifications": "Сповіщення", - "Not available, please setup.": "Недоступно, будь ласка, налаштуйте.", - "Setup Notification": "Створити сповіщення", - "Light": "Світла", - "Dark": "Темна", - "Auto": "Авто", - "Theme - Heartbeat Bar": "Тема - Смуга частоти опитування", - "Normal": "Звичайний", - "Bottom": "Знизу", - "None": "Відсутня", - "Timezone": "Часовий пояс", - "Search Engine Visibility": "Видимість для пошукових систем", - "Allow indexing": "Дозволити індексування", - "Discourage search engines from indexing site": "Заборонити індексування", - "Change Password": "Змінити пароль", - "Current Password": "Поточний пароль", - "New Password": "Новий пароль", - "Repeat New Password": "Повтор нового пароля", - "Update Password": "Оновити пароль", - "Disable Auth": "Вимкнути авторизацію", - "Enable Auth": "Увімкнути авторизацію", - "disableauth.message1": "Ви впевнені, що бажаєте {disableAuth}?", - "disable authentication": "вимкнути авторизацію", - "disableauth.message2": "Це підходить для {intendThirdPartyAuth} пееред відкриттям Uptime Kuma, наприклад Cloudflare Access.", - "where you intend to implement third-party authentication": "тих, у кого встановлена інша авторизація", - "Please use this option carefully!": "Будь ласка, використовуйте з обережністю!", - "Logout": "Вийти", - "Leave": "Відміна", - "I understand, please disable": "Я розумію, все одно відключити", - "Confirm": "Підтвердити", - "Yes": "Так", - "No": "Ні", - "Username": "Логін", - "Password": "Пароль", - "Remember me": "Запам'ятати мене", - "Login": "Увійти", - "No Monitors, please": "Моніторів немає, будь ласка", - "No Monitors": "Монітори відсутні", - "add one": "створіть новий", - "Notification Type": "Тип сповіщення", - "Email": "Пошта", - "Test": "Перевірка", - "Certificate Info": "Інформація про сертифікат", - "Resolver Server": "DNS сервер", - "Resource Record Type": "Тип ресурсного запису", - "Last Result": "Останній результат", - "Create your admin account": "Створіть обліковий запис адміністратора", - "Repeat Password": "Повторіть пароль", - "respTime": "Час відповіді (мс)", - "notAvailableShort": "Н/д", - "Create": "Створити", - "clearEventsMsg": "Ви дійсно хочете видалити всю статистику подій цього монітора?", - "clearHeartbeatsMsg": "Ви дійсно хочете видалити всю статистику опитувань цього монітора?", - "confirmClearStatisticsMsg": "Ви дійсно хочете видалити ВСЮ статистику?", - "Clear Data": "Видалити статистику", - "Events": "Події", - "Heartbeats": "Опитування", - "Auto Get": "Авто-отримання", - "enableDefaultNotificationDescription": "Для кожного нового монітора це сповіщення буде включено за замовчуванням. Ви все ще можете відключити сповіщення в кожному моніторі окремо.", - "Default enabled": "Використовувати за замовчуванням", - "Also apply to existing monitors": "Застосувати до існуючих моніторів", - "Export": "Експорт", - "Import": "Імпорт", - "backupDescription": "Ви можете зберегти резервну копію всіх моніторів та повідомлень у вигляді JSON-файлу.", - "backupDescription2": "P.S.: Історія та події збережені не будуть.", - "backupDescription3": "Важливі дані, такі як токени повідомлень, додаються під час експорту, тому зберігайте файли в безпечному місці.", - "alertNoFile": "Виберіть файл для імпорту.", - "alertWrongFileType": "Виберіть JSON-файл.", - "twoFAVerifyLabel": "Будь ласка, введіть свій токен, щоб перевірити роботу 2FA:", - "tokenValidSettingsMsg": "Токен дійсний! Тепер ви можете зберегти налаштування 2FA.", - "confirmEnableTwoFAMsg": "Ви дійсно хочете увімкнути 2FA?", - "confirmDisableTwoFAMsg": "Ви дійсно хочете вимкнути 2FA?", - "Apply on all existing monitors": "Застосувати до всіх існуючих моніторів", - "Verify Token": "Перевірити токен", - "Setup 2FA": "Налаштування 2FA", - "Enable 2FA": "Увімкнути 2FA", - "Disable 2FA": "Вимкнути 2FA", - "2FA Settings": "Налаштування 2FA", - "Two Factor Authentication": "Двофакторна аутентифікація", - "Active": "Активно", - "Inactive": "Неактивно", - "Token": "Токен", - "Show URI": "Показати URI", - "Clear all statistics": "Очистити статистику", - "retryCheckEverySecond": "Повтор кожні {0} секунд", - "importHandleDescription": "Виберіть \"Пропустити існуючі\", якщо ви хочете пропустити кожен монітор або повідомлення з таким же ім'ям. \"Перезаписати\" видалить кожен існуючий монітор або повідомлення та додасть заново. Варіант \"Не перевіряти\" примусово відновлює всі монітори і повідомлення, навіть якщо вони вже існують.", - "confirmImportMsg": "Ви дійсно хочете відновити резервну копію? Переконайтеся, що ви вибрали відповідний варіант імпорту.", - "Heartbeat Retry Interval": "Інтервал повтору опитування", - "Import Backup": "Імпорт", - "Export Backup": "Експорт", - "Skip existing": "Пропустити існуючі", - "Overwrite": "Перезаписати", - "Options": "Опції", - "Keep both": "Не перевіряти", - "Tags": "Теги", - "Add New below or Select...": "Додати новий або вибрати…", - "Tag with this name already exist.": "Такий тег вже існує.", - "Tag with this value already exist.": "Тег із таким значенням вже існує.", - "color": "колір", - "value (optional)": "значення (опціонально)", - "Gray": "Сірий", - "Red": "Червоний", - "Orange": "Помаранчевий", - "Green": "Зелений", - "Blue": "Синій", - "Indigo": "Індиго", - "Purple": "Пурпурний", - "Pink": "Рожевий", - "Search...": "Пошук…", - "Avg. Ping": "Середній пінг", - "Avg. Response": "Середній час відповіді", - "Entry Page": "Головна сторінка", - "statusPageNothing": "Тут порожньо. Додайте групу або монітор.", - "No Services": "Немає сервісів", - "All Systems Operational": "Всі системи працюють у штатному режимі", - "Partially Degraded Service": "Сервіси працюють частково", - "Degraded Service": "Всі сервіси не працюють", - "Add Group": "Додати групу", - "Add a monitor": "Додати монітор", - "Edit Status Page": "Редагувати", - "Go to Dashboard": "Панель управління", - "Status Page": "Сторінка статусу", - "Status Pages": "Сторінки статусу", - "Discard": "Скасування", - "Create Incident": "Створити інцидент", - "Switch to Dark Theme": "Темна тема", - "Switch to Light Theme": "Світла тема", - "telegram": "Telegram", - "webhook": "Вебхук", - "smtp": "Email (SMTP)", - "discord": "Discord", - "teams": "Microsoft Teams", - "signal": "Signal", - "gotify": "Gotify", - "slack": "Slack", - "rocket.chat": "Rocket.chat", - "pushover": "Pushover", - "pushy": "Pushy", - "octopush": "Octopush", - "promosms": "PromoSMS", - "lunasea": "LunaSea", - "apprise": "Apprise (Підтримка 50+ сервісів повідомлень)", - "pushbullet": "Pushbullet", - "line": "Line Messenger", - "mattermost": "Mattermost", - "Primary Base URL": "Основна URL", - "Push URL": "URL пуша", - "needPushEvery": "Цю URL необхідно викликати кожні {0} секунд.", - "pushOptionalParams": "Додаткові параметри: {0}", - "defaultNotificationName": "Моє сповіщення {notification} ({number})", - "here": "тут", - "Required": "Потрібно", - "Bot Token": "Токен бота", - "wayToGetTelegramToken": "Ви можете взяти токен тут - {0}.", - "Chat ID": "ID чату", - "supportTelegramChatID": "Підтримуються ID чатів, груп та каналів", - "wayToGetTelegramChatID": "Ви можете взяти ID вашого чату, відправивши повідомлення боту і перейшовши по цьому URL для перегляду chat_id:", - "YOUR BOT TOKEN HERE": "ВАШ ТОКЕН БОТА ТУТ", - "chatIDNotFound": "ID чату не знайдено; будь ласка, відправте спочатку повідомлення боту", - "Post URL": "Post URL", - "Content Type": "Тип контенту", - "webhookJsonDesc": "{0} підходить для будь-яких сучасних HTTP-серверів, наприклад Express.js", - "webhookFormDataDesc": "{multipart} підходить для PHP. JSON-вивід необхідно буде обробити за допомогою {decodeFunction}", - "secureOptionNone": "Ні / STARTTLS (25, 587)", - "secureOptionTLS": "TLS (465)", - "Ignore TLS Error": "Ігнорувати помилки TLS", - "From Email": "Від кого", - "emailCustomSubject": "Своя тема", - "To Email": "Кому", - "smtpCC": "Копія", - "smtpBCC": "Прихована копія", - "Discord Webhook URL": "Discord Вебхук URL", - "wayToGetDiscordURL": "Ви можете отримати його, перейшовши до Налаштування сервера -> Інтеграції -> Перегляд веб-хуків -> Новий веб-хук", - "Bot Display Name": "Ім'я бота, що відображається", - "Prefix Custom Message": "Свій префікс повідомлення", - "Hello @everyone is...": "Привіт {'@'}everyone це…", - "Webhook URL": "URL вебхука", - "wayToGetTeamsURL": "Як створити URL вебхука ви можете дізнатися тут - {0}.", - "Номер": "Номер", - "Recipients": "Одержувачі", - "needSignalAPI": "Вам необхідний клієнт Signal із підтримкою REST API.", - "wayToCheckSignalURL": "Пройдіть по цьому URL, щоб дізнатися як налаштувати такий клієнт:", - "signalImportant": "ВАЖЛИВО: Не можна змішувати в Одержувачах групи та номери!", - "Application Token": "Токен програми", - "Server URL": "URL сервера", - "Priority": "Пріоритет", - "Icon Emoji": "Іконка Emoji", - "Channel Name": "Ім'я каналу", - "Uptime Kuma URL": "Uptime Kuma URL", - "aboutWebhooks": "Більше інформації про вебхуки: {0}", - "aboutChannelName": "Введіть ім'я каналу в поле {0} Ім'я каналу, якщо ви хочете обійти канал вебхука. Наприклад: #other-channel", - "aboutKumaURL": "Якщо поле Uptime Kuma URL в налаштуваннях залишиться порожнім, за замовчуванням буде використовуватися посилання на проект на GitHub.", - "emojiCheatSheet": "Шпаргалка по Emoji: {0}", - "User Key": "Ключ користувача", - "Device": "Пристрій", - "Message Title": "Заголовок повідомлення", - "Notification Sound": "Звук сповіщення", - "More info on:": "Більше інформації: {0}", - "pushoverDesc1": "Екстренний пріоритет (2) має таймуут повтору за замовчуванням 30 секунд і закінчується через 1 годину.", - "pushoverDesc2": "Якщо ви бажаєте надсилати повідомлення різним пристроям, необхідно заповнити поле Пристрій.", - "SMS Type": "Тип SMS", - "octopushTypePremium": "Преміум (Швидкий - рекомендується для алертів)", - "octopushTypeLowCost": "Дешевий (Повільний - іноді блокується операторами)", - "checkPrice": "Тарифи {0}:", - "octopushLegacyHint": "Ви використовуєте стару версію Octopush (2011-2020) або нову?", - "Check octopush prices": "Тарифи Octopush {0}.", - "octopushPhoneNumber": "Номер телефону (між. формат, наприклад: +380123456789) ", - "octopushSMSSender": "Ім'я відправника SMS: 3-11 символів алвафіту, цифр та пробілів (a-zA-Z0-9)", - "LunaSea Device ID": "ID пристрою LunaSea", - "Apprise URL": "Apprise URL-адреса", - "Example:": "Приклад: {0}", - "Read more:": "Докладніше: {0}", - "Status:": "Статус: {0}", - "Read more": "Докладніше", - "appriseInstalled": "Apprise встановлено.", - "appriseNotInstalled": "Apprise не встановлено. {0}", - "Access Token": "Токен доступу", - "Channel access token": "Токен доступу каналу", - "Line Developers Console": "Консоль розробників Line", - "lineDevConsoleTo": "Консоль розробників Line - {0}", - "Basic Settings": "Базові налаштування", - "User ID": "ID користувача", - "Messaging API": "API повідомлень", - "wayToGetLineChannelToken": "Спочатку зайдіть в {0}, створіть провайдера та канал (API повідомлень), потім ви зможете отримати токен доступу каналу та ID користувача з вищезгаданих пунктів меню.", - "Icon URL": "URL іконки", - "aboutIconURL": "Ви можете надати посилання на іконку в полі \"URL іконки\", щоб перевизначити картинку профілю за замовчуванням. Не використовується, якщо задана іконка Emoji.", - "aboutMattermostChannelName": "Ви можете перевизначити канал за замовчуванням, в який пише вебхук, ввівши ім'я каналу в полі \"Ім'я каналу\". Це необхідно включити в налаштуваннях вебхука Mattermost. Наприклад: #other-channel", - "matrix": "Matrix", - "promosmsTypeEco": "SMS ECO - дешево та повільно, часто перевантажений. Тільки для одержувачів з Польщі.", - "promosmsTypeFlash": "SMS FLASH - повідомлення автоматично з'являться на пристрої одержувача. Тільки для одержувачів з Польщі.", - "promosmsTypeFull": "SMS FULL - преміум-рівень SMS, можна використовувати своє ім'я відправника (попередньо зареєструвавши його). Надійно для алертів.", - "promosmsTypeSpeed": "SMS SPEED - найвищий пріоритет у системі. Дуже швидко і надійно, але дуже дорого (вдвічі дорожче, ніж SMS FULL).", - "promosmsPhoneNumber": "Номер телефону (для одержувачів з Польщі можна пропустити код регіону)", - "promosmsSMSSender": "Ім'я відправника SMS: Зареєстроване або одне з імен за замовчуванням: InfoSMS, SMS Info, MaxSMS, INFO, SMS", - "Feishu WebHookURL": "Feishu WebHookURL", - "matrixHomeserverURL": "URL сервера (разом з http(s):// і опціонально порт)", - "Internal Room Id": "Внутрішній ID кімнати", - "matrixDesc1": "Внутрішній ID кімнати можна знайти в Подробицях у параметрах каналу вашого Matrix клієнта. Він повинен виглядати приблизно як !QMdRCpUIfLwsfjxye6:home.server.", - "matrixDesc2": "Рекомендується створити нового користувача і не використовувати токен доступу особистого користувача Matrix, тому що це спричиняє повний доступ до облікового запису та до кімнат, в яких ви є. Замість цього створіть нового користувача і запросіть його тільки в ту кімнату, в якій ви хочете отримувати повідомлення.Токен доступу можна отримати, виконавши команду {0}", - "Method": "Метод", - "Body": "Тіло", - "Headers": "Заголовки", - "PushUrl": "URL пуша", - "HeadersInvalidFormat": "Заголовки запиту некоректні JSON: ", - "BodyInvalidFormat": "Тіло запиту некоректне JSON: ", - "Monitor History": "Статистика", - "clearDataOlderThan": "Зберігати статистику за {0} днів.", - "PasswordsDoNotMatch": "Паролі не співпадають.", - "records": "записів", - "One record": "Один запис", - "steamApiKeyDescription": "Для моніторингу ігрового сервера Steam вам потрібен Web-API ключ Steam. Зареєструвати його можна тут: ", - "Certificate Chain": "Ланцюжок сертифікатів", - "Valid": "Дійсний", - "Hide Tags": "Приховати теги", - "Title": "Заголовок", - "Content": "Зміст", - "Post": "Опублікувати", - "Cancel": "Скасувати", - "Created": "Створено", - "Unpin": "Відкріпити", - "Show Tags": "Показати теги", - "recent": "Зараз", - "3h": "3 години", - "6h": "6 годин", - "24h": "24 години", - "1w": "1 тиждень", - "No monitors available.": "Немає доступних моніторів.", - "Add one": "Додати новий", - "Backup": "Резервна копія", - "Security": "Безпека", - "Shrink Database": "Стиснути базу даних", - "Current User": "Поточний користувач", - "About": "Про програму", - "Description": "Опис", - "Powered by": "Працює на основі скрипту від", - "Style": "Стиль", - "info": "ІНФО", - "warning": "УВАГА", - "danger": "ПОМИЛКА", - "primary": "ОСНОВНИЙ", - "light": "СВІТЛИЙ", - "dark": "ТЕМНИЙ", - "New Status Page": "Нова сторінка статусу", - "Show update if available": "Показувати доступні оновлення", - "Also check beta release": "Перевіряти оновлення для бета версій", - "Add New Status Page": "Додати сторінку статусу", - "Next": "Далі", - "Acz characters: a-z 0-9 -": "Дозволені символи: a-z 0-9 -", - "Start or end with a-z 0-9 only": "Початок та закінчення імені лише на символи: a-z 0-9", - "No consecutive dashes --": "Заборонено використовувати тире --", - "HTTP Options": "HTTP Опції", - "Authentication": "Аутентифікація", - "HTTP Basic Auth": "Базова HTTP", - "PushByTechulus": "Push by Techulus", - "clicksendsms": "ClickSend SMS", - "GoogleChat": "Google Chat (тільки Google Workspace)", - "apiCredentials": "API реквізити", - "Done": "Готово", - "Info": "Інфо", - "Steam API Key": "Steam API-Ключ", - "Pick a RR-Type...": "Виберіть RR-тип…", - "Pick Accepted Status Codes...": "Виберіть прийняті коди стану…", - "Default": "За замовчуванням", - "Please input title and content": "Будь ласка, введіть назву та зміст", - "Last Updated": "Останнє Оновлення", - "Untitled Group": "Група без назви", - "Services": "Сервіси", - "serwersms": "SerwerSMS.pl", - "serwersmsAPIUser": "API Користувач (включаючи префікс webapi_)", - "serwersmsAPIPassword": "API Пароль", - "serwersmsPhoneNumber": "Номер телефону", - "serwersmsSenderName": "SMS ім'я відправника (реєстрований через портал користувача)", - "stackfield": "Stackfield", - "smtpDkimSettings": "DKIM Налаштування", - "smtpDkimDesc": "Повернутися до Nodemailer DKIM {0} для використання.", - "documentation": "документація", - "smtpDkimDomain": "Ім'я домена", - "smtpDkimKeySelector": "Ключ", - "smtpDkimPrivateKey": "Приватний ключ", - "smtpDkimHashAlgo": "Алгоритм хеша (опціонально)", - "smtpDkimheaderFieldNames": "Заголовок ключів для підпису (опціонально)", - "smtpDkimskipFields": "Заколовок ключів не для підпису (опціонально)", - "gorush": "Gorush", - "alerta": "Alerta", - "alertaApiEndpoint": "Кінцева точка API", - "alertaEnvironment": "Середовище", - "alertaApiKey": "Ключ API", - "alertaAlertState": "Стан алерту", - "alertaRecoverState": "Стан відновлення", - "deleteStatusPageMsg": "Дійсно хочете видалити цю сторінку статусів?", - "Proxies": "Проксі", - "default": "За замовчуванням", - "enabled": "Активно", - "setAsDefault": "Встановити за замовчуванням", - "deleteProxyMsg": "Ви впевнені, що хочете видалити цей проксі для всіх моніторів?", - "proxyDescription": "Щоб функціонувати, монітору потрібно призначити проксі.", - "enableProxyDescription": "Цей проксі не впливатиме на запити моніторингу, доки його не буде активовано. Ви можете контролювати тимчасове відключення проксі з усіх моніторів за статусом активації.", - "setAsDefaultProxyDescription": "Цей проксі буде ввімкнено за умовчанням для нових моніторів. Ви все одно можете вимкнути проксі окремо для кожного монітора.", - "Invalid": "Недійсний", - "AccessKeyId": "AccessKey ID", - "SecretAccessKey": "AccessKey Secret", - "PhoneNumbers": "PhoneNumbers", - "TemplateCode": "TemplateCode", - "SignName": "SignName", - "Sms template must contain parameters: ": "Шаблон смс повинен містити параметри: ", - "Bark Endpoint": "Bark Endpoint", - "WebHookUrl": "WebHookUrl", - "SecretKey": "SecretKey", - "For safety, must use secret key": "Для безпеки необхідно використовувати секретний ключ", - "Device Token": "Токен пристрою", - "Platform": "Платформа", - "Huawei": "Huawei", - "High": "Високий", - "Retry": "Повтор", - "Topic": "Тема", - "WeCom Bot Key": "WeCom Bot ключ", - "Setup Proxy": "Налаштувати проксі", - "Proxy Protocol": "Протокол проксі", - "Proxy Server": "Проксі-сервер", - "Proxy server has authentication": "Проксі-сервер має аутентифікацію", - "User": "Користувач", - "Installed": "Встановлено", - "Not installed": "Не встановлено", - "Running": "Запущено", - "Not running": "Не запущено", - "Remove Token": "Видалити токен", - "Start": "Запустити", - "Stop": "Зупинити", - "Uptime Kuma": "Uptime Kuma", - "Slug": "Slug", - "Accept characters:": "Приймаються символи:", - "startOrEndWithOnly": "Починається або закінчується лише {0}", - "No consecutive dashes": "Без послідовних тире", - "The slug is already taken. Please choose another slug.": "Slug вже зайнятий. Будь ласка, виберіть інший slug.", - "No Proxy": "Без проксі", - "Page Not Found": "Сторінку не знайдено", - "Reverse Proxy": "Реверсивний проксі", - "wayToGetCloudflaredURL": "(Завантажити Cloudflare з {0})", - "cloudflareWebsite": "Веб-сайт Cloudflare", - "Message:": "Повідомлення:", - "Don't know how to get the token? Please read the guide:": "Не знаєте, як отримати токен? Прочитайте посібник:", - "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Поточне з’єднання може бути втрачено, якщо ви зараз під’єднуєтеся через Cloudflare Tunnel. Ви дійсно хочете зробити це? Для підтвердження введіть поточний пароль.", - "Other Software": "Інше програмне забезпечення", - "For example: nginx, Apache and Traefik.": "Наприклад: nginx, Apache і Traefik.", - "Please read": "Будь ласка, прочитайте", - "Subject:": "Тема:", - "Valid To:": "Дійсний до:", - "Days Remaining:": "Залишилось днів:", - "Issuer:": "Емітент:", - "Fingerprint:": "Відбиток:", - "No status pages": "Немає сторінок статусу", - "Domain Name Expiry Notification": "Сповіщення про закінчення терміну дії доменного імені", - "Proxy": "Проксі", - "Date Created": "Дата створення", - "onebotHttpAddress": "OneBot адреса HTTP", - "onebotMessageType": "OneBot тип повідомлення", - "onebotGroupMessage": "Група", - "onebotPrivateMessage": "Приватне", - "onebotUserOrGroupId": "ID групи/користувача", - "onebotSafetyTips": "Для безпеки необхідно встановити маркер доступу", - "PushDeer Key": "PushDeer ключ", - "Footer Text": "Текст нижнього колонтитула", - "Show Powered By": "Показувати платформу", - "Domain Names": "Доменні імена", - "signedInDisp": "Ви ввійшли як {0}", - "signedInDispDisabled": "Авторизація вимкнена.", - "Certificate Expiry Notification": "Сповіщення про закінчення терміну дії сертифіката", - "API Username": "Користувач API", - "API Key": "Ключ API", - "Recipient Number": "Номер одержувача", - "From Name/Number": "Від Ім'я/Номер", - "Leave blank to use a shared sender number.": "Залиште поле порожнім, щоб використовувати спільний номер відправника.", - "Octopush API Version": "Octopush API версія", - "Legacy Octopush-DM": "Застарілий Octopush-DM", - "endpoint": "кінцева точка", - "octopushAPIKey": "\"Ключ API\" з облікових даних HTTP API в панелі керування", - "octopushLogin": "\"Ім'я користувача\" з облікових даних HTTP API на панелі керування", - "promosmsLogin": "API Логін", - "promosmsPassword": "API Пароль", - "pushoversounds pushover": "Pushover (по замовчуванню)", - "pushoversounds bike": "Велосипед", - "pushoversounds bugle": "Горн", - "pushoversounds cashregister": "Касовий апарат", - "pushoversounds classical": "Classical", - "pushoversounds cosmic": "Cosmic", - "pushoversounds falling": "Падіння", - "pushoversounds gamelan": "Гамелан", - "pushoversounds incoming": "Вхідний", - "pushoversounds intermission": "Антракт", - "pushoversounds magic": "Магія", - "pushoversounds mechanical": "Механічний", - "pushoversounds pianobar": "Піано-бар", - "pushoversounds siren": "Сирена", - "pushoversounds spacealarm": "Космічна тривога", - "pushoversounds tugboat": "Буксирний катер", - "pushoversounds alien": "Тривога прибульців (довга)", - "pushoversounds climb": "Підйом (довгий)", - "pushoversounds persistent": "Стійкий (довгий)", - "pushoversounds echo": "Pushover ехо (довгий)", - "pushoversounds updown": "Вгору вниз (довгий)", - "pushoversounds vibrate": "Тільки вібрація", - "pushoversounds none": "Нічого (тиша)", - "pushyAPIKey": "Секретний ключ API", - "pushyToken": "Токен пристрою", - "Using a Reverse Proxy?": "Використовуєте зворотній проксі?", - "Check how to config it for WebSocket": "Перевірте, як налаштувати його для WebSocket", - "Steam Game Server": "Ігровий сервер Steam", - "Most likely causes:": "Найімовірніші причини:", - "The resource is no longer available.": "Ресурс більше не доступний.", - "There might be a typing error in the address.": "Можливо, в адресі є помилка.", - "What you can try:": "Що ви можете спробувати:", - "Retype the address.": "Повторно введіть адресу.", - "Go back to the previous page.": "Повернутися на попередню сторінку.", - "Coming Soon": "Незабаром", - "wayToGetClickSendSMSToken": "Ви можете отримати ім’я користувача API та ключ API з {0} .", - "Connection String": "Рядок підключення", - "Query": "Запит", - "settingsCertificateExpiry": "Закінчення терміну дії сертифіката TLS", - "certificationExpiryDescription": "Запуск сповіщення для HTTPS моніторів коли до закінчення терміну дії TLS сертифіката:", - "ntfy Topic": "ntfy Тема", - "Domain": "Домен", - "Workstation": "Робоча станція", - "disableCloudflaredNoAuthMsg": "Ви перебуваєте в режимі без авторизації, пароль не потрібен.", - "Schedule maintenance": "Графік обслуговування", - "Affected Monitors": "Задіяні монітори", - "HomeAssistant": "Home Assistant", - "smseaglePriority": "Пріоритет повідомлення (0-9, за замовчуванням = 0)", - "smseagleRecipient": "Отримувач(і) (декілька отримувачів повинні бути відокремлені комами)", - "markdownSupported": "Підтримується синтаксис розмітки", - "Resend Notification if Down X times consequently": "Повторно надсилати сповіщення, якщо падіння відбулося X разів підряд", - "resendEveryXTimes": "Повторно відправляти кожні {0} разів", - "resendDisabled": "Повторне надсилання вимкнено", - "Start of maintenance": "Початок обслуговування", - "Select status pages...": "Вибери сторінку стану…", - "All Status Pages": "Всі сторінки станів", - "Passive Monitor Type": "Пасивний моніторинг", - "Specific Monitor Type": "Специфічний моніторинг", - "Monitor": "Монітор | Монітори", - "smseagle": "SMSEagle", - "smseagleEncoding": "Надсилати в Unicode", - "smseagleUrl": "URL-адреса пристрою SMSEagle", - "smseagleToken": "Токен доступу API", - "smseagleRecipientType": "Тип одержувача", - "smseagleContact": "Телефонний контакт(и)", - "smseagleGroup": "Телефонна група(и)", - "smseagleTo": "Телефонний номер(и)", - "Help": "Допомога", - "Game": "Гра", - "Pick Affected Monitors...": "Виберіть задіяні монітори…", - "statusMaintenance": "Обслуговування", - "Maintenance": "Обслуговування", - "General Monitor Type": "Основний моніторинг", - "error": "Помилка", - "webhookAdditionalHeadersTitle": "Додаткові заголовки", - "webhookAdditionalHeadersDesc": "Задати додаткові заголовки, що за допомогою вебхука. Кожен заголовок має бути заданий у вигляді JSON ключа/значення.", - "critical": "Критичний", - "Custom": "Нестандартний", - "successMessage": "Повідомлення про успіх", - "Customize": "Налаштувати", - "topic": "Тема", - "Body Encoding": "Кодування тіла", - "Event type:": "Тип події:", - "Event data:": "Дані подій:", - "Then choose an action, for example switch the scene to where an RGB light is red.": "Потім виберіть дію, наприклад, перемкнути сцену на червоне світло RGB.", - "backupRecommend": "Будь ласка, натомість створіть резервну копію тому або теки даних (./data/) напряму.", - "Optional": "Необов'язково", - "recurringInterval": "Інтервал", - "Recurring": "Повторюваний", - "strategyManual": "Активний/Неактивний вручну", - "telegramSendSilently": "Надіслати беззвучно", - "telegramSendSilentlyDescription": "Надсилає повідомлення беззвучно. Користувачі отримають сповіщення без звуку.", - "Trigger type:": "Тип тригера:", - "dayOfWeek": "День тижня", - "lastDay": "Останній день", - "warningTimezone": "Використовується часовий пояс сервера", - "weekdayShortMon": "Пн", - "weekdayShortTue": "Вт", - "weekdayShortWed": "Ср", - "weekdayShortThu": "Чт", - "weekdayShortFri": "Пт", - "weekdayShortSun": "Нд", - "Single Maintenance Window": "Разове технічне обслуговування", - "Maintenance Time Window of a Day": "Період доби для технічного обслуговування", - "Effective Date Range": "Діапазон дат вступу в силу (необов'язково)", - "Schedule Maintenance": "Розклад обслуговування", - "DateTime Range": "Діапазон дат і часу", - "loadingError": "Не вдалося отримати дані, спробуйте пізніше.", - "install": "Встановити", - "installing": "Встановлення", - "uninstall": "Видалити", - "API Keys": "API-ключі", - "Expiry": "Закінчення терміну дії", - "Expiry date": "Дата закінчення терміну дії", - "Don't expire": "Не прострочувати термін дії", - "Continue": "Продовжити", - "Add Another": "Додати ще", - "Key Added": "Ключ додано", - "No API Keys": "Немає API-ключів", - "apiKey-active": "Активний", - "apiKey-inactive": "Неактивний", - "Expires": "Термін дії закінчується", - "deleteAPIKeyMsg": "Ви впевнені, що хочете видалити цей API-ключ?", - "Generate": "Згенерувати", - "pagertreeIntegrationUrl": "URL-адреса інтеграції", - "pagertreeSilent": "Тихо", - "pagertreeUrgency": "Терміновість", - "pagertreeLow": "Низька", - "pagertreeMedium": "Середня", - "pagertreeHigh": "Висока", - "pagertreeCritical": "Критична", - "pagertreeResolve": "Автоматичне вирішення", - "Edit Tag": "Редагувати тег", - "Server Address": "Адреса сервера", - "Learn More": "Дізнатися більше", - "or": "або", - "uninstalling": "Видалення", - "confirmUninstallPlugin": "Ви дійсно хочете видалити цей плагін?", - "notificationRegional": "Регіональні", - "Clone Monitor": "Копія", - "Clone": "Скопіювати", - "cloneOf": "Копія {0}", - "Custom Footer": "Користувацький Footer", - "Strategy": "Стратегія", - "Free Mobile User Identifier": "ID користувача Free Mobile", - "SendKey": "SendKey", - "Gateway Type": "Тип шлюзу", - "You can divide numbers with": "Числа можна ділити за допомогою", - "Bark Group": "Bark група", - "Bark Sound": "Bark звук", - "Custom CSS": "Користувацький CSS", - "promosmsAllowLongSMS": "Дозволити довгі SMS", - "Feishu WebHookUrl": "Feishu WebHookURL", - "auto resolve": "автоматичне вирішення", - "RadiusCallingStationIdDescription": "Ідентифікатор пристрою, який викликає", - "telegramMessageThreadID": "(Необов'язково) ID теми повідомлення", - "telegramMessageThreadIDDescription": "Необов'язковий ID для цільової гілки повідомлень (теми) форуму; тільки для форумів супергруп", - "backupOutdatedWarning": "Застаріло: Оскільки було додано багато функцій і ця функція резервного копіювання дещо застаріла, вона не може створити або відновити повну резервну копію.", - "dnsCacheDescription": "Це може не працювати в деяких середовищах IPv6, вимкніть це, якщо у вас виникнуть проблеми.", - "deleteMaintenanceMsg": "Ви дійсно хочете видалити це технічне обслуговування?", - "dnsPortDescription": "Порт DNS-сервера. За замовчуванням 53. Ви можете змінити порт у будь-який час.", - "recurringIntervalMessage": "Запускати раз на день | Запускати раз на {0} дні(в)", - "SMSManager API Docs": "SMSManager API документація ", - "Base URL": "Базова URL-адреса", - "goAlertInfo": "GoAlert - це програма з відкритим вихідним кодом для планування викликів, автоматичної ескалації та сповіщень (наприклад, SMS або голосових дзвінків). Автоматично залучайте потрібну людину, потрібним чином і в потрібний час! {0}", - "goAlertIntegrationKeyInfo": "Отримайте універсальний ключ інтеграції API для сервісу у форматі \"aaaaaaaa-bbbb-bbbb-cccc-dddd-eeeeeeeeeeee\", зазвичай це значення параметра токену скопійованої URL-адреси.", - "wayToGetPagerDutyKey": "Ви можете отримати його, перейшовши до Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Тут ви можете шукати \"Events API V2\". Більше інформації {0}", - "Google Analytics ID": "Google Analytics ID", - "apiKeyAddedMsg": "Ваш API-ключ додано. Будь ласка, запам'ятайте його, оскільки він більше не буде показаний.", - "Add API Key": "Додати API-ключ", - "apiKey-expired": "Прострочений", - "disableAPIKeyMsg": "Ви впевнені, що хочете деактивувати цей API-ключ?", - "pagertreeDoNothing": "Нічого не робити", - "wayToGetPagerTreeIntegrationURL": "Після створення інтеграції Uptime Kuma в PagerTree скопіюйте Endpoint. Дивіться повну інформацію {0}", - "Automations can optionally be triggered in Home Assistant:": "За бажанням можна активувати автоматизацію в Home Assistant:", - "dayOfMonth": "День місяця", - "telegramProtectContent": "Захист від пересилання/збереження", - "telegramProtectContentDescription": "Якщо увімкнено, повідомлення бота в Telegram будуть захищені від пересилання та збереження.", - "Notification Service": "Сервіс сповіщень", - "default: notify all devices": "за замовчуванням: сповіщати всі пристрої", - "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Список сервісів сповіщень можна знайти в Home Assistant в розділі \"Інструменти для розробників > Служби\", виконавши пошук за словом \"notification\" і знайшовши назву свого пристрою/телефону.", - "weekdayShortSat": "Сб", - "lastDay1": "Останній день місяця", - "lastDay2": "2-й останній день місяця", - "lastDay3": "3-й останній день місяця", - "lastDay4": "4-й останній день місяця", - "No Maintenance": "Немає технічного обслуговування", - "pauseMaintenanceMsg": "Ви впевнені, що хочете поставити на паузу?", - "maintenanceStatus-under-maintenance": "Перебуває на технічному обслуговуванні", - "maintenanceStatus-inactive": "Неактивне", - "maintenanceStatus-scheduled": "Заплановане", - "maintenanceStatus-ended": "Завершене", - "maintenanceStatus-unknown": "Невідоме", - "Display Timezone": "Відображати часовий пояс", - "Server Timezone": "Часовий пояс сервера", - "statusPageMaintenanceEndDate": "Закінчення", - "IconUrl": "URL-адреса іконки", - "Enable DNS Cache": "(Застаріле) Увімкнути DNS-кеш для HTTP(s) моніторів", - "Enable": "Увімкнути", - "confirmDeleteTagMsg": "Ви впевнені, що хочете видалити цей тег? Монітори, пов'язані з цим тегом, не будуть видалені.", - "Guild ID": "ID гільдії", - "Free Mobile API Key": "Free Mobile API ключ", - "Enable TLS": "Увімкнути TLS", - "Proto Service Name": "Назва Proto-сервісу", - "Proto Content": "Вміст Proto", - "Proto Method": "Метод Proto", - "Economy": "Економічний", - "Lowcost": "Дешевий", - "Custom Monitor Type": "Користувацький тип монітора", - "topicExplanation": "MQTT тема для моніторингу", - "successMessageExplanation": "MQTT-повідомлення, яке буде вважатися успішним", - "HTTP Headers": "HTTP заголовки", - "Trust Proxy": "Довірений проксі", - "RadiusSecret": "Секрет Radius", - "RadiusSecretDescription": "Спільний секрет між клієнтом і сервером", - "RadiusCalledStationId": "ID станції, що викликається", - "Frontend Version": "Версія інтерфейсу", - "Frontend Version do not match backend version!": "Версія інтерфейсу не збігається з версією бекенду!", - "Number": "Номер", - "dataRetentionTimeError": "Період зберігання повинен бути 0 або більше", - "infiniteRetention": "Встановіть 0 для нескінченного зберігання.", - "affectedMonitorsDescription": "Виберіть монітори, які зачепить поточне технічне обслуговування", - "affectedStatusPages": "Показувати це повідомлення про технічне обслуговування на вибраних сторінках стану", - "atLeastOneMonitor": "Виберіть принаймні один монітор, який зазнав впливу", - "wayToGetKookBotToken": "Створіть заявку та отримайте токен бота тут {0}", - "wayToGetKookGuildID": "Увімкніть \"Режим розробника\" в налаштуваннях Kook і клацніть правою кнопкою миші на гільдії, щоб отримати її ID", - "Date and Time": "Дата і час", - "Integration Key": "Ключ інтеграції", - "Integration URL": "URL-адреса інтеграції", - "Auto resolve or acknowledged": "Автоматично вирішено або підтверджено", - "do nothing": "нічого не робити", - "auto acknowledged": "автоматично підтверджено", - "plugin": "Плагін | Плагіни", - "RadiusCalledStationIdDescription": "Ідентифікатор пристрою, що викликається", - "RadiusCallingStationId": "ID станції, яка викликає", - "Setup Docker Host": "Налаштування Docker-хосту", - "Connection Type": "Тип підключення", - "Docker Daemon": "Демон Docker", - "socket": "Сокет", - "tcp": "TCP / HTTP", - "Container Name / ID": "Назва / ID контейнера", - "deleteDockerHostMsg": "Ви дійсно хочете видалити цей Docker-хост для всіх моніторів?", - "Docker Container": "Docker-контейнер", - "Docker Host": "Docker-хост", - "Docker Hosts": "Docker-хости", - "wayToGetZohoCliqURL": "Ви можете дізнатися, як створити URL-адресу веб-хука {0}.", - "enableGRPCTls": "Дозволити надсилати gRPC-запити з TLS-з'єднанням", - "grpcMethodDescription": "Ім'я методу перетворюється у формат camelCase, наприклад, sayHello, check тощо.", - "Packet Size": "Розмір пакету", - "trustProxyDescription": "Довіряти заголовкам 'X-Forwarded-*'. Якщо ви хочете отримати правильний клієнтський IP, а ваш Uptime Kuma знаходиться за проксі-сервером, таким як Nginx або Apache, вам слід увімкнути цю опцію.", - "wayToGetLineNotifyToken": "Ви можете отримати токен доступу з {0}", - "Examples": "Приклади", - "Home Assistant URL": "URL-адреса Home Assistant", - "Long-Lived Access Token": "Довготривалий токен доступу", - "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Довготривалий токен доступу можна створити, натиснувши на ім'я вашого профілю (внизу ліворуч), прокрутивши його донизу і натиснувши кнопку Створити токен. ", - "high": "високий", - "Disable": "Вимкнути", - "Resend Notification if Down X times consecutively": "Повторно надіслати сповіщення, якщо було падіння X разів поспіль", - "lunaseaTarget": "Ціль", - "Add New Tag": "Додати новий тег", - "lunaseaDeviceID": "ID пристрою", - "lunaseaUserID": "ID користувача", - "twilioAccountSID": "SID облікового запису", - "twilioAuthToken": "Токен авторизації / Секретний ключ Api", - "twilioFromNumber": "З номера", - "twilioToNumber": "На номер", - "sameAsServerTimezone": "Такий самий, як часовий пояс сервера", - "startDateTime": "Дата і час початку", - "endDateTime": "Дата і час закінчення", - "cronExpression": "Cron-вираз", - "cronSchedule": "Розклад: ", - "invalidCronExpression": "Неправильний Cron-вираз: {0}", - "statusPageRefreshIn": "Оновлювати кожні: {0}", - "ntfyAuthenticationMethod": "Метод автентифікації", - "ntfyUsernameAndPassword": "Ім'я користувача та пароль", - "pushoverMessageTtl": "TTL повідомлення (секунди)", - "Monitor Setting": "Налаштування монітора {0}", - "Show Clickable Link": "Показувати клікабельне посилання", - "Show Clickable Link Description": "Якщо позначено, кожен, хто має доступ до цієї сторінки статусу, може мати доступ до URL-адреси моніторингу.", - "Open Badge Generator": "Відкрити генератор бейджів", - "Badge Generator": "Генератор бейджів {0}", - "Badge Type": "Тип бейджа", - "Badge Duration": "Тривалість бейджа", - "Badge Label": "Ярлик бейджа", - "Badge Prefix": "Префікс значення бейджа", - "Badge Suffix": "Суфікс значення бейджа", - "Badge Label Color": "Колір ярлика бейджа", - "Badge Color": "Колір бейджа", - "Badge Label Prefix": "Префікс ярлика бейджа", - "Badge Label Suffix": "Суфікс ярлика бейджа", - "Badge Style": "Стиль бейджа", - "Badge value (For Testing only.)": "Значення бейджа (тільки для тестування.)", - "Badge URL": "URL бейджа", - "Badge Up Color": "Колір бейджа \"Доступний\"", - "Badge Down Color": "Колір бейджа \"Недоступний\"", - "Badge Pending Color": "Колір бейджа \"Очікування\"", - "Badge Warn Color": "Колір бейджа \"Попередження\"", - "Badge Warn Days": "Бейдж \"Днів попередження\"", - "Badge Maintenance Color": "Колір бейджа \"Обслуговування\"", - "Badge Down Days": "Бейдж \"Днів недоступний\"", - "Group": "Група", - "Monitor Group": "Група моніторів", - "Edit Maintenance": "Редагувати обслуговування", - "Cannot connect to the socket server": "Не вдається підключитися до сервера сокетів", - "Reconnecting...": "Повторне підключення...", - "Home": "Головна", - "noGroupMonitorMsg": "Недоступно. Спочатку створіть групу моніторів.", - "Close": "Закрити", - "chromeExecutableDescription": "Для користувачів Docker, якщо Chromium ще не встановлено, встановлення та відображення результатів тесту може зайняти кілька хвилин. Потрібно 1 ГБ дискового простору.", - "chromeExecutableAutoDetect": "Автоматичне визначення", - "chromeExecutable": "Виконуваний файл Chrome/Chromium", - "Invert Keyword": "Інвертоване ключове слово", - "invertKeywordDescription": "Слідкувати за тим, щоб ключове слово було відсутнім, а не присутнім.", - "webhookCustomBodyDesc": "Задати користувацьке HTTP-тіло для запиту. Приймаються шаблонні змінні {msg}, {heartbeat}, {monitor}.", - "webhookBodyPresetOption": "Пресет - {0}", - "webhookBodyCustomOption": "Користувацьке тіло", - "Request Body": "Тіло запиту", - "Badge Preview": "Попередній перегляд бейджа", - "Badge Duration (in hours)": "Тривалість бейджа (у годинах)", - "twilioApiKey": "Api ключ (необов'язково)", - "Expected Value": "Очікуване значення", - "Json Query": "Json-запит", - "Notify Channel": "Сповіщення каналу", - "aboutNotifyChannel": "Сповіщення каналу надішле сповіщення на десктоп або мобільний для всіх учасників каналу, незалежно від того, встановлена їхня доступність як активна чи відсутня.", - "filterActive": "Активні", - "filterActivePaused": "Призупинені", - "Kafka Brokers": "Брокери Kafka", - "Press Enter to add broker": "Натисніть Enter, щоб додати брокер", - "Kafka Topic Name": "Назва теми Kafka", - "Kafka SASL Options": "Параметри Kafka SASL", - "Mechanism": "Механізм", - "Pick a SASL Mechanism...": "Виберіть механізм SASL…", - "Authorization Identity": "Ідентифікатор авторизації", - "AccessKey Id": "AccessKey Id", - "Secret AccessKey": "Secret AccessKey", - "Session Token": "Токен сесії", - "Enable Kafka SSL": "Увімкнути Kafka SSL", - "Enable Kafka Producer Auto Topic Creation": "Увімкнути автоматичне створення тем Kafka Producer", - "Enter the list of brokers": "Введіть список брокерів", - "Kafka Producer Message": "Повідомлення Kafka Producer", - "tailscalePingWarning": "Для того, щоб використовувати монітор Tailscale Ping, вам потрібно встановити Uptime Kuma без Docker, а також встановити клієнт Tailscale на вашому сервері.", - "Server URL should not contain the nfty topic": "URL-адреса сервера не повинна містити тему nfty", - "FlashDuty Severity": "Серйозність", - "nostrRelays": "Реле Nostr", - "nostrRelaysHelp": "Одна URL-адреса реле в рядку", - "nostrSender": "Приватний ключ відправника (nsec)", - "nostrRecipients": "Відкриті ключі одержувачів (npub)", - "showCertificateExpiry": "Показати термін дії сертифікату", - "noOrBadCertificate": "Відсутність/поганий сертифікат", - "Select": "Вибрати", - "selectedMonitorCount": "Вибрано: {0}", - "wayToGetFlashDutyKey": "Ви можете перейти на сторінку \"Канал -> (Виберіть канал) -> Інтеграції -> Додати нову інтеграцію\", додайте \"Uptime Kuma\", щоб отримати пуш-адресу, скопіюйте ключ інтеграції в адресу. Для отримання додаткової інформації, будь ласка, відвідайте", - "nostrRecipientsHelp": "Формат npub, по одному в рядку", - "Check/Uncheck": "Встановити/зняти галочку", - "PushDeer Server": "Сервер PushDeer", - "pushDeerServerDescription": "Залиште порожнім, щоб використовувати офіційний сервер", - "Request Timeout": "Таймаут запиту", - "timeoutAfter": "Таймаут через {0} секунд", - "styleElapsedTime": "Час, що минув під індикатором опитування", - "gamedigGuessPort": "Gamedig: Вгадати порт", - "gamedigGuessPortDescription": "Порт, що використовується протоколом запитів до сервера Valve, може відрізнятися від порту клієнта. Спробуйте це, якщо монітор не може підключитися до вашого сервера.", - "styleElapsedTimeShowWithLine": "Показати (з лінією)", - "styleElapsedTimeShowNoLine": "Показати (без лінії)", - "enableNSCD": "Увімкнути NSCD (Name Service Cache Daemon) для кешування всіх DNS-запитів", - "setupDatabaseChooseDatabase": "Яку базу даних ви бажаєте використовувати?", - "setupDatabaseEmbeddedMariaDB": "Вам не потрібно нічого налаштовувати. Цей докер-образ містить вбудовану та автоматично налаштовану базу даних MariaDB. Uptime Kuma під'єднатися до цієї бази даних через unix-сокет.", - "setupDatabaseSQLite": "Простий файл бази даних, рекомендований для невеликих проєктів. До версії 2.0.0 Uptime Kuma використовувала SQLite як базу даних за замовчуванням.", - "setupDatabaseMariaDB": "Підключитися до зовнішньої бази даних MariaDB. Вам потрібно задати інформацію для підключення до бази даних.", - "dbName": "Назва бази даних", - "Saved.": "Збережено.", - "monitorToastMessagesLabel": "Тост-сповіщення монітора", - "toastErrorTimeout": "Таймаут для сповіщень про помилки", - "toastSuccessTimeout": "Таймаут для сповіщень про успіх", - "monitorToastMessagesDescription": "Тост-сповіщення для моніторів зникають через заданий час у секундах. Значення -1 вимикає таймаут. Значення 0 вимикає тост-сповіщення.", - "Bark API Version": "Версія Bark API", - "pushViewCode": "Як користуватися Push-монітором? (Переглянути код)", - "pushOthers": "Інші", - "programmingLanguages": "Мови програмування", - "authInvalidToken": "Недійсний токен.", - "2faAlreadyEnabled": "2FA вже увімкнено.", - "2faEnabled": "2FA увімкнено.", - "2faDisabled": "2FA вимкнено.", - "successAdded": "Успішно додано.", - "successResumed": "Успішно відновлено.", - "successPaused": "Успішно зупинено.", - "successDeleted": "Успішно видалено.", - "successAuthChangePassword": "Пароль успішно оновлено.", - "successBackupRestored": "Резервну копію успішно відновлено.", - "successDisabled": "Успішно вимкнено.", - "tagNotFound": "Тег не знайдено.", - "foundChromiumVersion": "Знайдено Chromium/Chrome. Версія: {0}", - "authUserInactiveOrDeleted": "Користувач неактивний або видалений.", - "authIncorrectCreds": "Неправильне ім'я користувача або пароль.", - "successEdited": "Успішно відредаговано.", - "successEnabled": "Успішно увімкнено.", - "Reset Token": "Скинути токен", - "emailCustomisableContent": "Налаштовуваний вміст", - "leave blank for default subject": "залиште порожнім для теми за замовчуванням", - "emailCustomBody": "Користувацьке тіло", - "smtpLiquidIntroduction": "Наступні два поля можна шаблонувати за допомогою мови шаблонів Liquid. Будь ласка, зверніться до {0} для отримання інструкцій з використання. Ось доступні змінні:", - "templateHeartbeatJSON": "об'єкт, що описує опитування", - "liquidIntroduction": "Шаблонність досягається за допомогою мови шаблонів Liquid. Будь ласка, зверніться до {0} для отримання інструкцій з використання. Ось доступні змінні:", - "templateMsg": "повідомлення сповіщення", - "templateMonitorJSON": "об'єкт, що описує монітор", - "templateLimitedToUpDownCertNotifications": "доступно лише для сповіщень Доступний/Недоступний/Закінчення терміну дії сертифіката", - "templateLimitedToUpDownNotifications": "доступно лише для сповіщень Доступний/Недоступний", - "leave blank for default body": "залиште порожнім для тіла за замовчуванням", - "emailTemplateServiceName": "Назва сервісу", - "emailTemplateHostnameOrURL": "Ім'я хоста або URL", - "emailTemplateStatus": "Статус", - "emailTemplateMsg": "повідомлення сповіщення", - "emailTemplateLimitedToUpDownNotification": "доступно лише для опитування Доступний/Недоступний, інакше - нуль", - "emailTemplateMonitorJSON": "об'єкт, що описує монітор", - "emailTemplateHeartbeatJSON": "об'єкт, що описує опитування", - "GrafanaOncallUrl": "Grafana Oncall URL", - "noDockerHostMsg": "Недоступно. Спочатку налаштуйте Docker-хост.", - "DockerHostRequired": "Будь ласка, встановіть Docker-хост для цього монітора.", - "Browser Screenshot": "Скріншот браузера", - "Add a new expiry notification day": "Додати новий день сповіщення про закінчення терміну дії", - "setup a new monitor group": "створити нову групу моніторів", - "Add a domain": "Додати домен", - "Remote Browsers": "Віддалені браузери", - "Remote Browser": "Віддалений браузер", - "Add a Remote Browser": "Додати віддалений браузер", - "Remote Browser not found!": "Віддалений браузер не знайдено!", - "remoteBrowsersDescription": "Віддалені браузери - це альтернатива локальному запуску Chromium. Налаштуйте за допомогою сервісу на кшталт browserless.io або підключіть свій власний", - "remoteBrowserToggle": "За замовчуванням Chromium запускається всередині контейнера Uptime Kuma. Ви можете використовувати віддалений браузер, увімкнувши цей перемикач.", - "useRemoteBrowser": "Використовувати віддалений браузер", - "deleteRemoteBrowserMessage": "Ви дійсно хочете видалити цей віддалений браузер для всіх моніторів?", - "self-hosted container": "контейнер, що хоститься самостійно", - "Remove the expiry notification": "Видалити день сповіщення про закінчення терміну дії", - "Remove domain": "Видалити домен '{0}'", - "successKeyword": "Ключове слово успіху", - "successKeywordExplanation": "Ключове слово MQTT, яке вважатиметься успіхом", - "openModalTo": "відкрити модальне вікно для {0}", - "ntfyPriorityHelptextAllExceptDown": "З цим пріоритетом надсилаються всі події, окрім {0}-подій, які мають пріоритет {1}", - "settingUpDatabaseMSG": "Налаштування бази даних. Це може зайняти деякий час, будь ласка, будьте терплячі.", - "statusPageSpecialSlugDesc": "Спеціальний slug {0}: ця сторінка буде показана, якщо slug не надано", - "Search monitored sites": "Пошук сайтів, що відстежуються", - "ntfyPriorityHelptextAllEvents": "Усі події надсилаються з максимальним пріоритетом", - "What is a Remote Browser?": "Що таке віддалений браузер?", - "Your User ID": "Ваш ID користувача", - "Channel access token (Long-lived)": "Токен доступу до каналу (довготривалий)", - "documentationOf": "{0} Документація", - "wayToGetHeiiOnCallDetails": "Як отримати Trigger ID та API-ключі пояснюється в {documentation}", - "To Phone Number": "На номер телефону", - "gtxMessagingToHint": "Міжнародний формат, з \"+\" на початку ({e164}, {e212} або {e214})", - "gtxMessagingApiKeyHint": "Ви можете знайти свій API-ключ тут: API-ключ: Мої облікові записи маршрутизації > Показати інформацію про обліковий запис > Облікові дані API > REST API (v2.x)", - "From Phone Number / Transmission Path Originating Address (TPOA)": "З номера телефону / вихідної адреси маршруту передачі (TPOA)", - "gtxMessagingFromHint": "На мобільних телефонах ваші одержувачі бачать TPOA як відправника повідомлення. Допускається до 11 буквено-цифрових символів, короткий код, місцевий довгий код або міжнародні номери ({e164}, {e212} або {e214})", - "Originator type": "Тип відправника", - "Alphanumeric (recommended)": "Буквено-цифровий (рекомендовано)", - "Telephone number": "Номер телефону", - "Originator": "Відправник", - "cellsyntOriginator": "Відображається на мобільному телефоні одержувача як відправник повідомлення. Допустимі значення та функції залежать від параметра originatortype.", - "Destination": "Пункт призначення", - "callMeBotGet": "Тут ви можете згенерувати кінцеву точку для {0}, {1} і {2}. Майте на увазі, що ви можете бути обмежені у швидкості. Обмеження швидкості виглядає наступним чином: {3}", - "cellsyntOriginatortypeAlphanumeric": "Рядок буквено-цифровий (максимум 11 буквено-цифрових символів). Отримувачі не можуть відповісти на повідомлення.", - "cellsyntOriginatortypeNumeric": "Числове значення (максимум 15 цифр) з номером телефону в міжнародному форматі без 00 на початку (наприклад, британський номер 07920 110 000 має бути вказаний як 447920110000). Одержувачі можуть відповісти на повідомлення.", - "Allow Long SMS": "Дозволити довгі СМС", - "wayToGetWhapiUrlAndToken": "Можна отримати URL API та токен, зайдіть у бажаний канал з {0}", - "whapiRecipient": "Номер телефону / ID контакту / ID групи", - "API URL": "API URL", - "cellsyntSplitLongMessages": "Розбивати довгі повідомлення на 6 частин. 153 x 6 = 918 символів.", - "max 15 digits": "максимум 15 символів", - "wayToWriteWhapiRecipient": "Телефонний номер з міжнародним префіксом, але без плюсового знаку на початку ({0}), ID контакту ({1}) або ID групи ({2}).", - "cellsyntDestination": "Номер телефону одержувача в міжнародному форматі з 00 на початку, за яким слідує код країни, наприклад, 00447920110000 для британського номера 07920 110 000 (максимум 17 цифр). Максимум 25000 одержувачів, розділених комами, на один HTTP-запит.", - "max 11 alphanumeric characters": "максимум 11 буквено-цифрових символів", - "locally configured mail transfer agent": "локально налаштований агент пересилання пошти", - "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Або введіть ім'я хоста сервера, до якого ви хочете підключитися, або {localhost}, якщо ви маєте намір використовувати {local_mta}", - "Don't mention people": "Не згадувати людей", - "Mentioning": "Згадування", - "Mention group": "Згадати {group}", - "senderSevenIO": "Номер або ім'я відправника", - "receiverSevenIO": "Номер одержувача", - "apiKeySevenIO": "API-ключ SevenIO", - "wayToGetSevenIOApiKey": "Відвідайте інформаційну панель у розділі app.seven.io > developer > api key > зелена кнопка додавання", - "receiverInfoSevenIO": "Якщо номер одержувача знаходиться не в Німеччині, ви повинні додати код країни перед номером (наприклад, для коду країни 1 з США використовуйте 117612121212 замість 017612121212)", - "Host URL": "URL-адреса хосту", - "threadForumPostID": "ID теми/повідомлення на форумі", - "whatHappensAtForumPost": "Створити нове повідомлення на форумі. Це НЕ призводить до публікації повідомлень в існуючих темах. Щоб написати повідомлення в існуючому дописі, використовуйте \"{option}\"", - "wayToGetDiscordThreadId": "Отримання id теми/допису на форумі подібне до отримання id каналу. Дізнайтеся більше про те, як отримати ідентифікатори {0}", - "Command": "Команда", - "mongodbCommandDescription": "Виконайте MongoDB-команду до бази даних. Для отримання інформації про доступні команди зверніться до {documentation}", - "Bitrix24 Webhook URL": "URL-адреса вебхука Бітрікс24", - "wayToGetBitrix24Webhook": "Ви можете створити вебхук, виконавши кроки за адресою {0}", - "bitrix24SupportUserID": "Введіть свій ID користувача в Бітрікс24. Дізнатися ID можна за посиланням, перейшовши в профіль користувача.", - "Select message type": "Вибрати тип повідомлення", - "Send to channel": "Надіслати в канал", - "Create new forum post": "Створити нове повідомлення на форумі", - "postToExistingThread": "Написати до існуючої теми/повідомлення на форумі", - "Refresh Interval": "Інтервал оновлення", - "Refresh Interval Description": "Сторінка стану буде робити повне оновлення сайту кожні {0} секунд", - "ignoreTLSErrorGeneral": "Ігнорувати помилку TLS/SSL для з'єднання", - "forumPostName": "Назва повідомлення на форумі", - "e.g. {discordThreadID}": "наприклад, {discordThreadID}", - "smspartnerPhoneNumber": "Телефонний номер(и)", - "smspartnerSenderNameInfo": "Має містити в межах 3..=11 звичайних символів", - "smspartnerSenderName": "Ім'я відправника SMS", - "smspartnerApiurl": "Ви можете знайти свій API-ключ у своїй інформаційній панелі за адресою {0}", - "smspartnerPhoneNumberHelptext": "Номер повинен бути в міжнародному форматі {0}, {1}. Кілька номерів повинні бути розділені символом {2}", - "threemaRecipient": "Одержувач", - "threemaRecipientType": "Тип одержувача", - "threemaRecipientTypeIdentity": "Threema-ID", - "threemaRecipientTypePhone": "Номер телефону", - "threemaRecipientTypePhoneFormat": "E.164, без + на початку", - "threemaRecipientTypeEmail": "Електронна адреса", - "threemaSenderIdentity": "ID шлюзу", - "threemaApiAuthenticationSecret": "Секрет ID шлюзу", - "wayToGetThreemaGateway": "Ви можете зареєструватися на Threema Gateway {0}.", - "threemaRecipientTypeIdentityFormat": "8 символів", - "threemaSenderIdentityFormat": "8 символів, зазвичай починається з *", - "threemaBasicModeInfo": "Примітка: Ця інтеграція використовує Threema Gateway у базовому режимі (шифрування на основі сервера). Більш детальну інформацію можна знайти {0}.", - "apiKeysDisabledMsg": "API-ключі вимкнено, оскільки автентифікація вимкнена.", - "jsonQueryDescription": "Розбір і вилучення конкретних даних з JSON-відповіді сервера за допомогою JSON-запиту або використання символу «$» для необробленої відповіді, якщо не очікується JSON. Результат порівнюється з очікуваним значенням у вигляді рядків. Дивіться {0} для отримання документації і використовуйте {1} для експериментів із запитами.", - "snmpCommunityStringHelptext": "Цей рядок слугує паролем для автентифікації та контролю доступу до пристроїв з підтримкою SNMP. Узгодьте його з конфігурацією вашого SNMP-пристрою.", - "snmpOIDHelptext": "Введіть OID для датчика або стану, який ви хочете моніторити. Якщо ви не впевнені щодо OID, скористайтеся інструментами керування мережею, як-от MIB-браузерами або програмним забезпеченням SNMP.", - "wayToGetOnesenderUrlandToken": "Ви можете отримати URL-адресу і токен, перейшовши на сайт Onesender. Більше інформації {0}", - "conditionValuePlaceholder": "Значення", - "not equals": "не дорівнює", - "not ends with": "не закінчується на", - "and": "і", - "Private Number": "Приватний номер", - "signl4Docs": "Ви можете знайти більше інформації про те, як налаштувати SIGNL4 і як отримати URL-адресу вебхука SIGNL4 в розділі {0}.", - "now": "зараз", - "time ago": "{0} тому", - "-year": "-рік", - "Json Query Expression": "Вираз запиту Json", - "cacheBusterParam": "Додати параметр {0}", - "cacheBusterParamDescription": "Випадково згенерований параметр для обходу кешування.", - "OID (Object Identifier)": "OID (ідентифікатор об'єкта)", - "Condition": "Умова", - "SNMP Version": "Версія SNMP", - "Please enter a valid OID.": "Будь ласка, введіть дійсний OID.", - "privateOnesenderDesc": "Переконайтеся, що номер телефону дійсний. Щоб надіслати повідомлення на приватний номер телефону, наприклад: 628123456789", - "groupOnesenderDesc": "Переконайтеся, що GroupID дійсний. Щоб надіслати повідомлення в Групу, наприклад: 628123456789-342345", - "Add Remote Browser": "Додати віддалений браузер", - "New Group": "Нова група", - "Group Name": "Назва групи", - "Group ID": "ID групи", - "OAuth2: Client Credentials": "OAuth2: Облікові дані клієнта", - "Authentication Method": "Метод автентифікації", - "Authorization Header": "Заголовок авторизації", - "OAuth Token URL": "URL-адреса токену OAuth", - "Community String": "Рядок спільноти", - "Host Onesender": "Хост Onesender", - "Token Onesender": "Токен Onesender", - "Recipient Type": "Тип отримувача", - "Form Data Body": "Тіло даних форми", - "Client ID": "ID клієнта", - "Client Secret": "Секрет клієнта", - "Go back to home page.": "Повернутися на головну сторінку.", - "No tags found.": "Тегів не знайдено.", - "Lost connection to the socket server.": "Втрачено з'єднання з сервером сокетів.", - "Cannot connect to the socket server.": "Не вдається з'єднатися з сервером сокетів.", - "Conditions": "Умови", - "conditionAdd": "Додати умову", - "conditionDelete": "Видалити умову", - "conditionAddGroup": "Додати групу", - "conditionDeleteGroup": "Видалити групу", - "OAuth Scope": "OAuth дозволи", - "Optional: Space separated list of scopes": "Необов'язково: Розділений пробілами список дозволів", - "SIGNL4": "SIGNL4", - "SIGNL4 Webhook URL": "URL-адреса вебхука SIGNL4", - "equals": "дорівнює", - "contains": "містить", - "not contains": "не містить", - "starts with": "починається з", - "not starts with": "не починається з", - "ends with": "закінчується на", - "less than": "менше, ніж", - "greater than": "більше, ніж", - "less than or equal to": "менше або дорівнює", - "greater than or equal to": "більше або дорівнює", - "record": "запис", - "shrinkDatabaseDescriptionSqlite": "Запускає команду {vacuum} для бази даних SQLite. Команда {auto_vacuum} вже увімкнена, але вона не дефрагментує базу даних і не перепаковує окремі сторінки бази даних так, як це робить команда {vacuum}." -} +{ + "languageName": "Українська", + "checkEverySecond": "Перевірка кожні {0} секунд", + "retriesDescription": "Максимальна кількість спроб перед позначенням сервісу як недоступного та надсиланням повідомлення", + "ignoreTLSError": "Ігнорувати помилки TLS/SSL для сайтів HTTPS", + "upsideDownModeDescription": "Реверс статусу сервісу. Якщо сервіс доступний, він позначається як НЕДОСТУПНИЙ.", + "maxRedirectDescription": "Максимальна кількість перенаправлень. Поставте 0, щоб вимкнути перенаправлення.", + "acceptedStatusCodesDescription": "Виберіть коди статусів для визначення доступності сервісу.", + "passwordNotMatchMsg": "Повторення паролю не збігається.", + "notificationDescription": "Прив'яжіть сповіщення до моніторів.", + "keywordDescription": "Пошук слова в чистому HTML або JSON-відповіді. Пошук чутливий до регістру.", + "pauseDashboardHome": "Пауза", + "deleteMonitorMsg": "Ви дійсно хочете видалити цей монітор?", + "deleteNotificationMsg": "Ви дійсно хочете видалити це сповіщення для всіх моніторів?", + "resolverserverDescription": "Cloudflare є сервером за замовчуванням. Ви завжди можете змінити цей сервер.", + "rrtypeDescription": "Виберіть тип ресурсного запису, який ви хочете відстежувати", + "pauseMonitorMsg": "Ви дійсно хочете поставити на паузу?", + "Settings": "Налаштування", + "Dashboard": "Панель керування", + "New Update": "Оновлення", + "Language": "Мова", + "Appearance": "Зовнішній вигляд", + "Theme": "Тема", + "General": "Загальне", + "Version": "Версія", + "Check Update On GitHub": "Перевірити оновлення на GitHub", + "List": "Список", + "Add": "Додати", + "Add New Monitor": "Новий монітор", + "Quick Stats": "Статистика", + "Up": "Доступний", + "Down": "Недоступний", + "Pending": "Очікування", + "Unknown": "Невідомо", + "Pause": "Пауза", + "Name": "Ім'я", + "Status": "Статус", + "DateTime": "Дата і час", + "Message": "Повідомлення", + "No important events": "Важливих подій немає", + "Resume": "Відновити", + "Edit": "Змінити", + "Delete": "Видалити", + "Current": "Поточний", + "Uptime": "Аптайм", + "Cert Exp.": "Сертифікат сп.", + "day": "день | днів", + "-day": "днів", + "hour": "година", + "-hour": "години", + "Response": "Відповідь", + "Ping": "Пінг", + "Monitor Type": "Тип монітора", + "Keyword": "Ключове слово", + "Friendly Name": "Ім'я", + "URL": "URL", + "Hostname": "Адреса хоста", + "Port": "Порт", + "Heartbeat Interval": "Частота опитування", + "Retries": "Спроб", + "Advanced": "Додатково", + "Upside Down Mode": "Реверс статусу", + "Max. Redirects": "Макс. кількість перенаправлень", + "Accepted Status Codes": "Припустимі коди статусу", + "Save": "Зберегти", + "Notifications": "Сповіщення", + "Not available, please setup.": "Недоступно, будь ласка, налаштуйте.", + "Setup Notification": "Створити сповіщення", + "Light": "Світла", + "Dark": "Темна", + "Auto": "Авто", + "Theme - Heartbeat Bar": "Тема - Смуга частоти опитування", + "Normal": "Звичайний", + "Bottom": "Знизу", + "None": "Відсутня", + "Timezone": "Часовий пояс", + "Search Engine Visibility": "Видимість для пошукових систем", + "Allow indexing": "Дозволити індексування", + "Discourage search engines from indexing site": "Заборонити індексування", + "Change Password": "Змінити пароль", + "Current Password": "Поточний пароль", + "New Password": "Новий пароль", + "Repeat New Password": "Повтор нового пароля", + "Update Password": "Оновити пароль", + "Disable Auth": "Вимкнути авторизацію", + "Enable Auth": "Увімкнути авторизацію", + "disableauth.message1": "Ви впевнені, що бажаєте {disableAuth}?", + "disable authentication": "вимкнути авторизацію", + "disableauth.message2": "Це підходить для {intendThirdPartyAuth} пееред відкриттям Uptime Kuma, наприклад Cloudflare Access.", + "where you intend to implement third-party authentication": "тих, у кого встановлена інша авторизація", + "Please use this option carefully!": "Будь ласка, використовуйте з обережністю!", + "Logout": "Вийти", + "Leave": "Відміна", + "I understand, please disable": "Я розумію, все одно відключити", + "Confirm": "Підтвердити", + "Yes": "Так", + "No": "Ні", + "Username": "Логін", + "Password": "Пароль", + "Remember me": "Запам'ятати мене", + "Login": "Увійти", + "No Monitors, please": "Моніторів немає, будь ласка", + "No Monitors": "Монітори відсутні", + "add one": "створіть новий", + "Notification Type": "Тип сповіщення", + "Email": "Пошта", + "Test": "Перевірка", + "Certificate Info": "Інформація про сертифікат", + "Resolver Server": "DNS сервер", + "Resource Record Type": "Тип ресурсного запису", + "Last Result": "Останній результат", + "Create your admin account": "Створіть обліковий запис адміністратора", + "Repeat Password": "Повторіть пароль", + "respTime": "Час відповіді (мс)", + "notAvailableShort": "Н/д", + "Create": "Створити", + "clearEventsMsg": "Ви дійсно хочете видалити всю статистику подій цього монітора?", + "clearHeartbeatsMsg": "Ви дійсно хочете видалити всю статистику опитувань цього монітора?", + "confirmClearStatisticsMsg": "Ви дійсно хочете видалити ВСЮ статистику?", + "Clear Data": "Видалити статистику", + "Events": "Події", + "Heartbeats": "Опитування", + "Auto Get": "Авто-отримання", + "enableDefaultNotificationDescription": "Для кожного нового монітора це сповіщення буде включено за замовчуванням. Ви все ще можете відключити сповіщення в кожному моніторі окремо.", + "Default enabled": "Використовувати за замовчуванням", + "Also apply to existing monitors": "Застосувати до існуючих моніторів", + "Export": "Експорт", + "Import": "Імпорт", + "backupDescription": "Ви можете зберегти резервну копію всіх моніторів та повідомлень у вигляді JSON-файлу.", + "backupDescription2": "P.S.: Історія та події збережені не будуть.", + "backupDescription3": "Важливі дані, такі як токени повідомлень, додаються під час експорту, тому зберігайте файли в безпечному місці.", + "alertNoFile": "Виберіть файл для імпорту.", + "alertWrongFileType": "Виберіть JSON-файл.", + "twoFAVerifyLabel": "Будь ласка, введіть свій токен, щоб перевірити роботу 2FA:", + "tokenValidSettingsMsg": "Токен дійсний! Тепер ви можете зберегти налаштування 2FA.", + "confirmEnableTwoFAMsg": "Ви дійсно хочете увімкнути 2FA?", + "confirmDisableTwoFAMsg": "Ви дійсно хочете вимкнути 2FA?", + "Apply on all existing monitors": "Застосувати до всіх існуючих моніторів", + "Verify Token": "Перевірити токен", + "Setup 2FA": "Налаштування 2FA", + "Enable 2FA": "Увімкнути 2FA", + "Disable 2FA": "Вимкнути 2FA", + "2FA Settings": "Налаштування 2FA", + "Two Factor Authentication": "Двофакторна аутентифікація", + "Active": "Активно", + "Inactive": "Неактивно", + "Token": "Токен", + "Show URI": "Показати URI", + "Clear all statistics": "Очистити статистику", + "retryCheckEverySecond": "Повтор кожні {0} секунд", + "importHandleDescription": "Виберіть \"Пропустити існуючі\", якщо ви хочете пропустити кожен монітор або повідомлення з таким же ім'ям. \"Перезаписати\" видалить кожен існуючий монітор або повідомлення та додасть заново. Варіант \"Не перевіряти\" примусово відновлює всі монітори і повідомлення, навіть якщо вони вже існують.", + "confirmImportMsg": "Ви дійсно хочете відновити резервну копію? Переконайтеся, що ви вибрали відповідний варіант імпорту.", + "Heartbeat Retry Interval": "Інтервал повтору опитування", + "Import Backup": "Імпорт", + "Export Backup": "Експорт", + "Skip existing": "Пропустити існуючі", + "Overwrite": "Перезаписати", + "Options": "Опції", + "Keep both": "Не перевіряти", + "Tags": "Теги", + "Add New below or Select...": "Додати новий або вибрати…", + "Tag with this name already exist.": "Такий тег вже існує.", + "Tag with this value already exist.": "Тег із таким значенням вже існує.", + "color": "колір", + "value (optional)": "значення (опціонально)", + "Gray": "Сірий", + "Red": "Червоний", + "Orange": "Помаранчевий", + "Green": "Зелений", + "Blue": "Синій", + "Indigo": "Індиго", + "Purple": "Пурпурний", + "Pink": "Рожевий", + "Search...": "Пошук…", + "Avg. Ping": "Середній пінг", + "Avg. Response": "Середній час відповіді", + "Entry Page": "Головна сторінка", + "statusPageNothing": "Тут порожньо. Додайте групу або монітор.", + "No Services": "Немає сервісів", + "All Systems Operational": "Всі системи працюють у штатному режимі", + "Partially Degraded Service": "Сервіси працюють частково", + "Degraded Service": "Всі сервіси не працюють", + "Add Group": "Додати групу", + "Add a monitor": "Додати монітор", + "Edit Status Page": "Редагувати", + "Go to Dashboard": "Панель управління", + "Status Page": "Сторінка статусу", + "Status Pages": "Сторінки статусу", + "Discard": "Скасування", + "Create Incident": "Створити інцидент", + "Switch to Dark Theme": "Темна тема", + "Switch to Light Theme": "Світла тема", + "telegram": "Telegram", + "webhook": "Вебхук", + "smtp": "Email (SMTP)", + "discord": "Discord", + "teams": "Microsoft Teams", + "signal": "Signal", + "gotify": "Gotify", + "slack": "Slack", + "rocket.chat": "Rocket.chat", + "pushover": "Pushover", + "pushy": "Pushy", + "octopush": "Octopush", + "promosms": "PromoSMS", + "lunasea": "LunaSea", + "apprise": "Apprise (Підтримка 50+ сервісів повідомлень)", + "pushbullet": "Pushbullet", + "line": "Line Messenger", + "mattermost": "Mattermost", + "Primary Base URL": "Основна URL", + "Push URL": "URL пуша", + "needPushEvery": "Цю URL необхідно викликати кожні {0} секунд.", + "pushOptionalParams": "Додаткові параметри: {0}", + "defaultNotificationName": "Моє сповіщення {notification} ({number})", + "here": "тут", + "Required": "Потрібно", + "Bot Token": "Токен бота", + "wayToGetTelegramToken": "Ви можете взяти токен тут - {0}.", + "Chat ID": "ID чату", + "supportTelegramChatID": "Підтримуються ID чатів, груп та каналів", + "wayToGetTelegramChatID": "Ви можете взяти ID вашого чату, відправивши повідомлення боту і перейшовши по цьому URL для перегляду chat_id:", + "YOUR BOT TOKEN HERE": "ВАШ ТОКЕН БОТА ТУТ", + "chatIDNotFound": "ID чату не знайдено; будь ласка, відправте спочатку повідомлення боту", + "Post URL": "Post URL", + "Content Type": "Тип контенту", + "webhookJsonDesc": "{0} підходить для будь-яких сучасних HTTP-серверів, наприклад Express.js", + "webhookFormDataDesc": "{multipart} підходить для PHP. JSON-вивід необхідно буде обробити за допомогою {decodeFunction}", + "secureOptionNone": "Ні / STARTTLS (25, 587)", + "secureOptionTLS": "TLS (465)", + "Ignore TLS Error": "Ігнорувати помилки TLS", + "From Email": "Від кого", + "emailCustomSubject": "Своя тема", + "To Email": "Кому", + "smtpCC": "Копія", + "smtpBCC": "Прихована копія", + "Discord Webhook URL": "Discord Вебхук URL", + "wayToGetDiscordURL": "Ви можете отримати його, перейшовши до Налаштування сервера -> Інтеграції -> Перегляд веб-хуків -> Новий веб-хук", + "Bot Display Name": "Ім'я бота, що відображається", + "Prefix Custom Message": "Свій префікс повідомлення", + "Hello @everyone is...": "Привіт {'@'}everyone це…", + "Webhook URL": "URL вебхука", + "wayToGetTeamsURL": "Як створити URL вебхука ви можете дізнатися тут - {0}.", + "Номер": "Номер", + "Recipients": "Одержувачі", + "needSignalAPI": "Вам необхідний клієнт Signal із підтримкою REST API.", + "wayToCheckSignalURL": "Пройдіть по цьому URL, щоб дізнатися як налаштувати такий клієнт:", + "signalImportant": "ВАЖЛИВО: Не можна змішувати в Одержувачах групи та номери!", + "Application Token": "Токен програми", + "Server URL": "URL сервера", + "Priority": "Пріоритет", + "Icon Emoji": "Іконка Emoji", + "Channel Name": "Ім'я каналу", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "Більше інформації про вебхуки: {0}", + "aboutChannelName": "Введіть ім'я каналу в поле {0} Ім'я каналу, якщо ви хочете обійти канал вебхука. Наприклад: #other-channel", + "aboutKumaURL": "Якщо поле Uptime Kuma URL в налаштуваннях залишиться порожнім, за замовчуванням буде використовуватися посилання на проект на GitHub.", + "emojiCheatSheet": "Шпаргалка по Emoji: {0}", + "User Key": "Ключ користувача", + "Device": "Пристрій", + "Message Title": "Заголовок повідомлення", + "Notification Sound": "Звук сповіщення", + "More info on:": "Більше інформації: {0}", + "pushoverDesc1": "Екстренний пріоритет (2) має таймуут повтору за замовчуванням 30 секунд і закінчується через 1 годину.", + "pushoverDesc2": "Якщо ви бажаєте надсилати повідомлення різним пристроям, необхідно заповнити поле Пристрій.", + "SMS Type": "Тип SMS", + "octopushTypePremium": "Преміум (Швидкий - рекомендується для алертів)", + "octopushTypeLowCost": "Дешевий (Повільний - іноді блокується операторами)", + "checkPrice": "Тарифи {0}:", + "octopushLegacyHint": "Ви використовуєте стару версію Octopush (2011-2020) або нову?", + "Check octopush prices": "Тарифи Octopush {0}.", + "octopushPhoneNumber": "Номер телефону (між. формат, наприклад: +380123456789) ", + "octopushSMSSender": "Ім'я відправника SMS: 3-11 символів алвафіту, цифр та пробілів (a-zA-Z0-9)", + "LunaSea Device ID": "ID пристрою LunaSea", + "Apprise URL": "Apprise URL-адреса", + "Example:": "Приклад: {0}", + "Read more:": "Докладніше: {0}", + "Status:": "Статус: {0}", + "Read more": "Докладніше", + "appriseInstalled": "Apprise встановлено.", + "appriseNotInstalled": "Apprise не встановлено. {0}", + "Access Token": "Токен доступу", + "Channel access token": "Токен доступу каналу", + "Line Developers Console": "Консоль розробників Line", + "lineDevConsoleTo": "Консоль розробників Line - {0}", + "Basic Settings": "Базові налаштування", + "User ID": "ID користувача", + "Messaging API": "API повідомлень", + "wayToGetLineChannelToken": "Спочатку зайдіть в {0}, створіть провайдера та канал (API повідомлень), потім ви зможете отримати токен доступу каналу та ID користувача з вищезгаданих пунктів меню.", + "Icon URL": "URL іконки", + "aboutIconURL": "Ви можете надати посилання на іконку в полі \"URL іконки\", щоб перевизначити картинку профілю за замовчуванням. Не використовується, якщо задана іконка Emoji.", + "aboutMattermostChannelName": "Ви можете перевизначити канал за замовчуванням, в який пише вебхук, ввівши ім'я каналу в полі \"Ім'я каналу\". Це необхідно включити в налаштуваннях вебхука Mattermost. Наприклад: #other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - дешево та повільно, часто перевантажений. Тільки для одержувачів з Польщі.", + "promosmsTypeFlash": "SMS FLASH - повідомлення автоматично з'являться на пристрої одержувача. Тільки для одержувачів з Польщі.", + "promosmsTypeFull": "SMS FULL - преміум-рівень SMS, можна використовувати своє ім'я відправника (попередньо зареєструвавши його). Надійно для алертів.", + "promosmsTypeSpeed": "SMS SPEED - найвищий пріоритет у системі. Дуже швидко і надійно, але дуже дорого (вдвічі дорожче, ніж SMS FULL).", + "promosmsPhoneNumber": "Номер телефону (для одержувачів з Польщі можна пропустити код регіону)", + "promosmsSMSSender": "Ім'я відправника SMS: Зареєстроване або одне з імен за замовчуванням: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookURL": "Feishu WebHookURL", + "matrixHomeserverURL": "URL сервера (разом з http(s):// і опціонально порт)", + "Internal Room Id": "Внутрішній ID кімнати", + "matrixDesc1": "Внутрішній ID кімнати можна знайти в Подробицях у параметрах каналу вашого Matrix клієнта. Він повинен виглядати приблизно як !QMdRCpUIfLwsfjxye6:home.server.", + "matrixDesc2": "Рекомендується створити нового користувача і не використовувати токен доступу особистого користувача Matrix, тому що це спричиняє повний доступ до облікового запису та до кімнат, в яких ви є. Замість цього створіть нового користувача і запросіть його тільки в ту кімнату, в якій ви хочете отримувати повідомлення.Токен доступу можна отримати, виконавши команду {0}", + "Method": "Метод", + "Body": "Тіло", + "Headers": "Заголовки", + "PushUrl": "URL пуша", + "HeadersInvalidFormat": "Заголовки запиту некоректні JSON: ", + "BodyInvalidFormat": "Тіло запиту некоректне JSON: ", + "Monitor History": "Статистика", + "clearDataOlderThan": "Зберігати статистику за {0} днів.", + "PasswordsDoNotMatch": "Паролі не співпадають.", + "records": "записів", + "One record": "Один запис", + "steamApiKeyDescription": "Для моніторингу ігрового сервера Steam вам потрібен Web-API ключ Steam. Зареєструвати його можна тут: ", + "Certificate Chain": "Ланцюжок сертифікатів", + "Valid": "Дійсний", + "Hide Tags": "Приховати теги", + "Title": "Заголовок", + "Content": "Зміст", + "Post": "Опублікувати", + "Cancel": "Скасувати", + "Created": "Створено", + "Unpin": "Відкріпити", + "Show Tags": "Показати теги", + "recent": "Зараз", + "3h": "3 години", + "6h": "6 годин", + "24h": "24 години", + "1w": "1 тиждень", + "No monitors available.": "Немає доступних моніторів.", + "Add one": "Додати новий", + "Backup": "Резервна копія", + "Security": "Безпека", + "Shrink Database": "Стиснути базу даних", + "Current User": "Поточний користувач", + "About": "Про програму", + "Description": "Опис", + "Powered by": "Працює на основі скрипту від", + "Style": "Стиль", + "info": "ІНФО", + "warning": "УВАГА", + "danger": "ПОМИЛКА", + "primary": "ОСНОВНИЙ", + "light": "СВІТЛИЙ", + "dark": "ТЕМНИЙ", + "New Status Page": "Нова сторінка статусу", + "Show update if available": "Показувати доступні оновлення", + "Also check beta release": "Перевіряти оновлення для бета версій", + "Add New Status Page": "Додати сторінку статусу", + "Next": "Далі", + "Acz characters: a-z 0-9 -": "Дозволені символи: a-z 0-9 -", + "Start or end with a-z 0-9 only": "Початок та закінчення імені лише на символи: a-z 0-9", + "No consecutive dashes --": "Заборонено використовувати тире --", + "HTTP Options": "HTTP Опції", + "Authentication": "Аутентифікація", + "HTTP Basic Auth": "Базова HTTP", + "PushByTechulus": "Push by Techulus", + "clicksendsms": "ClickSend SMS", + "GoogleChat": "Google Chat (тільки Google Workspace)", + "apiCredentials": "API реквізити", + "Done": "Готово", + "Info": "Інфо", + "Steam API Key": "Steam API-Ключ", + "Pick a RR-Type...": "Виберіть RR-тип…", + "Pick Accepted Status Codes...": "Виберіть прийняті коди стану…", + "Default": "За замовчуванням", + "Please input title and content": "Будь ласка, введіть назву та зміст", + "Last Updated": "Останнє Оновлення", + "Untitled Group": "Група без назви", + "Services": "Сервіси", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API Користувач (включаючи префікс webapi_)", + "serwersmsAPIPassword": "API Пароль", + "serwersmsPhoneNumber": "Номер телефону", + "serwersmsSenderName": "SMS ім'я відправника (реєстрований через портал користувача)", + "stackfield": "Stackfield", + "smtpDkimSettings": "DKIM Налаштування", + "smtpDkimDesc": "Повернутися до Nodemailer DKIM {0} для використання.", + "documentation": "документація", + "smtpDkimDomain": "Ім'я домена", + "smtpDkimKeySelector": "Ключ", + "smtpDkimPrivateKey": "Приватний ключ", + "smtpDkimHashAlgo": "Алгоритм хеша (опціонально)", + "smtpDkimheaderFieldNames": "Заголовок ключів для підпису (опціонально)", + "smtpDkimskipFields": "Заколовок ключів не для підпису (опціонально)", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "Кінцева точка API", + "alertaEnvironment": "Середовище", + "alertaApiKey": "Ключ API", + "alertaAlertState": "Стан алерту", + "alertaRecoverState": "Стан відновлення", + "deleteStatusPageMsg": "Дійсно хочете видалити цю сторінку статусів?", + "Proxies": "Проксі", + "default": "За замовчуванням", + "enabled": "Активно", + "setAsDefault": "Встановити за замовчуванням", + "deleteProxyMsg": "Ви впевнені, що хочете видалити цей проксі для всіх моніторів?", + "proxyDescription": "Щоб функціонувати, монітору потрібно призначити проксі.", + "enableProxyDescription": "Цей проксі не впливатиме на запити моніторингу, доки його не буде активовано. Ви можете контролювати тимчасове відключення проксі з усіх моніторів за статусом активації.", + "setAsDefaultProxyDescription": "Цей проксі буде ввімкнено за умовчанням для нових моніторів. Ви все одно можете вимкнути проксі окремо для кожного монітора.", + "Invalid": "Недійсний", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey Secret", + "PhoneNumbers": "PhoneNumbers", + "TemplateCode": "TemplateCode", + "SignName": "SignName", + "Sms template must contain parameters: ": "Шаблон смс повинен містити параметри: ", + "Bark Endpoint": "Bark Endpoint", + "WebHookUrl": "WebHookUrl", + "SecretKey": "SecretKey", + "For safety, must use secret key": "Для безпеки необхідно використовувати секретний ключ", + "Device Token": "Токен пристрою", + "Platform": "Платформа", + "Huawei": "Huawei", + "High": "Високий", + "Retry": "Повтор", + "Topic": "Тема", + "WeCom Bot Key": "WeCom Bot ключ", + "Setup Proxy": "Налаштувати проксі", + "Proxy Protocol": "Протокол проксі", + "Proxy Server": "Проксі-сервер", + "Proxy server has authentication": "Проксі-сервер має аутентифікацію", + "User": "Користувач", + "Installed": "Встановлено", + "Not installed": "Не встановлено", + "Running": "Запущено", + "Not running": "Не запущено", + "Remove Token": "Видалити токен", + "Start": "Запустити", + "Stop": "Зупинити", + "Uptime Kuma": "Uptime Kuma", + "Slug": "Slug", + "Accept characters:": "Приймаються символи:", + "startOrEndWithOnly": "Починається або закінчується лише {0}", + "No consecutive dashes": "Без послідовних тире", + "The slug is already taken. Please choose another slug.": "Slug вже зайнятий. Будь ласка, виберіть інший slug.", + "No Proxy": "Без проксі", + "Page Not Found": "Сторінку не знайдено", + "Reverse Proxy": "Реверсивний проксі", + "wayToGetCloudflaredURL": "(Завантажити Cloudflare з {0})", + "cloudflareWebsite": "Веб-сайт Cloudflare", + "Message:": "Повідомлення:", + "Don't know how to get the token? Please read the guide:": "Не знаєте, як отримати токен? Прочитайте посібник:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "Поточне з’єднання може бути втрачено, якщо ви зараз під’єднуєтеся через Cloudflare Tunnel. Ви дійсно хочете зробити це? Для підтвердження введіть поточний пароль.", + "Other Software": "Інше програмне забезпечення", + "For example: nginx, Apache and Traefik.": "Наприклад: nginx, Apache і Traefik.", + "Please read": "Будь ласка, прочитайте", + "Subject:": "Тема:", + "Valid To:": "Дійсний до:", + "Days Remaining:": "Залишилось днів:", + "Issuer:": "Емітент:", + "Fingerprint:": "Відбиток:", + "No status pages": "Немає сторінок статусу", + "Domain Name Expiry Notification": "Сповіщення про закінчення терміну дії доменного імені", + "Proxy": "Проксі", + "Date Created": "Дата створення", + "onebotHttpAddress": "OneBot адреса HTTP", + "onebotMessageType": "OneBot тип повідомлення", + "onebotGroupMessage": "Група", + "onebotPrivateMessage": "Приватне", + "onebotUserOrGroupId": "ID групи/користувача", + "onebotSafetyTips": "Для безпеки необхідно встановити маркер доступу", + "PushDeer Key": "PushDeer ключ", + "Footer Text": "Текст нижнього колонтитула", + "Show Powered By": "Показувати платформу", + "Domain Names": "Доменні імена", + "signedInDisp": "Ви ввійшли як {0}", + "signedInDispDisabled": "Авторизація вимкнена.", + "Certificate Expiry Notification": "Сповіщення про закінчення терміну дії сертифіката", + "API Username": "Користувач API", + "API Key": "Ключ API", + "Recipient Number": "Номер одержувача", + "From Name/Number": "Від Ім'я/Номер", + "Leave blank to use a shared sender number.": "Залиште поле порожнім, щоб використовувати спільний номер відправника.", + "Octopush API Version": "Octopush API версія", + "Legacy Octopush-DM": "Застарілий Octopush-DM", + "endpoint": "кінцева точка", + "octopushAPIKey": "\"Ключ API\" з облікових даних HTTP API в панелі керування", + "octopushLogin": "\"Ім'я користувача\" з облікових даних HTTP API на панелі керування", + "promosmsLogin": "API Логін", + "promosmsPassword": "API Пароль", + "pushoversounds pushover": "Pushover (по замовчуванню)", + "pushoversounds bike": "Велосипед", + "pushoversounds bugle": "Горн", + "pushoversounds cashregister": "Касовий апарат", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "Cosmic", + "pushoversounds falling": "Падіння", + "pushoversounds gamelan": "Гамелан", + "pushoversounds incoming": "Вхідний", + "pushoversounds intermission": "Антракт", + "pushoversounds magic": "Магія", + "pushoversounds mechanical": "Механічний", + "pushoversounds pianobar": "Піано-бар", + "pushoversounds siren": "Сирена", + "pushoversounds spacealarm": "Космічна тривога", + "pushoversounds tugboat": "Буксирний катер", + "pushoversounds alien": "Тривога прибульців (довга)", + "pushoversounds climb": "Підйом (довгий)", + "pushoversounds persistent": "Стійкий (довгий)", + "pushoversounds echo": "Pushover ехо (довгий)", + "pushoversounds updown": "Вгору вниз (довгий)", + "pushoversounds vibrate": "Тільки вібрація", + "pushoversounds none": "Нічого (тиша)", + "pushyAPIKey": "Секретний ключ API", + "pushyToken": "Токен пристрою", + "Using a Reverse Proxy?": "Використовуєте зворотній проксі?", + "Check how to config it for WebSocket": "Перевірте, як налаштувати його для WebSocket", + "Steam Game Server": "Ігровий сервер Steam", + "Most likely causes:": "Найімовірніші причини:", + "The resource is no longer available.": "Ресурс більше не доступний.", + "There might be a typing error in the address.": "Можливо, в адресі є помилка.", + "What you can try:": "Що ви можете спробувати:", + "Retype the address.": "Повторно введіть адресу.", + "Go back to the previous page.": "Повернутися на попередню сторінку.", + "Coming Soon": "Незабаром", + "wayToGetClickSendSMSToken": "Ви можете отримати ім’я користувача API та ключ API з {0} .", + "Connection String": "Рядок підключення", + "Query": "Запит", + "settingsCertificateExpiry": "Закінчення терміну дії сертифіката TLS", + "certificationExpiryDescription": "Запуск сповіщення для HTTPS моніторів коли до закінчення терміну дії TLS сертифіката:", + "ntfy Topic": "ntfy Тема", + "Domain": "Домен", + "Workstation": "Робоча станція", + "disableCloudflaredNoAuthMsg": "Ви перебуваєте в режимі без авторизації, пароль не потрібен.", + "Schedule maintenance": "Графік обслуговування", + "Affected Monitors": "Задіяні монітори", + "HomeAssistant": "Home Assistant", + "smseaglePriority": "Пріоритет повідомлення (0-9, за замовчуванням = 0)", + "smseagleRecipient": "Отримувач(і) (декілька отримувачів повинні бути відокремлені комами)", + "markdownSupported": "Підтримується синтаксис розмітки", + "Resend Notification if Down X times consequently": "Повторно надсилати сповіщення, якщо падіння відбулося X разів підряд", + "resendEveryXTimes": "Повторно відправляти кожні {0} разів", + "resendDisabled": "Повторне надсилання вимкнено", + "Start of maintenance": "Початок обслуговування", + "Select status pages...": "Вибери сторінку стану…", + "All Status Pages": "Всі сторінки станів", + "Passive Monitor Type": "Пасивний моніторинг", + "Specific Monitor Type": "Специфічний моніторинг", + "Monitor": "Монітор | Монітори", + "smseagle": "SMSEagle", + "smseagleEncoding": "Надсилати в Unicode", + "smseagleUrl": "URL-адреса пристрою SMSEagle", + "smseagleToken": "Токен доступу API", + "smseagleRecipientType": "Тип одержувача", + "smseagleContact": "Телефонний контакт(и)", + "smseagleGroup": "Телефонна група(и)", + "smseagleTo": "Телефонний номер(и)", + "Help": "Допомога", + "Game": "Гра", + "Pick Affected Monitors...": "Виберіть задіяні монітори…", + "statusMaintenance": "Обслуговування", + "Maintenance": "Обслуговування", + "General Monitor Type": "Основний моніторинг", + "error": "Помилка", + "webhookAdditionalHeadersTitle": "Додаткові заголовки", + "webhookAdditionalHeadersDesc": "Задати додаткові заголовки, що за допомогою вебхука. Кожен заголовок має бути заданий у вигляді JSON ключа/значення.", + "critical": "Критичний", + "Custom": "Нестандартний", + "successMessage": "Повідомлення про успіх", + "Customize": "Налаштувати", + "topic": "Тема", + "Body Encoding": "Кодування тіла", + "Event type:": "Тип події:", + "Event data:": "Дані подій:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "Потім виберіть дію, наприклад, перемкнути сцену на червоне світло RGB.", + "backupRecommend": "Будь ласка, натомість створіть резервну копію тому або теки даних (./data/) напряму.", + "Optional": "Необов'язково", + "recurringInterval": "Інтервал", + "Recurring": "Повторюваний", + "strategyManual": "Активний/Неактивний вручну", + "telegramSendSilently": "Надіслати беззвучно", + "telegramSendSilentlyDescription": "Надсилає повідомлення беззвучно. Користувачі отримають сповіщення без звуку.", + "Trigger type:": "Тип тригера:", + "dayOfWeek": "День тижня", + "lastDay": "Останній день", + "warningTimezone": "Використовується часовий пояс сервера", + "weekdayShortMon": "Пн", + "weekdayShortTue": "Вт", + "weekdayShortWed": "Ср", + "weekdayShortThu": "Чт", + "weekdayShortFri": "Пт", + "weekdayShortSun": "Нд", + "Single Maintenance Window": "Разове технічне обслуговування", + "Maintenance Time Window of a Day": "Період доби для технічного обслуговування", + "Effective Date Range": "Діапазон дат вступу в силу (необов'язково)", + "Schedule Maintenance": "Розклад обслуговування", + "DateTime Range": "Діапазон дат і часу", + "loadingError": "Не вдалося отримати дані, спробуйте пізніше.", + "install": "Встановити", + "installing": "Встановлення", + "uninstall": "Видалити", + "API Keys": "API-ключі", + "Expiry": "Закінчення терміну дії", + "Expiry date": "Дата закінчення терміну дії", + "Don't expire": "Не прострочувати термін дії", + "Continue": "Продовжити", + "Add Another": "Додати ще", + "Key Added": "Ключ додано", + "No API Keys": "Немає API-ключів", + "apiKey-active": "Активний", + "apiKey-inactive": "Неактивний", + "Expires": "Термін дії закінчується", + "deleteAPIKeyMsg": "Ви впевнені, що хочете видалити цей API-ключ?", + "Generate": "Згенерувати", + "pagertreeIntegrationUrl": "URL-адреса інтеграції", + "pagertreeSilent": "Тихо", + "pagertreeUrgency": "Терміновість", + "pagertreeLow": "Низька", + "pagertreeMedium": "Середня", + "pagertreeHigh": "Висока", + "pagertreeCritical": "Критична", + "pagertreeResolve": "Автоматичне вирішення", + "Edit Tag": "Редагувати тег", + "Server Address": "Адреса сервера", + "Learn More": "Дізнатися більше", + "or": "або", + "uninstalling": "Видалення", + "confirmUninstallPlugin": "Ви дійсно хочете видалити цей плагін?", + "notificationRegional": "Регіональні", + "Clone Monitor": "Копія", + "Clone": "Скопіювати", + "cloneOf": "Копія {0}", + "Custom Footer": "Користувацький Footer", + "Strategy": "Стратегія", + "Free Mobile User Identifier": "ID користувача Free Mobile", + "SendKey": "SendKey", + "Gateway Type": "Тип шлюзу", + "You can divide numbers with": "Числа можна ділити за допомогою", + "Bark Group": "Bark група", + "Bark Sound": "Bark звук", + "Custom CSS": "Користувацький CSS", + "promosmsAllowLongSMS": "Дозволити довгі SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + "auto resolve": "автоматичне вирішення", + "RadiusCallingStationIdDescription": "Ідентифікатор пристрою, який викликає", + "telegramMessageThreadID": "(Необов'язково) ID теми повідомлення", + "telegramMessageThreadIDDescription": "Необов'язковий ID для цільової гілки повідомлень (теми) форуму; тільки для форумів супергруп", + "backupOutdatedWarning": "Застаріло: Оскільки було додано багато функцій і ця функція резервного копіювання дещо застаріла, вона не може створити або відновити повну резервну копію.", + "dnsCacheDescription": "Це може не працювати в деяких середовищах IPv6, вимкніть це, якщо у вас виникнуть проблеми.", + "deleteMaintenanceMsg": "Ви дійсно хочете видалити це технічне обслуговування?", + "dnsPortDescription": "Порт DNS-сервера. За замовчуванням 53. Ви можете змінити порт у будь-який час.", + "recurringIntervalMessage": "Запускати раз на день | Запускати раз на {0} дні(в)", + "SMSManager API Docs": "SMSManager API документація ", + "Base URL": "Базова URL-адреса", + "goAlertInfo": "GoAlert - це програма з відкритим вихідним кодом для планування викликів, автоматичної ескалації та сповіщень (наприклад, SMS або голосових дзвінків). Автоматично залучайте потрібну людину, потрібним чином і в потрібний час! {0}", + "goAlertIntegrationKeyInfo": "Отримайте універсальний ключ інтеграції API для сервісу у форматі \"aaaaaaaa-bbbb-bbbb-cccc-dddd-eeeeeeeeeeee\", зазвичай це значення параметра токену скопійованої URL-адреси.", + "wayToGetPagerDutyKey": "Ви можете отримати його, перейшовши до Service -> Service Directory -> (Select a service) -> Integrations -> Add integration. Тут ви можете шукати \"Events API V2\". Більше інформації {0}", + "Google Analytics ID": "Google Analytics ID", + "apiKeyAddedMsg": "Ваш API-ключ додано. Будь ласка, запам'ятайте його, оскільки він більше не буде показаний.", + "Add API Key": "Додати API-ключ", + "apiKey-expired": "Прострочений", + "disableAPIKeyMsg": "Ви впевнені, що хочете деактивувати цей API-ключ?", + "pagertreeDoNothing": "Нічого не робити", + "wayToGetPagerTreeIntegrationURL": "Після створення інтеграції Uptime Kuma в PagerTree скопіюйте Endpoint. Дивіться повну інформацію {0}", + "Automations can optionally be triggered in Home Assistant:": "За бажанням можна активувати автоматизацію в Home Assistant:", + "dayOfMonth": "День місяця", + "telegramProtectContent": "Захист від пересилання/збереження", + "telegramProtectContentDescription": "Якщо увімкнено, повідомлення бота в Telegram будуть захищені від пересилання та збереження.", + "Notification Service": "Сервіс сповіщень", + "default: notify all devices": "за замовчуванням: сповіщати всі пристрої", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Список сервісів сповіщень можна знайти в Home Assistant в розділі \"Інструменти для розробників > Служби\", виконавши пошук за словом \"notification\" і знайшовши назву свого пристрою/телефону.", + "weekdayShortSat": "Сб", + "lastDay1": "Останній день місяця", + "lastDay2": "2-й останній день місяця", + "lastDay3": "3-й останній день місяця", + "lastDay4": "4-й останній день місяця", + "No Maintenance": "Немає технічного обслуговування", + "pauseMaintenanceMsg": "Ви впевнені, що хочете поставити на паузу?", + "maintenanceStatus-under-maintenance": "Перебуває на технічному обслуговуванні", + "maintenanceStatus-inactive": "Неактивне", + "maintenanceStatus-scheduled": "Заплановане", + "maintenanceStatus-ended": "Завершене", + "maintenanceStatus-unknown": "Невідоме", + "Display Timezone": "Відображати часовий пояс", + "Server Timezone": "Часовий пояс сервера", + "statusPageMaintenanceEndDate": "Закінчення", + "IconUrl": "URL-адреса іконки", + "Enable DNS Cache": "(Застаріле) Увімкнути DNS-кеш для HTTP(s) моніторів", + "Enable": "Увімкнути", + "confirmDeleteTagMsg": "Ви впевнені, що хочете видалити цей тег? Монітори, пов'язані з цим тегом, не будуть видалені.", + "Guild ID": "ID гільдії", + "Free Mobile API Key": "Free Mobile API ключ", + "Enable TLS": "Увімкнути TLS", + "Proto Service Name": "Назва Proto-сервісу", + "Proto Content": "Вміст Proto", + "Proto Method": "Метод Proto", + "Economy": "Економічний", + "Lowcost": "Дешевий", + "Custom Monitor Type": "Користувацький тип монітора", + "topicExplanation": "MQTT тема для моніторингу", + "successMessageExplanation": "MQTT-повідомлення, яке буде вважатися успішним", + "HTTP Headers": "HTTP заголовки", + "Trust Proxy": "Довірений проксі", + "RadiusSecret": "Секрет Radius", + "RadiusSecretDescription": "Спільний секрет між клієнтом і сервером", + "RadiusCalledStationId": "ID станції, що викликається", + "Frontend Version": "Версія інтерфейсу", + "Frontend Version do not match backend version!": "Версія інтерфейсу не збігається з версією бекенду!", + "Number": "Номер", + "dataRetentionTimeError": "Період зберігання повинен бути 0 або більше", + "infiniteRetention": "Встановіть 0 для нескінченного зберігання.", + "affectedMonitorsDescription": "Виберіть монітори, які зачепить поточне технічне обслуговування", + "affectedStatusPages": "Показувати це повідомлення про технічне обслуговування на вибраних сторінках стану", + "atLeastOneMonitor": "Виберіть принаймні один монітор, який зазнав впливу", + "wayToGetKookBotToken": "Створіть заявку та отримайте токен бота тут {0}", + "wayToGetKookGuildID": "Увімкніть \"Режим розробника\" в налаштуваннях Kook і клацніть правою кнопкою миші на гільдії, щоб отримати її ID", + "Date and Time": "Дата і час", + "Integration Key": "Ключ інтеграції", + "Integration URL": "URL-адреса інтеграції", + "Auto resolve or acknowledged": "Автоматично вирішено або підтверджено", + "do nothing": "нічого не робити", + "auto acknowledged": "автоматично підтверджено", + "plugin": "Плагін | Плагіни", + "RadiusCalledStationIdDescription": "Ідентифікатор пристрою, що викликається", + "RadiusCallingStationId": "ID станції, яка викликає", + "Setup Docker Host": "Налаштування Docker-хосту", + "Connection Type": "Тип підключення", + "Docker Daemon": "Демон Docker", + "socket": "Сокет", + "tcp": "TCP / HTTP", + "Container Name / ID": "Назва / ID контейнера", + "deleteDockerHostMsg": "Ви дійсно хочете видалити цей Docker-хост для всіх моніторів?", + "Docker Container": "Docker-контейнер", + "Docker Host": "Docker-хост", + "Docker Hosts": "Docker-хости", + "wayToGetZohoCliqURL": "Ви можете дізнатися, як створити URL-адресу веб-хука {0}.", + "enableGRPCTls": "Дозволити надсилати gRPC-запити з TLS-з'єднанням", + "grpcMethodDescription": "Ім'я методу перетворюється у формат camelCase, наприклад, sayHello, check тощо.", + "Packet Size": "Розмір пакету", + "trustProxyDescription": "Довіряти заголовкам 'X-Forwarded-*'. Якщо ви хочете отримати правильний клієнтський IP, а ваш Uptime Kuma знаходиться за проксі-сервером, таким як Nginx або Apache, вам слід увімкнути цю опцію.", + "wayToGetLineNotifyToken": "Ви можете отримати токен доступу з {0}", + "Examples": "Приклади", + "Home Assistant URL": "URL-адреса Home Assistant", + "Long-Lived Access Token": "Довготривалий токен доступу", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Довготривалий токен доступу можна створити, натиснувши на ім'я вашого профілю (внизу ліворуч), прокрутивши його донизу і натиснувши кнопку Створити токен. ", + "high": "високий", + "Disable": "Вимкнути", + "Resend Notification if Down X times consecutively": "Повторно надіслати сповіщення, якщо було падіння X разів поспіль", + "lunaseaTarget": "Ціль", + "Add New Tag": "Додати новий тег", + "lunaseaDeviceID": "ID пристрою", + "lunaseaUserID": "ID користувача", + "twilioAccountSID": "SID облікового запису", + "twilioAuthToken": "Токен авторизації / Секретний ключ Api", + "twilioFromNumber": "З номера", + "twilioToNumber": "На номер", + "sameAsServerTimezone": "Такий самий, як часовий пояс сервера", + "startDateTime": "Дата і час початку", + "endDateTime": "Дата і час закінчення", + "cronExpression": "Cron-вираз", + "cronSchedule": "Розклад: ", + "invalidCronExpression": "Неправильний Cron-вираз: {0}", + "statusPageRefreshIn": "Оновлювати кожні: {0}", + "ntfyAuthenticationMethod": "Метод автентифікації", + "ntfyUsernameAndPassword": "Ім'я користувача та пароль", + "pushoverMessageTtl": "TTL повідомлення (секунди)", + "Monitor Setting": "Налаштування монітора {0}", + "Show Clickable Link": "Показувати клікабельне посилання", + "Show Clickable Link Description": "Якщо позначено, кожен, хто має доступ до цієї сторінки статусу, може мати доступ до URL-адреси моніторингу.", + "Open Badge Generator": "Відкрити генератор бейджів", + "Badge Generator": "Генератор бейджів {0}", + "Badge Type": "Тип бейджа", + "Badge Duration": "Тривалість бейджа", + "Badge Label": "Ярлик бейджа", + "Badge Prefix": "Префікс значення бейджа", + "Badge Suffix": "Суфікс значення бейджа", + "Badge Label Color": "Колір ярлика бейджа", + "Badge Color": "Колір бейджа", + "Badge Label Prefix": "Префікс ярлика бейджа", + "Badge Label Suffix": "Суфікс ярлика бейджа", + "Badge Style": "Стиль бейджа", + "Badge value (For Testing only.)": "Значення бейджа (тільки для тестування.)", + "Badge URL": "URL бейджа", + "Badge Up Color": "Колір бейджа \"Доступний\"", + "Badge Down Color": "Колір бейджа \"Недоступний\"", + "Badge Pending Color": "Колір бейджа \"Очікування\"", + "Badge Warn Color": "Колір бейджа \"Попередження\"", + "Badge Warn Days": "Бейдж \"Днів попередження\"", + "Badge Maintenance Color": "Колір бейджа \"Обслуговування\"", + "Badge Down Days": "Бейдж \"Днів недоступний\"", + "Group": "Група", + "Monitor Group": "Група моніторів", + "Edit Maintenance": "Редагувати обслуговування", + "Cannot connect to the socket server": "Не вдається підключитися до сервера сокетів", + "Reconnecting...": "Повторне підключення...", + "Home": "Головна", + "noGroupMonitorMsg": "Недоступно. Спочатку створіть групу моніторів.", + "Close": "Закрити", + "chromeExecutableDescription": "Для користувачів Docker, якщо Chromium ще не встановлено, встановлення та відображення результатів тесту може зайняти кілька хвилин. Потрібно 1 ГБ дискового простору.", + "chromeExecutableAutoDetect": "Автоматичне визначення", + "chromeExecutable": "Виконуваний файл Chrome/Chromium", + "Invert Keyword": "Інвертоване ключове слово", + "invertKeywordDescription": "Слідкувати за тим, щоб ключове слово було відсутнім, а не присутнім.", + "webhookCustomBodyDesc": "Задати користувацьке HTTP-тіло для запиту. Приймаються шаблонні змінні {msg}, {heartbeat}, {monitor}.", + "webhookBodyPresetOption": "Пресет - {0}", + "webhookBodyCustomOption": "Користувацьке тіло", + "Request Body": "Тіло запиту", + "Badge Preview": "Попередній перегляд бейджа", + "Badge Duration (in hours)": "Тривалість бейджа (у годинах)", + "twilioApiKey": "Api ключ (необов'язково)", + "Expected Value": "Очікуване значення", + "Json Query": "Json-запит", + "Notify Channel": "Сповіщення каналу", + "aboutNotifyChannel": "Сповіщення каналу надішле сповіщення на десктоп або мобільний для всіх учасників каналу, незалежно від того, встановлена їхня доступність як активна чи відсутня.", + "filterActive": "Активні", + "filterActivePaused": "Призупинені", + "Kafka Brokers": "Брокери Kafka", + "Press Enter to add broker": "Натисніть Enter, щоб додати брокер", + "Kafka Topic Name": "Назва теми Kafka", + "Kafka SASL Options": "Параметри Kafka SASL", + "Mechanism": "Механізм", + "Pick a SASL Mechanism...": "Виберіть механізм SASL…", + "Authorization Identity": "Ідентифікатор авторизації", + "AccessKey Id": "AccessKey Id", + "Secret AccessKey": "Secret AccessKey", + "Session Token": "Токен сесії", + "Enable Kafka SSL": "Увімкнути Kafka SSL", + "Enable Kafka Producer Auto Topic Creation": "Увімкнути автоматичне створення тем Kafka Producer", + "Enter the list of brokers": "Введіть список брокерів", + "Kafka Producer Message": "Повідомлення Kafka Producer", + "tailscalePingWarning": "Для того, щоб використовувати монітор Tailscale Ping, вам потрібно встановити Uptime Kuma без Docker, а також встановити клієнт Tailscale на вашому сервері.", + "Server URL should not contain the nfty topic": "URL-адреса сервера не повинна містити тему nfty", + "FlashDuty Severity": "Серйозність", + "nostrRelays": "Реле Nostr", + "nostrRelaysHelp": "Одна URL-адреса реле в рядку", + "nostrSender": "Приватний ключ відправника (nsec)", + "nostrRecipients": "Відкриті ключі одержувачів (npub)", + "showCertificateExpiry": "Показати термін дії сертифікату", + "noOrBadCertificate": "Відсутність/поганий сертифікат", + "Select": "Вибрати", + "selectedMonitorCount": "Вибрано: {0}", + "wayToGetFlashDutyKey": "Ви можете перейти на сторінку \"Канал -> (Виберіть канал) -> Інтеграції -> Додати нову інтеграцію\", додайте \"Uptime Kuma\", щоб отримати пуш-адресу, скопіюйте ключ інтеграції в адресу. Для отримання додаткової інформації, будь ласка, відвідайте", + "nostrRecipientsHelp": "Формат npub, по одному в рядку", + "Check/Uncheck": "Встановити/зняти галочку", + "PushDeer Server": "Сервер PushDeer", + "pushDeerServerDescription": "Залиште порожнім, щоб використовувати офіційний сервер", + "Request Timeout": "Таймаут запиту", + "timeoutAfter": "Таймаут через {0} секунд", + "styleElapsedTime": "Час, що минув під індикатором опитування", + "gamedigGuessPort": "Gamedig: Вгадати порт", + "gamedigGuessPortDescription": "Порт, що використовується протоколом запитів до сервера Valve, може відрізнятися від порту клієнта. Спробуйте це, якщо монітор не може підключитися до вашого сервера.", + "styleElapsedTimeShowWithLine": "Показати (з лінією)", + "styleElapsedTimeShowNoLine": "Показати (без лінії)", + "enableNSCD": "Увімкнути NSCD (Name Service Cache Daemon) для кешування всіх DNS-запитів", + "setupDatabaseChooseDatabase": "Яку базу даних ви бажаєте використовувати?", + "setupDatabaseEmbeddedMariaDB": "Вам не потрібно нічого налаштовувати. Цей докер-образ містить вбудовану та автоматично налаштовану базу даних MariaDB. Uptime Kuma під'єднатися до цієї бази даних через unix-сокет.", + "setupDatabaseSQLite": "Простий файл бази даних, рекомендований для невеликих проєктів. До версії 2.0.0 Uptime Kuma використовувала SQLite як базу даних за замовчуванням.", + "setupDatabaseMariaDB": "Підключитися до зовнішньої бази даних MariaDB. Вам потрібно задати інформацію для підключення до бази даних.", + "dbName": "Назва бази даних", + "Saved.": "Збережено.", + "monitorToastMessagesLabel": "Тост-сповіщення монітора", + "toastErrorTimeout": "Таймаут для сповіщень про помилки", + "toastSuccessTimeout": "Таймаут для сповіщень про успіх", + "monitorToastMessagesDescription": "Тост-сповіщення для моніторів зникають через заданий час у секундах. Значення -1 вимикає таймаут. Значення 0 вимикає тост-сповіщення.", + "Bark API Version": "Версія Bark API", + "pushViewCode": "Як користуватися Push-монітором? (Переглянути код)", + "pushOthers": "Інші", + "programmingLanguages": "Мови програмування", + "authInvalidToken": "Недійсний токен.", + "2faAlreadyEnabled": "2FA вже увімкнено.", + "2faEnabled": "2FA увімкнено.", + "2faDisabled": "2FA вимкнено.", + "successAdded": "Успішно додано.", + "successResumed": "Успішно відновлено.", + "successPaused": "Успішно зупинено.", + "successDeleted": "Успішно видалено.", + "successAuthChangePassword": "Пароль успішно оновлено.", + "successBackupRestored": "Резервну копію успішно відновлено.", + "successDisabled": "Успішно вимкнено.", + "tagNotFound": "Тег не знайдено.", + "foundChromiumVersion": "Знайдено Chromium/Chrome. Версія: {0}", + "authUserInactiveOrDeleted": "Користувач неактивний або видалений.", + "authIncorrectCreds": "Неправильне ім'я користувача або пароль.", + "successEdited": "Успішно відредаговано.", + "successEnabled": "Успішно увімкнено.", + "Reset Token": "Скинути токен", + "emailCustomisableContent": "Налаштовуваний вміст", + "leave blank for default subject": "залиште порожнім для теми за замовчуванням", + "emailCustomBody": "Користувацьке тіло", + "smtpLiquidIntroduction": "Наступні два поля можна шаблонувати за допомогою мови шаблонів Liquid. Будь ласка, зверніться до {0} для отримання інструкцій з використання. Ось доступні змінні:", + "templateHeartbeatJSON": "об'єкт, що описує опитування", + "liquidIntroduction": "Шаблонність досягається за допомогою мови шаблонів Liquid. Будь ласка, зверніться до {0} для отримання інструкцій з використання. Ось доступні змінні:", + "templateMsg": "повідомлення сповіщення", + "templateMonitorJSON": "об'єкт, що описує монітор", + "templateLimitedToUpDownCertNotifications": "доступно лише для сповіщень Доступний/Недоступний/Закінчення терміну дії сертифіката", + "templateLimitedToUpDownNotifications": "доступно лише для сповіщень Доступний/Недоступний", + "leave blank for default body": "залиште порожнім для тіла за замовчуванням", + "emailTemplateServiceName": "Назва сервісу", + "emailTemplateHostnameOrURL": "Ім'я хоста або URL", + "emailTemplateStatus": "Статус", + "emailTemplateMsg": "повідомлення сповіщення", + "emailTemplateLimitedToUpDownNotification": "доступно лише для опитування Доступний/Недоступний, інакше - нуль", + "emailTemplateMonitorJSON": "об'єкт, що описує монітор", + "emailTemplateHeartbeatJSON": "об'єкт, що описує опитування", + "GrafanaOncallUrl": "Grafana Oncall URL", + "noDockerHostMsg": "Недоступно. Спочатку налаштуйте Docker-хост.", + "DockerHostRequired": "Будь ласка, встановіть Docker-хост для цього монітора.", + "Browser Screenshot": "Скріншот браузера", + "Add a new expiry notification day": "Додати новий день сповіщення про закінчення терміну дії", + "setup a new monitor group": "створити нову групу моніторів", + "Add a domain": "Додати домен", + "Remote Browsers": "Віддалені браузери", + "Remote Browser": "Віддалений браузер", + "Add a Remote Browser": "Додати віддалений браузер", + "Remote Browser not found!": "Віддалений браузер не знайдено!", + "remoteBrowsersDescription": "Віддалені браузери - це альтернатива локальному запуску Chromium. Налаштуйте за допомогою сервісу на кшталт browserless.io або підключіть свій власний", + "remoteBrowserToggle": "За замовчуванням Chromium запускається всередині контейнера Uptime Kuma. Ви можете використовувати віддалений браузер, увімкнувши цей перемикач.", + "useRemoteBrowser": "Використовувати віддалений браузер", + "deleteRemoteBrowserMessage": "Ви дійсно хочете видалити цей віддалений браузер для всіх моніторів?", + "self-hosted container": "контейнер, що хоститься самостійно", + "Remove the expiry notification": "Видалити день сповіщення про закінчення терміну дії", + "Remove domain": "Видалити домен '{0}'", + "successKeyword": "Ключове слово успіху", + "successKeywordExplanation": "Ключове слово MQTT, яке вважатиметься успіхом", + "openModalTo": "відкрити модальне вікно для {0}", + "ntfyPriorityHelptextAllExceptDown": "З цим пріоритетом надсилаються всі події, окрім {0}-подій, які мають пріоритет {1}", + "settingUpDatabaseMSG": "Налаштування бази даних. Це може зайняти деякий час, будь ласка, будьте терплячі.", + "statusPageSpecialSlugDesc": "Спеціальний slug {0}: ця сторінка буде показана, якщо slug не надано", + "Search monitored sites": "Пошук сайтів, що відстежуються", + "ntfyPriorityHelptextAllEvents": "Усі події надсилаються з максимальним пріоритетом", + "What is a Remote Browser?": "Що таке віддалений браузер?", + "Your User ID": "Ваш ID користувача", + "Channel access token (Long-lived)": "Токен доступу до каналу (довготривалий)", + "documentationOf": "{0} Документація", + "wayToGetHeiiOnCallDetails": "Як отримати Trigger ID та API-ключі пояснюється в {documentation}", + "To Phone Number": "На номер телефону", + "gtxMessagingToHint": "Міжнародний формат, з \"+\" на початку ({e164}, {e212} або {e214})", + "gtxMessagingApiKeyHint": "Ви можете знайти свій API-ключ тут: API-ключ: Мої облікові записи маршрутизації > Показати інформацію про обліковий запис > Облікові дані API > REST API (v2.x)", + "From Phone Number / Transmission Path Originating Address (TPOA)": "З номера телефону / вихідної адреси маршруту передачі (TPOA)", + "gtxMessagingFromHint": "На мобільних телефонах ваші одержувачі бачать TPOA як відправника повідомлення. Допускається до 11 буквено-цифрових символів, короткий код, місцевий довгий код або міжнародні номери ({e164}, {e212} або {e214})", + "Originator type": "Тип відправника", + "Alphanumeric (recommended)": "Буквено-цифровий (рекомендовано)", + "Telephone number": "Номер телефону", + "Originator": "Відправник", + "cellsyntOriginator": "Відображається на мобільному телефоні одержувача як відправник повідомлення. Допустимі значення та функції залежать від параметра originatortype.", + "Destination": "Пункт призначення", + "callMeBotGet": "Тут ви можете згенерувати кінцеву точку для {0}, {1} і {2}. Майте на увазі, що ви можете бути обмежені у швидкості. Обмеження швидкості виглядає наступним чином: {3}", + "cellsyntOriginatortypeAlphanumeric": "Рядок буквено-цифровий (максимум 11 буквено-цифрових символів). Отримувачі не можуть відповісти на повідомлення.", + "cellsyntOriginatortypeNumeric": "Числове значення (максимум 15 цифр) з номером телефону в міжнародному форматі без 00 на початку (наприклад, британський номер 07920 110 000 має бути вказаний як 447920110000). Одержувачі можуть відповісти на повідомлення.", + "Allow Long SMS": "Дозволити довгі СМС", + "wayToGetWhapiUrlAndToken": "Можна отримати URL API та токен, зайдіть у бажаний канал з {0}", + "whapiRecipient": "Номер телефону / ID контакту / ID групи", + "API URL": "API URL", + "cellsyntSplitLongMessages": "Розбивати довгі повідомлення на 6 частин. 153 x 6 = 918 символів.", + "max 15 digits": "максимум 15 символів", + "wayToWriteWhapiRecipient": "Телефонний номер з міжнародним префіксом, але без плюсового знаку на початку ({0}), ID контакту ({1}) або ID групи ({2}).", + "cellsyntDestination": "Номер телефону одержувача в міжнародному форматі з 00 на початку, за яким слідує код країни, наприклад, 00447920110000 для британського номера 07920 110 000 (максимум 17 цифр). Максимум 25000 одержувачів, розділених комами, на один HTTP-запит.", + "max 11 alphanumeric characters": "максимум 11 буквено-цифрових символів", + "locally configured mail transfer agent": "локально налаштований агент пересилання пошти", + "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "Або введіть ім'я хоста сервера, до якого ви хочете підключитися, або {localhost}, якщо ви маєте намір використовувати {local_mta}", + "Don't mention people": "Не згадувати людей", + "Mentioning": "Згадування", + "Mention group": "Згадати {group}", + "senderSevenIO": "Номер або ім'я відправника", + "receiverSevenIO": "Номер одержувача", + "apiKeySevenIO": "API-ключ SevenIO", + "wayToGetSevenIOApiKey": "Відвідайте інформаційну панель у розділі app.seven.io > developer > api key > зелена кнопка додавання", + "receiverInfoSevenIO": "Якщо номер одержувача знаходиться не в Німеччині, ви повинні додати код країни перед номером (наприклад, для коду країни 1 з США використовуйте 117612121212 замість 017612121212)", + "Host URL": "URL-адреса хосту", + "threadForumPostID": "ID теми/повідомлення на форумі", + "whatHappensAtForumPost": "Створити нове повідомлення на форумі. Це НЕ призводить до публікації повідомлень в існуючих темах. Щоб написати повідомлення в існуючому дописі, використовуйте \"{option}\"", + "wayToGetDiscordThreadId": "Отримання id теми/допису на форумі подібне до отримання id каналу. Дізнайтеся більше про те, як отримати ідентифікатори {0}", + "Command": "Команда", + "mongodbCommandDescription": "Виконайте MongoDB-команду до бази даних. Для отримання інформації про доступні команди зверніться до {documentation}", + "Bitrix24 Webhook URL": "URL-адреса вебхука Бітрікс24", + "wayToGetBitrix24Webhook": "Ви можете створити вебхук, виконавши кроки за адресою {0}", + "bitrix24SupportUserID": "Введіть свій ID користувача в Бітрікс24. Дізнатися ID можна за посиланням, перейшовши в профіль користувача.", + "Select message type": "Вибрати тип повідомлення", + "Send to channel": "Надіслати в канал", + "Create new forum post": "Створити нове повідомлення на форумі", + "postToExistingThread": "Написати до існуючої теми/повідомлення на форумі", + "Refresh Interval": "Інтервал оновлення", + "Refresh Interval Description": "Сторінка стану буде робити повне оновлення сайту кожні {0} секунд", + "ignoreTLSErrorGeneral": "Ігнорувати помилку TLS/SSL для з'єднання", + "forumPostName": "Назва повідомлення на форумі", + "e.g. {discordThreadID}": "наприклад, {discordThreadID}", + "smspartnerPhoneNumber": "Телефонний номер(и)", + "smspartnerSenderNameInfo": "Має містити в межах 3..=11 звичайних символів", + "smspartnerSenderName": "Ім'я відправника SMS", + "smspartnerApiurl": "Ви можете знайти свій API-ключ у своїй інформаційній панелі за адресою {0}", + "smspartnerPhoneNumberHelptext": "Номер повинен бути в міжнародному форматі {0}, {1}. Кілька номерів повинні бути розділені символом {2}", + "threemaRecipient": "Одержувач", + "threemaRecipientType": "Тип одержувача", + "threemaRecipientTypeIdentity": "Threema-ID", + "threemaRecipientTypePhone": "Номер телефону", + "threemaRecipientTypePhoneFormat": "E.164, без + на початку", + "threemaRecipientTypeEmail": "Електронна адреса", + "threemaSenderIdentity": "ID шлюзу", + "threemaApiAuthenticationSecret": "Секрет ID шлюзу", + "wayToGetThreemaGateway": "Ви можете зареєструватися на Threema Gateway {0}.", + "threemaRecipientTypeIdentityFormat": "8 символів", + "threemaSenderIdentityFormat": "8 символів, зазвичай починається з *", + "threemaBasicModeInfo": "Примітка: Ця інтеграція використовує Threema Gateway у базовому режимі (шифрування на основі сервера). Більш детальну інформацію можна знайти {0}.", + "apiKeysDisabledMsg": "API-ключі вимкнено, оскільки автентифікація вимкнена.", + "jsonQueryDescription": "Розбір і вилучення конкретних даних з JSON-відповіді сервера за допомогою JSON-запиту або використання символу «$» для необробленої відповіді, якщо не очікується JSON. Результат порівнюється з очікуваним значенням у вигляді рядків. Дивіться {0} для отримання документації і використовуйте {1} для експериментів із запитами.", + "snmpCommunityStringHelptext": "Цей рядок слугує паролем для автентифікації та контролю доступу до пристроїв з підтримкою SNMP. Узгодьте його з конфігурацією вашого SNMP-пристрою.", + "snmpOIDHelptext": "Введіть OID для датчика або стану, який ви хочете моніторити. Якщо ви не впевнені щодо OID, скористайтеся інструментами керування мережею, як-от MIB-браузерами або програмним забезпеченням SNMP.", + "wayToGetOnesenderUrlandToken": "Ви можете отримати URL-адресу і токен, перейшовши на сайт Onesender. Більше інформації {0}", + "conditionValuePlaceholder": "Значення", + "not equals": "не дорівнює", + "not ends with": "не закінчується на", + "and": "і", + "Private Number": "Приватний номер", + "signl4Docs": "Ви можете знайти більше інформації про те, як налаштувати SIGNL4 і як отримати URL-адресу вебхука SIGNL4 в розділі {0}.", + "now": "зараз", + "time ago": "{0} тому", + "-year": "-рік", + "Json Query Expression": "Вираз запиту Json", + "cacheBusterParam": "Додати параметр {0}", + "cacheBusterParamDescription": "Випадково згенерований параметр для обходу кешування.", + "OID (Object Identifier)": "OID (ідентифікатор об'єкта)", + "Condition": "Умова", + "SNMP Version": "Версія SNMP", + "Please enter a valid OID.": "Будь ласка, введіть дійсний OID.", + "privateOnesenderDesc": "Переконайтеся, що номер телефону дійсний. Щоб надіслати повідомлення на приватний номер телефону, наприклад: 628123456789", + "groupOnesenderDesc": "Переконайтеся, що GroupID дійсний. Щоб надіслати повідомлення в Групу, наприклад: 628123456789-342345", + "Add Remote Browser": "Додати віддалений браузер", + "New Group": "Нова група", + "Group Name": "Назва групи", + "Group ID": "ID групи", + "OAuth2: Client Credentials": "OAuth2: Облікові дані клієнта", + "Authentication Method": "Метод автентифікації", + "Authorization Header": "Заголовок авторизації", + "OAuth Token URL": "URL-адреса токену OAuth", + "Community String": "Рядок спільноти", + "Host Onesender": "Хост Onesender", + "Token Onesender": "Токен Onesender", + "Recipient Type": "Тип отримувача", + "Form Data Body": "Тіло даних форми", + "Client ID": "ID клієнта", + "Client Secret": "Секрет клієнта", + "Go back to home page.": "Повернутися на головну сторінку.", + "No tags found.": "Тегів не знайдено.", + "Lost connection to the socket server.": "Втрачено з'єднання з сервером сокетів.", + "Cannot connect to the socket server.": "Не вдається з'єднатися з сервером сокетів.", + "Conditions": "Умови", + "conditionAdd": "Додати умову", + "conditionDelete": "Видалити умову", + "conditionAddGroup": "Додати групу", + "conditionDeleteGroup": "Видалити групу", + "OAuth Scope": "OAuth дозволи", + "Optional: Space separated list of scopes": "Необов'язково: Розділений пробілами список дозволів", + "SIGNL4": "SIGNL4", + "SIGNL4 Webhook URL": "URL-адреса вебхука SIGNL4", + "equals": "дорівнює", + "contains": "містить", + "not contains": "не містить", + "starts with": "починається з", + "not starts with": "не починається з", + "ends with": "закінчується на", + "less than": "менше, ніж", + "greater than": "більше, ніж", + "less than or equal to": "менше або дорівнює", + "greater than or equal to": "більше або дорівнює", + "record": "запис", + "shrinkDatabaseDescriptionSqlite": "Запускає команду {vacuum} для бази даних SQLite. Команда {auto_vacuum} вже увімкнена, але вона не дефрагментує базу даних і не перепаковує окремі сторінки бази даних так, як це робить команда {vacuum}." +} diff --git a/src/lang/zh-CN.json b/src/lang/zh-CN.json index 220c52b70..4091b8008 100644 --- a/src/lang/zh-CN.json +++ b/src/lang/zh-CN.json @@ -1,1057 +1,1057 @@ -{ - "languageName": "English", - "checkEverySecond": "检测频率 {0} 秒", - "retryCheckEverySecond": "重试间隔 {0} 秒", - "resendEveryXTimes": "每 {0} 次失败则重复发送一次", - "resendDisabled": "禁用重复发送", - "retriesDescription": "服务被标记为故障并发送通知之前的最大重试次数", - "ignoreTLSError": "忽略 HTTPS 站点的 TLS/SSL 错误", - "upsideDownModeDescription": "反转监控状态。如果服务可访问,则认为是故障。", - "maxRedirectDescription": "允许的最大重定向次数。设置为 0 以禁用重定向。", - "enableGRPCTls": "允许通过 TLS 连接发送 gRPC 请求", - "grpcMethodDescription": "方法名会转换为小驼峰格式,例如 sayHello、check 等等。", - "acceptedStatusCodesDescription": "选择被视为成功响应的状态码。", - "Maintenance": "维护", - "statusMaintenance": "维护", - "Schedule maintenance": "计划维护", - "Affected Monitors": "受影响的监控项", - "Pick Affected Monitors...": "选择受影响的监控项…", - "Start of maintenance": "维护开始", - "All Status Pages": "所有状态页面", - "Select status pages...": "选择状态页面…", - "recurringIntervalMessage": "每天一次 | 每 {0} 天一次", - "affectedMonitorsDescription": "选择受当前维护影响的监控项", - "affectedStatusPages": "在所选状态页面上显示此维护消息", - "atLeastOneMonitor": "至少选择一个受影响的监控项", - "passwordNotMatchMsg": "两次输入的密码不一致。", - "notificationDescription": "通知必须被分配给监控项才能正常工作。", - "keywordDescription": "在纯 HTML 或 JSON 响应中搜索关键字,区分大小写。", - "pauseDashboardHome": "暂停", - "deleteMonitorMsg": "确定要删除此监控项吗?", - "deleteMaintenanceMsg": "确定要删除此维护吗?", - "deleteNotificationMsg": "确定要为所有监控项删除此通知吗?", - "dnsPortDescription": "DNS 服务器端口,默认为 53,您可以在任何时候更改此端口。", - "resolverserverDescription": "默认服务器是 Cloudflare。您随时可以修改解析服务器。", - "rrtypeDescription": "选择要监控的资源记录类型", - "pauseMonitorMsg": "确定要暂停吗?", - "enableDefaultNotificationDescription": "新的监控项将默认启用此通知,您仍然为每个监控项单独禁用。", - "clearEventsMsg": "确定要删除此监控项的所有事件吗?", - "clearHeartbeatsMsg": "确定要删除此监控项的所有心跳状态吗?", - "confirmClearStatisticsMsg": "确定要删除所有统计信息吗?", - "importHandleDescription": "如果想跳过同名的监控项或消息通知,请选择“跳过已存在”。“覆盖”将删除所有现有的监控项和通知。", - "confirmImportMsg": "确定要导入备份吗?请确保已经选择了正确的导入选项。", - "twoFAVerifyLabel": "请输入令牌码以确认二次验证:", - "tokenValidSettingsMsg": "令牌码有效!您现在可以保存二次验证设置了。", - "confirmEnableTwoFAMsg": "确定要启用二次验证吗?", - "confirmDisableTwoFAMsg": "确定要禁用二次验证吗?", - "Settings": "设置", - "Dashboard": "仪表盘", - "New Update": "有新版本", - "Language": "语言", - "Appearance": "外观", - "Theme": "主题", - "General": "常规", - "Primary Base URL": "站点主 URL", - "Version": "版本", - "Check Update On GitHub": "检查 GitHub 上的更新", - "List": "列表", - "Add": "添加", - "Add New Monitor": "添加监控项", - "Quick Stats": "状态速览", - "Up": "正常", - "Down": "故障", - "Pending": "重试中", - "Unknown": "未知", - "Pause": "暂停", - "Name": "名称", - "Status": "状态", - "DateTime": "日期时间", - "Message": "消息", - "No important events": "暂无重要事件", - "Resume": "恢复", - "Edit": "编辑", - "Delete": "删除", - "Current": "当前", - "Uptime": "在线时间", - "Cert Exp.": "证书有效期", - "day": "天", - "-day": "天", - "hour": "小时", - "-hour": "小时", - "Response": "响应", - "Ping": "Ping", - "Monitor Type": "监控类型", - "Keyword": "关键字", - "Friendly Name": "显示名称", - "URL": "URL", - "Hostname": "主机名", - "Port": "端口", - "Heartbeat Interval": "心跳间隔", - "Retries": "重试次数", - "Heartbeat Retry Interval": "心跳重试间隔", - "Resend Notification if Down X times consecutively": "连续失败时重复发送通知的间隔次数", - "Advanced": "高级", - "Upside Down Mode": "反转模式", - "Max. Redirects": "最大重定向次数", - "Accepted Status Codes": "有效状态码", - "Push URL": "推送 URL", - "needPushEvery": "您需要每 {0} 秒调用一次该 URL。", - "pushOptionalParams": "可选参数:{0}", - "Save": "保存", - "Notifications": "通知", - "Not available, please setup.": "暂不可用,请先设置。", - "Setup Notification": "设置通知", - "Light": "明亮", - "Dark": "黑暗", - "Auto": "自动", - "Theme - Heartbeat Bar": "主题 - 心跳栏", - "Normal": "正常", - "Bottom": "靠下", - "None": "不显示", - "Timezone": "时区", - "Search Engine Visibility": "搜索引擎可见性", - "Allow indexing": "允许索引", - "Discourage search engines from indexing site": "阻止搜索引擎索引网站", - "Change Password": "修改密码", - "Current Password": "当前密码", - "New Password": "新密码", - "Repeat New Password": "重复新密码", - "Update Password": "更新密码", - "Disable Auth": "禁用登录验证", - "Enable Auth": "启用登录验证", - "disableauth.message1": "是否确定 {disableAuth}?", - "disable authentication": "取消登录验证", - "disableauth.message2": "这是为 {intendThirdPartyAuth} (如 Cloudflare Access、Authelia 或其他认证方式)的用户提供的功能。", - "where you intend to implement third-party authentication": "您打算在哪里实施第三方身份验证", - "Please use this option carefully!": "请谨慎使用!", - "Logout": "退出", - "Leave": "离开", - "I understand, please disable": "我已了解,继续禁用", - "Confirm": "确认", - "Yes": "是", - "No": "否", - "Username": "用户名", - "Password": "密码", - "Remember me": "记住我", - "Login": "登录", - "No Monitors, please": "还没有监控项,", - "add one": "点击添加", - "Notification Type": "通知类型", - "Email": "邮件", - "Test": "测试", - "Certificate Info": "证书信息", - "Resolver Server": "解析服务器", - "Resource Record Type": "资源记录类型", - "Last Result": "上次结果", - "Create your admin account": "创建管理员账户", - "Repeat Password": "重复密码", - "Import Backup": "导入备份", - "Export Backup": "导出备份", - "Export": "导出", - "Import": "导入", - "respTime": "响应时间(毫秒)", - "notAvailableShort": "N/A", - "Default enabled": "默认开启", - "Apply on all existing monitors": "应用到所有现有监控项", - "Create": "创建", - "Clear Data": "清除数据", - "Events": "事件", - "Heartbeats": "心跳", - "Auto Get": "自动获取", - "backupDescription": "您可以将所有监控项和通知备份到 JSON 文件。", - "backupDescription2": "注意: 不包括历史状态和事件数据。", - "backupDescription3": "导出的文件可能包含敏感信息,例如通知的令牌,请小心存放。", - "alertNoFile": "请选择要导入的文件。", - "alertWrongFileType": "请选择一个 JSON 文件。", - "Clear all statistics": "清除所有统计数据", - "Skip existing": "跳过已存在", - "Overwrite": "覆盖", - "Options": "选项", - "Keep both": "全部保留", - "Verify Token": "验证令牌", - "Setup 2FA": "设置二次验证", - "Enable 2FA": "启用二次验证", - "Disable 2FA": "禁用二次验证", - "2FA Settings": "二次验证设置", - "Two Factor Authentication": "二次验证", - "Active": "激活", - "Inactive": "停用", - "Token": "令牌", - "Show URI": "显示 URI", - "Tags": "标签", - "Add New below or Select...": "在下面添加或选择…", - "Tag with this name already exist.": "相同名称的标签已存在。", - "Tag with this value already exist.": "相同内容的标签已存在。", - "color": "颜色", - "value (optional)": "值(可选)", - "Gray": "灰色", - "Red": "红色", - "Orange": "橙色", - "Green": "绿色", - "Blue": "蓝色", - "Indigo": "靛蓝", - "Purple": "紫色", - "Pink": "粉色", - "Search...": "搜索…", - "Avg. Ping": "平均 Ping", - "Avg. Response": "平均响应", - "Entry Page": "入口页面", - "statusPageNothing": "这里什么也没有,请添加一个分组或一个监控项。", - "No Services": "无服务", - "All Systems Operational": "所有服务运行正常", - "Partially Degraded Service": "部分服务出现故障", - "Degraded Service": "全部服务出现故障", - "Add Group": "添加分组", - "Add a monitor": "添加监控项", - "Edit Status Page": "编辑状态页面", - "Go to Dashboard": "前往仪表盘", - "Status Page": "状态页面", - "Status Pages": "状态页面", - "defaultNotificationName": "{notification} 通知({number})", - "here": "这里", - "Required": "必填", - "telegram": "Telegram", - "ZohoCliq": "ZohoCliq", - "Bot Token": "机器人令牌", - "wayToGetTelegramToken": "您可以从 {0} 获取 Token。", - "Chat ID": "Chat ID", - "supportTelegramChatID": "支持对话/群组/频道的 Chat ID", - "wayToGetTelegramChatID": "您可以发送一条消息给您的机器人,然后访问此链接来查看 chat_id:", - "YOUR BOT TOKEN HERE": "这里替换成您的 BOT TOKEN", - "chatIDNotFound": "未找到 Chat ID,请先给您的机器人发送一条消息", - "webhook": "Webhook", - "Post URL": "Post URL", - "Content Type": "Content Type", - "webhookJsonDesc": "{0} 适合现代的 HTTP 服务器,例如 Express.js", - "webhookFormDataDesc": "{multipart} 适合 PHP,其中 JSON 需要使用 {decodeFunction} 解码", - "webhookAdditionalHeadersTitle": "额外 Header", - "webhookAdditionalHeadersDesc": "设置 webhook 请求的额外 Header。每一个 Header 应被定义为一对 JSON 键值对。", - "smtp": "电子邮件(SMTP)", - "secureOptionNone": "无 / STARTTLS(常用端口 25、587)", - "secureOptionTLS": "TLS(常用端口 465)", - "Ignore TLS Error": "忽略 TLS 错误", - "From Email": "发信人", - "emailCustomSubject": "邮件主题", - "To Email": "收信人", - "smtpCC": "抄送", - "smtpBCC": "密送", - "discord": "Discord", - "Discord Webhook URL": "Discord Webhook 网址", - "wayToGetDiscordURL": "可在服务器设置 -> 整合 -> Webhook -> 创建 Webhook 中获取", - "Bot Display Name": "机器人显示名称", - "Prefix Custom Message": "自定义消息前缀", - "Hello @everyone is...": "{'@'}everyone,……", - "teams": "Microsoft Teams", - "Webhook URL": "Webhook 网址", - "wayToGetTeamsURL": "您可以在{0}了解如何获取 Webhook URL。", - "wayToGetZohoCliqURL": "您可以在{0}了解如何创建 Webhook URL。", - "signal": "Signal", - "Number": "号码", - "Recipients": "收件人", - "needSignalAPI": "您需要有一个支持 REST API 的 Signal 客户端。", - "wayToCheckSignalURL": "您可以通过下面的 URL 了解如何设置:", - "signalImportant": "重要:您不能混合设定收件人的分组和号码!", - "gotify": "Gotify", - "Application Token": "应用程序令牌", - "Server URL": "服务器 URL", - "Priority": "优先级", - "slack": "Slack", - "Icon Emoji": "Emoji 图标", - "Channel Name": "频道名称", - "Uptime Kuma URL": "Uptime Kuma URL", - "aboutWebhooks": "关于 Webhook 的更多信息:{0}", - "aboutChannelName": "如果您想绕过 Webhook 频道,请在 {0} 字段输入所需的频道名称。例如:#other-channel", - "aboutKumaURL": "如果保留 Uptime Kuma URL 为空,将会默认指向项目的 GitHub 页面。", - "emojiCheatSheet": "Emoji 速查:{0}", - "rocket.chat": "Rocket.Chat", - "pushover": "Pushover", - "pushy": "Pushy", - "PushByTechulus": "使用 Techulus 推送", - "octopush": "Octopush", - "promosms": "PromoSMS", - "clicksendsms": "ClickSend SMS", - "lunasea": "LunaSea", - "apprise": "Apprise (支持 50+ 种通知服务)", - "GoogleChat": "Google Chat(仅 Google Workspace)", - "pushbullet": "Pushbullet", - "Kook": "Kook", - "wayToGetKookBotToken": "在 {0} 创建应用并获取机器人 Token", - "wayToGetKookGuildID": "在 Kook 设置中打开“开发者模式”,然后右键点击频道可获取其 ID", - "Guild ID": "频道 ID", - "line": "Line Messenger", - "mattermost": "Mattermost", - "User Key": "用户密钥", - "Device": "设备", - "Message Title": "消息标题", - "Notification Sound": "通知铃声", - "More info on:": "更多信息:{0}", - "pushoverDesc1": "紧急优先级(2)会在一小时内每隔 30 秒重试一次。", - "pushoverDesc2": "如果您想发送通知给不同的设备,请填写“设备”字段。", - "SMS Type": "短信类型", - "octopushTypePremium": "Premium(快 - 推荐用于警报)", - "octopushTypeLowCost": "Low Cost(慢 - 有时会被运营商屏蔽)", - "checkPrice": "查看 {0} 的价格:", - "apiCredentials": "API Credentials", - "octopushLegacyHint": "您是否在使用旧版本的 Octopush(2011-2020)?", - "Check octopush prices": "查看 Octopush 的价格 {0}。", - "octopushPhoneNumber": "电话号码(国际通用格式,例如:+33612345678) ", - "octopushSMSSender": "短信发送名称:3-11 位大小写字母、数字和空格(a-zA-Z0-9)", - "LunaSea Device ID": "LunaSea 设备 ID", - "Apprise URL": "Apprise 网址", - "Example:": "例如:{0}", - "Read more:": "了解更多:{0}", - "Status:": "状态:{0}", - "Read more": "了解更多", - "appriseInstalled": "Apprise 已安装。", - "appriseNotInstalled": "Apprise 未安装。{0}", - "Access Token": "访问令牌", - "Channel access token": "频道 Access Token", - "Line Developers Console": "Line 开发者控制台", - "lineDevConsoleTo": "Line 开发者控制台 - {0}", - "Basic Settings": "基本设置", - "User ID": "用户 ID", - "Messaging API": "消息 API", - "wayToGetLineChannelToken": "首先访问 {0},创建一个提供者和频道(Messaging API),然后您就可以从上面提到的菜单获取频道的 Access Token 和用户 ID。", - "Icon URL": "图标 URL", - "aboutIconURL": "您可以在“图标 URL”中提供一个图片链接来覆盖默认的资料图片。如果设置了 Emoji 图标则此字段会被忽略。", - "aboutMattermostChannelName": "您可以覆盖 Webhook 发送消息的默认频道,只需在“频道名称”字段中输入您想要的频道名。这需要在 Mattermost 的 Webhook 设置中启用。例如:#other-channel", - "matrix": "Matrix", - "promosmsTypeEco": "SMS ECO - 便宜但是慢,并且容易超负荷。仅限波兰地区的收信人。", - "promosmsTypeFlash": "SMS FLASH - 消息会自动显示在收信人设备上。仅限波兰地区的收信人。", - "promosmsTypeFull": "SMS FULL - 高级短信,您可以使用您自己的发信人名称(需要先注册)。对于警报来说更可靠。", - "promosmsTypeSpeed": "SMS SPEED - 最高优先级。非常快速可靠,但更贵(大约两倍 SMS FULL 的价格)。", - "promosmsPhoneNumber": "电话号码(波兰地区收信人可以不填区号)", - "promosmsSMSSender": "短信发信人名称:已注册的名称或以下默认值之一:InfoSMS、SMS Info、MaxSMS、INFO、SMS", - "Feishu": "飞书", - "Feishu WebHookUrl": "飞书 WebHook URL", - "matrixHomeserverURL": "服务器 URL(包含 http(s):// 和可选的端口号)", - "Internal Room Id": "内部房间 ID", - "matrixDesc1": "您可以在 Matrix 客户端房间设置的高级选项内找到内部房间 ID。格式类似于 !QMdRCpUIfLwsfjxye6:home.server。", - "matrixDesc2": "请不要使用您自己的 Access Token,这将开放您所有的账户权限和您已加入房间的权限。我们强烈建议您创建一个新用户并邀请它至您接收通知的房间中。您可以运行以下命令来获取 Access Token:{0}", - "Method": "方法", - "Body": "请求体", - "Headers": "请求头", - "PushUrl": "推送 URL", - "HeadersInvalidFormat": "请求头不是有效的 JSON: ", - "BodyInvalidFormat": "请求体不是有效的 JSON: ", - "Monitor History": "监控历史", - "clearDataOlderThan": "保留监控历史数据 {0} 天。", - "PasswordsDoNotMatch": "密码不匹配。", - "records": "记录", - "One record": "一条记录", - "steamApiKeyDescription": "要监控 Steam 游戏服务器,您需要 Steam Web-API 密钥。您可以在这里注册您的 API 密钥: ", - "Current User": "当前用户", - "topic": "Topic", - "topicExplanation": "要监控的 MQTT Topic", - "successMessage": "成功消息", - "successMessageExplanation": "视为成功的 MQTT 消息", - "recent": "最近", - "Done": "完成", - "Info": "信息", - "Security": "安全性", - "Steam API Key": "Steam API 密钥", - "Shrink Database": "压缩数据库", - "Pick a RR-Type...": "选择资源记录类型…", - "Pick Accepted Status Codes...": "选择有效的状态码…", - "Default": "默认", - "HTTP Options": "HTTP 选项", - "Create Incident": "创建事件", - "Title": "标题", - "Content": "内容", - "Style": "类型", - "info": "信息", - "warning": "警告", - "danger": "危险", - "error": "错误", - "critical": "关键", - "primary": "主要", - "light": "明亮", - "dark": "黑暗", - "Post": "发布", - "Please input title and content": "请输入标题和内容", - "Created": "创建时间", - "Last Updated": "更新时间", - "Unpin": "取消钉选", - "Switch to Light Theme": "切换到浅色主题", - "Switch to Dark Theme": "切换到深色主题", - "Show Tags": "显示标签", - "Hide Tags": "隐藏标签", - "Description": "描述", - "No monitors available.": "没有可用的监控项。", - "Add one": "添加一个", - "No Monitors": "没有监控项", - "Untitled Group": "无标题分组", - "Services": "服务", - "Discard": "放弃", - "Cancel": "取消", - "Powered by": "本站使用", - "serwersms": "SerwerSMS.pl", - "serwersmsAPIUser": "API 用户名(包括 webapi_ 前缀)", - "serwersmsAPIPassword": "API 密码", - "serwersmsPhoneNumber": "电话号码", - "serwersmsSenderName": "SMS 发信人名称(需要在客户中心注册)", - "smseagle": "SMSEagle", - "smseagleTo": "电话号码", - "smseagleGroup": "通讯录群组名", - "smseagleContact": "通讯录联系人", - "smseagleRecipientType": "收信人类型", - "smseagleRecipient": "收信人(多个需用半角逗号分隔)", - "smseagleToken": "API 访问令牌", - "smseagleUrl": "您的 SMSEagle 设备 URL", - "smseagleEncoding": "以 Unicode 发送", - "smseaglePriority": "消息优先级(0-9,默认为 0)", - "stackfield": "Stackfield", - "Customize": "自定义", - "Custom Footer": "自定义底部", - "Custom CSS": "自定义 CSS", - "smtpDkimSettings": "DKIM 设置", - "smtpDkimDesc": "请访问 Nodemailer DKIM {0} 了解配置方法。", - "documentation": "文档", - "smtpDkimDomain": "域名", - "smtpDkimKeySelector": "前缀选择器", - "smtpDkimPrivateKey": "密钥", - "smtpDkimHashAlgo": "哈希算法(可选)", - "smtpDkimheaderFieldNames": "包含在哈希计算对象内的 Header 列表(可选)", - "smtpDkimskipFields": "不包含在哈希计算对象内的 Header 列表(可选)", - "wayToGetPagerDutyKey": "您可以在 Service -> Service Directory -> (选择一个 Service) -> Integrations -> Add integration 页面中搜索“Events API V2”以获取此 Integration Key,更多信息请看{0}", - "wayToGetFlashDutyKey": "您可以进入 协作空间 -> (选择一个 协作空间) -> 集成数据 -> 新增一个集成 页面,添加“Uptime Kuma”集成获得一个推送地址,复制地址中的 Integration Key,更多信息前往{0}", - "Integration Key": "集成密钥", - "Integration URL": "集成网址", - "Auto resolve or acknowledged": "自动标记为已解决或已读", - "do nothing": "不做任何操作", - "auto acknowledged": "自动标记为已读", - "auto resolve": "自动标记为已解决", - "gorush": "Gorush", - "alerta": "Alerta", - "alertaApiEndpoint": "API 接入点", - "alertaEnvironment": "环境参数", - "alertaApiKey": "API 密钥", - "alertaAlertState": "报警时的严重性", - "alertaRecoverState": "恢复后的严重性", - "deleteStatusPageMsg": "您确认要删除此状态页吗?", - "Proxies": "代理", - "default": "默认", - "enabled": "启用", - "setAsDefault": "设为默认", - "deleteProxyMsg": "您确认要在所有监控项中删除此代理吗?", - "proxyDescription": "代理必须配置到至少一个监控项后才会工作。", - "enableProxyDescription": "此代理必须启用才能对监控项的网络请求起作用。您可以通过修改激活状态,临时在所有监控项中禁用此代理。", - "setAsDefaultProxyDescription": "此代理会对新创建的监控项默认激活,您仍可以在监控项配置中单独禁用此代理。", - "Certificate Chain": "证书链", - "Valid": "有效", - "Invalid": "无效", - "AccessKeyId": "AccessKey ID", - "SecretAccessKey": "AccessKey 密码", - "PhoneNumbers": "电话号码", - "TemplateCode": "TemplateCode", - "SignName": "SignName", - "Sms template must contain parameters: ": "短信模板必须包含以下变量: ", - "Bark Endpoint": "Bark 接入点", - "Bark Group": "Bark 群组", - "Bark Sound": "Bark 铃声", - "WebHookUrl": "钉钉自定义机器人 Webhook 地址", - "SecretKey": "钉钉自定义机器人加签密钥", - "For safety, must use secret key": "出于安全考虑,必须使用加签密钥", - "Device Token": "Apple Device Token", - "Platform": "平台", - "Huawei": "华为", - "High": "高", - "Retry": "重试次数", - "Topic": "Gorush Topic", - "WeCom": "企业微信群机器人", - "WeCom Bot Key": "企业微信群机器人 Key", - "Setup Proxy": "设置代理", - "Proxy Protocol": "代理协议", - "Proxy Server": "代理服务器", - "Server Address": "服务器地址", - "Proxy server has authentication": "代理服务器启用了身份验证功能", - "User": "用户名", - "Installed": "已安装", - "Not installed": "未安装", - "Running": "运行中", - "Not running": "未运行", - "Remove Token": "移除 Token", - "Start": "启动", - "Stop": "停止", - "Uptime Kuma": "Uptime Kuma", - "Add New Status Page": "添加新的状态页", - "Slug": "路径", - "Accept characters:": "可接受的字符:", - "startOrEndWithOnly": "开头和结尾必须为 {0}", - "No consecutive dashes": "不能有连续的破折号", - "Next": "下一步", - "The slug is already taken. Please choose another slug.": "该路径已被使用。请选择其他路径。", - "No Proxy": "无代理", - "Authentication": "验证", - "HTTP Basic Auth": "HTTP 基础身份验证", - "New Status Page": "新的状态页", - "Page Not Found": "未找到该页面", - "Reverse Proxy": "反向代理", - "Backup": "备份", - "About": "关于", - "wayToGetCloudflaredURL": "(可从 {0} 下载 cloudflared)", - "cloudflareWebsite": "Cloudflare 网站", - "Message:": "信息:", - "Don't know how to get the token? Please read the guide:": "不知道如何获取 Token?请阅读指南:", - "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "如果您正在通过 Cloudflare Tunnel 访问网站,则停止可能会导致当前连接断开。您确定要停止吗?请输入密码以确认。", - "HTTP Headers": "HTTP 头", - "Trust Proxy": "可信的代理类字段", - "Other Software": "其他软件", - "For example: nginx, Apache and Traefik.": "例如:nginx、Apache 和 Traefik。", - "Please read": "请阅读", - "Subject:": "颁发给:", - "Valid To:": "有效期至:", - "Days Remaining:": "剩余有效天数:", - "Issuer:": "颁发者:", - "Fingerprint:": "指纹:", - "No status pages": "无状态页", - "Domain Name Expiry Notification": "域名到期时通知", - "Proxy": "代理", - "Date Created": "创建于", - "HomeAssistant": "Home Assistant", - "onebotHttpAddress": "OneBot HTTP 地址", - "onebotMessageType": "OneBot 消息类型", - "onebotGroupMessage": "群聊", - "onebotPrivateMessage": "私聊", - "onebotUserOrGroupId": "群组/用户 ID", - "onebotSafetyTips": "出于安全原因,请务必设置 AccessToken", - "PushDeer Key": "PushDeer 密钥", - "Footer Text": "底部自定义文本", - "Show Powered By": "显示 Powered By", - "Domain Names": "域名", - "signedInDisp": "当前用户: {0}", - "signedInDispDisabled": "已禁用身份验证。", - "RadiusSecret": "Radius 共享机密", - "RadiusSecretDescription": "客户端和服务器之间共享的密钥", - "RadiusCalledStationId": "NAS 网络访问服务器号码(Called Station Id)", - "RadiusCalledStationIdDescription": "所访问的服务器的标识", - "RadiusCallingStationId": "呼叫方号码(Calling Station Id)", - "RadiusCallingStationIdDescription": "发出请求的设备的标识", - "Certificate Expiry Notification": "证书到期时通知", - "API Username": "API 用户名", - "API Key": "API 密钥", - "Recipient Number": "收件人手机号码", - "From Name/Number": "发件人名称/手机号码", - "Leave blank to use a shared sender number.": "留空以使用平台共享的发件人手机号码。", - "Octopush API Version": "Octopush API 版本", - "Legacy Octopush-DM": "旧版本 Octopush-DM", - "endpoint": "接入点", - "octopushAPIKey": "控制台 HTTP API credentials 里的 \"API key\"", - "octopushLogin": "控制台 HTTP API credentials 里的 \"Login\"", - "promosmsLogin": "API 登录名", - "promosmsPassword": "API 密码", - "pushoversounds pushover": "Pushover(默认)", - "pushoversounds bike": "自行车", - "pushoversounds bugle": "军号", - "pushoversounds cashregister": "Cash Register", - "pushoversounds classical": "Classical", - "pushoversounds cosmic": "宇宙", - "pushoversounds falling": "Falling", - "pushoversounds gamelan": "Gamelan", - "pushoversounds incoming": "Incoming", - "pushoversounds intermission": "Intermission", - "pushoversounds magic": "Magic", - "pushoversounds mechanical": "Mechanical", - "pushoversounds pianobar": "Piano Bar", - "pushoversounds siren": "Siren", - "pushoversounds spacealarm": "Space Alarm", - "pushoversounds tugboat": "汽笛", - "pushoversounds alien": "Alien Alarm(长铃声)", - "pushoversounds climb": "Climb(长铃声)", - "pushoversounds persistent": "Persistent(长铃声)", - "pushoversounds echo": "Pushover Echo(长铃声)", - "pushoversounds updown": "Up Down(长铃声)", - "pushoversounds vibrate": "仅震动", - "pushoversounds none": "无(静音)", - "pushyAPIKey": "API 密钥", - "pushyToken": "设备 Token", - "Show update if available": "有更新时通知", - "Also check beta release": "一并检查 Beta 版更新", - "Using a Reverse Proxy?": "正在使用反向代理?", - "Check how to config it for WebSocket": "查看如何将反向代理与 WebSocket 一起使用", - "Steam Game Server": "Steam 游戏服务器", - "Most likely causes:": "最可能的原因:", - "The resource is no longer available.": "您所请求的资源已不再可用。", - "There might be a typing error in the address.": "您输入的地址可能有误。", - "What you can try:": "您可以尝试以下操作:", - "Retype the address.": "重新输入地址。", - "Go back to the previous page.": "返回到上一页面。", - "Coming Soon": "即将推出", - "wayToGetClickSendSMSToken": "您可以在{0}获取 API Username 和 API Key。", - "Connection String": "连接字符串", - "Query": "查询语句", - "settingsCertificateExpiry": "TLS 证书过期通知", - "certificationExpiryDescription": "HTTPS 监控项发现被监控目标的 TLS 证书剩余有效期少于以下天数时将发出通知:", - "Setup Docker Host": "配置 Docker 宿主信息", - "Connection Type": "连接方式", - "Docker Daemon": "Docker 守护进程", - "deleteDockerHostMsg": "您确定要为所有监控项删除此 Docker 宿主设置吗?", - "socket": "Socket", - "tcp": "TCP / HTTP", - "Docker Container": "Docker 容器", - "Container Name / ID": "容器名称 / ID", - "Docker Host": "Docker 宿主", - "Docker Hosts": "Docker 宿主", - "ntfy Topic": "ntfy 主题", - "Domain": "域名", - "Workstation": "工作站", - "disableCloudflaredNoAuthMsg": "您现在正处于 No Auth 模式,无需输入密码。", - "trustProxyDescription": "信任 'X-Forwarded-*' 头。如果您的 Uptime Kuma 是通过 Nginx 或 Apache 等反代服务对外提供访问的话,则您应当启用本功能以获取正确的客户端 IP。", - "wayToGetLineNotifyToken": "您可以在 {0} 获取 Access token", - "Examples": "例如", - "Home Assistant URL": "Home Assistant 地址", - "Long-Lived Access Token": "长期访问令牌", - "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "长期访问令牌可通过点击左下角您的用户名,滚动到页面底部并点击 Create Token 按钮获取。 ", - "Notification Service": "Notification Service", - "default: notify all devices": "默认:通知所有设备", - "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "通知服务的列表可在 Home Assistant 中的 Developer Tools > Services 通过搜索您的设备或手机的名称来获得。", - "Automations can optionally be triggered in Home Assistant:": "可以在 Home Assistant 使用下列模板设置自动化操作的触发条件:", - "Trigger type:": "触发类型:", - "Event type:": "事件类型:", - "Event data:": "事件数据:", - "Then choose an action, for example switch the scene to where an RGB light is red.": "然后您可以选择关联操作,例如切换到 RGB 灯发出红光的场景。", - "Frontend Version": "前端版本", - "Frontend Version do not match backend version!": "前端版本与后端版本不匹配!", - "Base URL": "API 基础地址", - "goAlertInfo": "GoAlert 是一个用于呼叫调度、自动汇报和通知(如 SMS 或语音呼叫)的开源应用程序。在正确的时间以正确的方式自动让正确的人参与!{0}", - "goAlertIntegrationKeyInfo": "使用形如 aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 的通用 API 集成密钥,通常是复制来的链接中的 token 参数值。", - "goAlert": "GoAlert", - "backupOutdatedWarning": "已弃用:由于大量新功能的加入,以及备份功能没有时时维护,现在备份功能已经无法生成完整的备份和恢复完整的设置。", - "backupRecommend": "请改为直接备份 docker 卷或者数据文件夹(./data/)。", - "Optional": "可选的", - "squadcast": "Squadcast", - "SendKey": "SendKey", - "SMSManager API Docs": "SMSManager API 文档 ", - "Gateway Type": "网关类型", - "SMSManager": "SMSManager", - "You can divide numbers with": "可用的数字分隔符包括", - "or": "或", - "recurringInterval": "时间间隔", - "Recurring": "重复", - "strategyManual": "手动启用/禁用", - "warningTimezone": "使用服务器时区", - "weekdayShortMon": "周一", - "weekdayShortTue": "周二", - "weekdayShortWed": "周三", - "weekdayShortThu": "周四", - "weekdayShortFri": "周五", - "weekdayShortSat": "周六", - "weekdayShortSun": "周日", - "dayOfWeek": "每周计划", - "dayOfMonth": "每月计划", - "lastDay": "结束日", - "lastDay1": "每月最后一天", - "lastDay2": "每月倒数第二天", - "lastDay3": "每月倒数第三天", - "lastDay4": "每月倒数第四天", - "No Maintenance": "无维护计划", - "pauseMaintenanceMsg": "确定要暂停吗?", - "maintenanceStatus-under-maintenance": "正在维护", - "maintenanceStatus-inactive": "未启用", - "maintenanceStatus-scheduled": "已计划", - "maintenanceStatus-ended": "已结束", - "maintenanceStatus-unknown": "未知", - "Display Timezone": "显示时区", - "Server Timezone": "服务器时区", - "statusPageMaintenanceEndDate": "结束时间", - "IconUrl": "图标 URL", - "Enable DNS Cache": "(已弃用)为 HTTP(s) 监控项启用 DNS 缓存", - "Enable": "启用", - "Disable": "禁用", - "dnsCacheDescription": "可能无法在某些 IPv6 环境工作,如果遇到问题请禁用。", - "Single Maintenance Window": "单一时间窗口", - "Maintenance Time Window of a Day": "每日维护时间窗口", - "Effective Date Range": "生效日期范围(可选)", - "Schedule Maintenance": "计划维护", - "Date and Time": "日期时间", - "DateTime Range": "日期时间范围", - "Strategy": "策略", - "Free Mobile User Identifier": "Free Mobile 用户 ID", - "Free Mobile API Key": "Free Mobile API 密钥", - "Enable TLS": "启用 TLS", - "Proto Service Name": "Proto 服务名称", - "Proto Method": "Proto 方法", - "Proto Content": "Proto 内容", - "Economy": "经济", - "Lowcost": "低价", - "high": "高价", - "General Monitor Type": "常规监控类型", - "Passive Monitor Type": "被动监控类型", - "Specific Monitor Type": "特殊监控类型", - "dataRetentionTimeError": "保留期必须为0或更大", - "Monitor": "监控项", - "Custom": "自定义", - "promosmsAllowLongSMS": "允许长的短信", - "confirmDeleteTagMsg": "您确定要删除这个标签?与此标签关联的监控项不会被删除。", - "infiniteRetention": "设为0表示无限保留期。", - "Help": "帮助", - "Game": "游戏", - "Packet Size": "数据包大小", - "loadingError": "无法获取数据,请稍后重试。", - "plugin": "插件 | 插件", - "install": "安装", - "installing": "正在安装", - "uninstall": "卸载", - "uninstalling": "正在卸载", - "confirmUninstallPlugin": "您确定要卸载此插件吗?", - "Custom Monitor Type": "自定义监控类型", - "markdownSupported": "支持 Markdown 语法", - "Google Analytics ID": "Google Analytics(分析)ID", - "Learn More": "了解更多", - "Edit Tag": "编辑标签", - "telegramMessageThreadID": "(可选)话题 ID", - "telegramMessageThreadIDDescription": "可选的唯一标识符,用以向该标识符对应的话题发送消息,仅限启用了话题功能的超级群组可用", - "notificationRegional": "地区性通知平台", - "telegramSendSilently": "静默发送", - "Body Encoding": "请求体编码", - "telegramSendSilentlyDescription": "静默地发送消息。消息发布后用户会收到无声通知。", - "telegramProtectContent": "阻止转发/保存", - "telegramProtectContentDescription": "如果启用,Telegram 中的机器人消息将受到保护,不会被转发和保存。", - "Clone Monitor": "克隆监控项", - "Clone": "克隆", - "cloneOf": "{0} 的克隆", - "Expiry": "过期", - "Expiry date": "过期时间", - "Continue": "继续", - "Add Another": "添加另一个", - "Add API Key": "添加 API 密钥", - "No API Keys": "没有 API 密钥", - "apiKey-active": "有效", - "apiKey-expired": "已过期", - "Expires": "过期时间", - "apiKey-inactive": "已禁用", - "disableAPIKeyMsg": "您确定要禁用这个 API 密钥?", - "deleteAPIKeyMsg": "您确定要删除这个 API 密钥?", - "Generate": "生成", - "API Keys": "API 密钥", - "Don't expire": "从不过期", - "Key Added": "API 密钥已生成", - "apiKeyAddedMsg": "您的 API 密钥已生成。此页只会显示一次,请妥当保存。", - "pagertreeUrgency": "紧急程度", - "pagertreeLow": "低", - "pagertreeCritical": "严重", - "pagertreeIntegrationUrl": "集成 URL 地址", - "pagertreeSilent": "静默", - "pagertreeMedium": "中", - "pagertreeHigh": "高", - "pagertreeResolve": "自动解除", - "pagertreeDoNothing": "什么都不做", - "wayToGetPagerTreeIntegrationURL": "在 PagerTree 中创建 Uptime Kuma 集成后,复制端点 URL 到此处。在 {0} 查看详情", - "Add New Tag": "添加新标签", - "lunaseaDeviceID": "设备 ID", - "lunaseaTarget": "目标", - "lunaseaUserID": "用户 ID", - "statusPageRefreshIn": "将于 {0} 后刷新", - "twilioAccountSID": "账户 SID", - "twilioAuthToken": "鉴权 Token / API Key Secret", - "twilioFromNumber": "发信号码", - "twilioToNumber": "收信号码", - "sameAsServerTimezone": "使用服务器时区", - "startDateTime": "开始日期/时间", - "invalidCronExpression": "无效的 Cron 表达式:{0}", - "endDateTime": "结束日期/时间", - "cronExpression": "Cron 表达式", - "cronSchedule": "计划: ", - "ntfyAuthenticationMethod": "鉴权方式", - "ntfyUsernameAndPassword": "用户名和密码", - "pushoverMessageTtl": "消息存活时间(秒)", - "Monitor Setting": "{0} 监控项设置", - "Badge Color": "徽章内容颜色", - "Badge Suffix": "徽章内容后缀", - "Badge Prefix": "徽章内容前缀", - "Badge Label": "徽章标签", - "Badge Duration": "徽章显示时段(最后 x 小时)", - "Badge Type": "徽章类型", - "Badge Generator": "{0} 徽章生成器", - "Open Badge Generator": "打开徽章生成器", - "Badge Style": "徽章样式", - "Badge Down Days": "故障状态所需剩余天数", - "Badge Warn Days": "徽章预警天数", - "Badge Warn Color": "警告状态下徽章颜色", - "Badge Maintenance Color": "维护状态下徽章颜色", - "Badge Down Color": "故障状态下徽章颜色", - "Badge Up Color": "正常状态下徽章颜色", - "Badge Label Suffix": "徽章标签后缀", - "Badge URL": "徽章网址", - "Badge value (For Testing only.)": "徽章内容(仅供测试)", - "Badge Pending Color": "重试中状态下徽章颜色", - "Badge Label Prefix": "徽章标签前缀", - "Badge Label Color": "徽章标签颜色", - "Show Clickable Link Description": "勾选后所有能访问本状态页的访客均可查看该监控项网址。", - "Show Clickable Link": "显示可点击的监控项链接", - "Group": "分组", - "Monitor Group": "监控项组", - "Cannot connect to the socket server": "无法连接到后端服务器", - "Reconnecting...": "重连中……", - "Edit Maintenance": "编辑维护计划", - "Home": "首页", - "noGroupMonitorMsg": "暂无可用,请先创建一个监控项组。", - "Close": "关闭", - "nostrRecipients": "接收者公钥(npub 格式)", - "nostrSender": "发送者私钥(nsec 格式)", - "nostrRecipientsHelp": "npub 格式,每行一个", - "nostrRelaysHelp": "Relay 服务地址,每行一个", - "nostrRelays": "Nostr relay 服务", - "chromeExecutableDescription": "致 Docker 用户:如果 Chromium 尚未安装,则需要几分钟时间来安装并显示测试结果。这需要 1 GB 硬盘空间。", - "chromeExecutableAutoDetect": "自动检测", - "chromeExecutable": "Chrome/Chromium 可执行文件", - "Invert Keyword": "反转模式", - "invertKeywordDescription": "出现关键词将令检测结果为失败,而非成功。", - "webhookBodyCustomOption": "自定义内容", - "webhookCustomBodyDesc": "为 webhook 设定一个自定义 HTTP 请求体。可在模板内使用 {msg}、{heartbeat}和{monitor} 变量。", - "webhookBodyPresetOption": "预设 - {0}", - "Request Body": "请求体", - "Json Query": "JSON 查询", - "twilioApiKey": "API Key(可选)", - "Expected Value": "预期值", - "Badge Duration (in hours)": "徽章时间范围(以小时为单位)", - "Badge Preview": "徽章预览", - "Notify Channel": "通知该频道", - "aboutNotifyChannel": "勾选“通知该频道”,会令该频道内所有成员都收到一条桌面端或移动端通知,无论其状态是在线或离开。", - "filterActive": "启用", - "filterActivePaused": "暂停", - "Kafka Topic Name": "Kafka 主题名称", - "Press Enter to add broker": "按回车键添加缓存代理(broker)", - "Enter the list of brokers": "输入缓存代理(broker)列表", - "Kafka Brokers": "Kafka 缓存代理(Broker)", - "Pick a SASL Mechanism...": "选择一种 SASL 鉴权方式……", - "Mechanism": "鉴权方式", - "Kafka SASL Options": "Kafka SASL 选项", - "AccessKey Id": "密钥 ID(AccessKey Id)", - "Authorization Identity": "授权实体(Authorization Identity)", - "Session Token": "会话令牌(Session Token)", - "Secret AccessKey": "访问密钥(Secret AccessKey)", - "Enable Kafka Producer Auto Topic Creation": "启用 Kafka 生成者(Producer)自动创建主题(Topic)功能", - "Enable Kafka SSL": "启用 Kafka SSL 功能", - "Kafka Producer Message": "Kafka 生成者(Producer)消息", - "tailscalePingWarning": "如需使用 Tailscale Ping 客户端,您需要以非 docker 方式安装 Uptime Kuma,并同时安装 Tailscale 客户端。", - "Server URL should not contain the nfty topic": "服务器地址不应包含 ntfy主题", - "Select": "选择", - "selectedMonitorCount": "已选:{0}", - "noOrBadCertificate": "无证书或证书错误", - "showCertificateExpiry": "显示证书有效期", - "FlashDuty Severity": "严重程度", - "Check/Uncheck": "选中/取消选中", - "pushDeerServerDescription": "留空则使用官方服务器", - "PushDeer Server": "PushDeer 服务器", - "timeoutAfter": "{0} 秒后超时", - "Request Timeout": "请求超时", - "gamedigGuessPortDescription": "Valve 服务器查询协议使用的端口可能与客户端端口不同。如果监控器无法连接到服务器,请尝试此方法。", - "gamedigGuessPort": "Gamedig: 自动检测端口号", - "styleElapsedTimeShowWithLine": "显示(带连接线)", - "styleElapsedTimeShowNoLine": "显示(不带连接线)", - "styleElapsedTime": "在监控项详情的心跳栏下显示起止时间", - "enableNSCD": "启用 NSCD(名称服务缓存)以缓存所有 DNS 请求", - "setupDatabaseChooseDatabase": "您想用哪种数据库?", - "setupDatabaseEmbeddedMariaDB": "您无需设置此项。通过 Docker 方式安装时已自动配置了一个 MariaDB 数据库。Uptime Kuma 会通过 Unix 套接字方式连接该数据库。", - "setupDatabaseMariaDB": "连接到外部 MariaDB 数据库。您需要设置该数据库的连接方式。", - "setupDatabaseSQLite": "一个简单的数据库文件,推荐小规模部署使用。在 v2.0.0 版本之前,Uptime Kuma 使用 SQLite 作为默认数据库。", - "dbName": "数据库名称", - "Saved.": "已保存。", - "monitorToastMessagesLabel": "监控项的弹窗通知", - "toastSuccessTimeout": "成功类弹窗通知的自动关闭用时", - "toastErrorTimeout": "失败类弹窗通知的自动关闭用时", - "monitorToastMessagesDescription": "监控项的弹窗通知的自动关闭用时,以秒为单位。设置为 -1 将禁用弹窗通知的自动关闭功能,设置为 0 将完全禁用弹窗通知功能。", - "Bark API Version": "Bark API 版本", - "programmingLanguages": "编程语言", - "pushOthers": "其他", - "pushViewCode": "如何使用 Push 监控项?(查看示例代码)", - "authInvalidToken": "无效的令牌。", - "authUserInactiveOrDeleted": "该用户被禁用或删除。", - "tagNotFound": "标签未找到。", - "successEnabled": "已成功启用。", - "successDisabled": "已成功禁用。", - "successBackupRestored": "已成功恢复备份。", - "successEdited": "已成功编辑。", - "successDeleted": "已成功删除。", - "successPaused": "已成功暂停。", - "successResumed": "已成功恢复。", - "successAdded": "已成功添加。", - "2faDisabled": "已成功禁用 2FA。", - "2faEnabled": "已成功启用 2FA。", - "2faAlreadyEnabled": "2FA 已经启用。", - "foundChromiumVersion": "已找到 Chromium/Chrome。版本:{0}", - "successAuthChangePassword": "已成功更新密码。", - "authIncorrectCreds": "错误的用户名或密码。", - "Reset Token": "重置令牌", - "templateMsg": "通知的消息", - "templateHeartbeatJSON": "描述心跳信息的对象", - "templateLimitedToUpDownCertNotifications": "仅适用于“正常”、“故障”、“证书到期”类通知", - "templateMonitorJSON": "描述监控项信息的对象", - "emailCustomisableContent": "可自定义的内容", - "smtpLiquidIntroduction": "以下两个字段可通过 Liquid 模板语言进行模板化。使用说明请参阅 {0}。这些是可用变量:", - "leave blank for default subject": "留空以使用默认主题", - "emailCustomBody": "自定义正文", - "leave blank for default body": "留空以使用默认正文", - "emailTemplateMsg": "通知的消息", - "emailTemplateMonitorJSON": "描述监控项信息的对象", - "emailTemplateHeartbeatJSON": "描述心跳信息的对象", - "emailTemplateStatus": "状态", - "emailTemplateHostnameOrURL": "主机名或 URL", - "emailTemplateServiceName": "服务名称", - "liquidIntroduction": "可通过 Liquid 模板语言实现模板化。使用说明请参阅 {0}。这些是可用的变量:", - "templateLimitedToUpDownNotifications": "仅适用于“正常”、“故障”类通知", - "emailTemplateLimitedToUpDownNotification": "仅适用于“正常”、“故障”类心跳,否则为空", - "GrafanaOncallUrl": "Grafana Oncall 服务 URL", - "noDockerHostMsg": "不可用。请先设置一个 Docker 宿主。", - "DockerHostRequired": "请为此监控项设置一个 Docker 宿主。", - "Browser Screenshot": "浏览器截图", - "successKeyword": "“成功”关键词", - "successKeywordExplanation": "视为成功的MQTT关键词", - "Add a new expiry notification day": "添加一个新的天数条件", - "setup a new monitor group": "创建一个新的监控项组", - "Remote Browsers": "远程浏览器", - "Remote Browser": "远程浏览器", - "Add a Remote Browser": "添加一个远程浏览器", - "Remote Browser not found!": "未找到远程浏览器!", - "remoteBrowsersDescription": "远程浏览器可用以代替本地 Chromium 浏览器。您可使用类似于 browserless.io 的服务,或者自行运行一个类似服务", - "self-hosted container": "自托管容器", - "remoteBrowserToggle": "默认情况下 Chromium 运行于 Uptime Kuma 所在容器内。您可以通过切换此开关来使用远程浏览器。", - "useRemoteBrowser": "使用远程浏览器", - "deleteRemoteBrowserMessage": "您确定要删除此远程浏览器吗,这会影响所有监控项?", - "Remove the expiry notification": "移除该天数条件", - "openModalTo": "打开一个新窗口以{0}", - "Add a domain": "添加一个域名", - "Remove domain": "移除域名 {0}", - "ntfyPriorityHelptextAllExceptDown": "除了 {0} 类事件使用 {1} 优先级外,其他所有事件均使用该优先级", - "statusPageSpecialSlugDesc": "特殊路径 {0}:当访客未指定路径时将显示此路径对应的页面", - "Search monitored sites": "搜索监控中站点", - "settingUpDatabaseMSG": "正在配置数据库中。这需要一定的时间,请耐心等候。", - "ntfyPriorityHelptextAllEvents": "所有事件将使用最高优先级", - "What is a Remote Browser?": "什么是远程浏览器?", - "Your User ID": "你的用户 ID", - "Channel access token (Long-lived)": "频道访问令牌(长期版)", - "wayToGetHeiiOnCallDetails": "如需了解如何获取 Trigger ID 和 API 密钥,请访问 {documentation}", - "documentationOf": "{0} 文档", - "gtxMessagingToHint": "国际通用格式,需要前导 \"+\" ({e164}、{e212} 或 {e214} 格式)", - "From Phone Number / Transmission Path Originating Address (TPOA)": "发件人电话号码 / 传输路径起始地址(TPOA)", - "gtxMessagingApiKeyHint": "你可以在此找到你的 API 密钥:My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)", - "To Phone Number": "收件人电话号码", - "gtxMessagingFromHint": "在手机上,收件人会看到 TPOA 地址作为消息的发送者。TPOA 允许的格式包括:至多11个字母或数字、短代码、当地长代码或国际号码({e164}、{e212} 或 {e214} 格式)", - "Allow Long SMS": "允许长消息", - "Destination": "收件人", - "cellsyntOriginator": "在收件人处作为消息发送者显示。允许的内容取决于发件人类型。", - "Originator": "发件人", - "max 15 digits": "最多 15 位数字", - "cellsyntOriginatortypeAlphanumeric": "字符或数字类型(最多 11 个字母或数字)。收件人无法向此号码回复消息。", - "Telephone number": "手机号码", - "Alphanumeric (recommended)": "字符或数字类型(推荐)", - "Originator type": "发件人类型", - "max 11 alphanumeric characters": "最多 11 个字母或数字", - "cellsyntSplitLongMessages": "长消息会被切分为至多 6 段,每段至多 153 个字符,总共至多 918 个字符。", - "cellsyntDestination": "收件人的手机号码需要使用以 00+国家代码开头的国际通用格式,例如若要发给英国的号码 07920 110 000 需使用 00447920110000 作为收件人手机号码(至多17位数)。需发送给多个收件人手机号码时可使用英文逗号分隔,每次请求最 多250 00个收件人手机号码。", - "cellsyntOriginatortypeNumeric": "数字类型(最多 15 位数)需使用国际通用格式,不以 00+国家代码开头,例如若要使用英国的号码 07920 110 000 需填写 447920110000。收件人可向此号码回复消息。", - "callMeBotGet": "您可以在此处填写您生成的用于 {0}、{1} 或 {2} 的端点。 请注意您可能会受到速率限制。 速率限制被推测为:{3}(仅供参考)", - "whapiRecipient": "手机号码 / 联系人 ID / 组 ID", - "API URL": "API 地址", - "wayToGetWhapiUrlAndToken": "您可以通过进入您想要的频道来获取 API URL 和令牌:{0}", - "wayToWriteWhapiRecipient": "可用格式为不含 + 号的国际通用格式手机号码({0})、联系人 ID({1})或组 ID({2})。", - "Mentioning": "是否提及成员", - "Don't mention people": "不提及任何人", - "Mention group": "提及 {group}", - "senderSevenIO": "发信人号码或名称", - "wayToGetSevenIOApiKey": "访问 app.seven.io > 开发人员 > api 密钥 > 绿色添加按钮下的仪表板", - "receiverInfoSevenIO": "如果接收号码不在德国,您必须在号码前面添加国家代码(例如,对于来自美国的国家代码 1,请使用 117612121212 而不是 017612121212)", - "apiKeySevenIO": "SevenIO API 密钥", - "locally configured mail transfer agent": "本地配置的邮件传输代理", - "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "输入您要连接的服务器的主机名,或者输入 {localhost}(如果您打算使用 {local_mta})", - "receiverSevenIO": "收信人号码", - "Host URL": "服务器地址", - "ignoreTLSErrorGeneral": "连接时忽视 TLS/SSL 错误", - "wayToGetDiscordThreadId": "获取一个子区(thread)或论坛帖子的消息 ID 与获取一个频道的 ID 相似。关于如何获取 ID 请参阅 {0}", - "whatHappensAtForumPost": "创建一个新论坛帖子。本功能不会向已存在的论坛帖子发送消息。如果需要请使用 \"{option}\"", - "mongodbCommandDescription": "对数据库运行 MongoDB 命令。有关可用命令的信息,请查阅 {documentation}", - "Command": "命令", - "bitrix24SupportUserID": "输入你在 Bitrix24 的用户 ID。你可以在你的用户个人资料页找到你的用户 ID。", - "wayToGetBitrix24Webhook": "你可以按以下步骤创建一个 webhook:{0}", - "Bitrix24 Webhook URL": "Bitrix24 Webhook 地址", - "postToExistingThread": "发送到已存在的子区/论坛帖子", - "Create new forum post": "创建新的论坛帖子", - "Send to channel": "发送到频道", - "Select message type": "选择消息类型", - "Refresh Interval Description": "状态页面会每 {0} 秒进行一次完全刷新", - "Refresh Interval": "刷新间隔", - "forumPostName": "论坛帖子名称", - "e.g. {discordThreadID}": "例如 {discordThreadID}", - "threadForumPostID": "子区/论坛帖子 ID", - "smspartnerSenderName": "SMS 发件人名称", - "smspartnerPhoneNumber": "手机号码", - "smspartnerApiurl": "你可以在此处找到你的 API 密钥:{0}", - "smspartnerSenderNameInfo": "不能使用特殊字符,字符数在 3 到 11 个之间", - "smspartnerPhoneNumberHelptext": "号码必须使用国际通用格式,例如 {0}、{1}。多个号码必须使用 {2} 分隔", - "threemaRecipientTypePhone": "电话号码", - "threemaRecipientTypeIdentityFormat": "8 位字符", - "threemaRecipientTypeIdentity": "Threema ID", - "threemaRecipientType": "收信人类型", - "threemaRecipient": "收件人", - "threemaApiAuthenticationSecret": "网关密钥", - "threemaSenderIdentityFormat": "8 位字符,通常以 * 开头", - "threemaSenderIdentity": "网关 ID", - "threemaRecipientTypeEmail": "邮件地址", - "threemaBasicModeInfo": "注:此通知类型所使用的 Threema 网关为基础模式(服务器端加密)。更多细节参见 {0}。", - "threemaRecipientTypePhoneFormat": "E.164 标准,不含前导 + 号", - "wayToGetThreemaGateway": "你可以在 {0} 注册 Threema 网关。", - "apiKeysDisabledMsg": "由于登录验证被禁用,API 密钥也被禁用。", - "now": "现在", - "Json Query Expression": "JSON 查询表达式", - "and": "与", - "cacheBusterParam": "添加参数 {0}", - "cacheBusterParamDescription": "随机生成一个参数以绕过缓存。", - "Community String": "SNMP 通讯字符串", - "snmpCommunityStringHelptext": "此字符串用作密码,以验证和控制对SNMP启用设备的访问。请将其与您的SNMP设备配置匹配。", - "Please enter a valid OID.": "请输入一个合法的 OID。", - "privateOnesenderDesc": "请确保电话号码有效。要向私人电话号码发送消息,格式形如:628123456789", - "wayToGetOnesenderUrlandToken": "你可以在 Onesender 网站获取地址和令牌。更多信息参见 {0}", - "signl4Docs": "你可以在此找到更多关于如何配置 SIGNL4 以及如何获取 SIGNL4 Webhook 地址的信息:{0}。", - "groupOnesenderDesc": "请确保分组 ID 有效。要向分组发送消息,格式形如:628123456789-342345", - "time ago": "{0} 之前", - "-year": "年", - "OID (Object Identifier)": "OID(对象标识符)", - "snmpOIDHelptext": "输入您想监控的传感器或状态的 OID。如果您不确定 OID 是什么,可以使用 MIB 浏览器或 SNMP 软件等网络管理工具进行查找。", - "Condition": "条件", - "SNMP Version": "SNMP 版本", - "Host Onesender": "Onesender 服务器", - "Token Onesender": "Onesender 令牌", - "Recipient Type": "收件人类型", - "Private Number": "私密号码", - "Add Remote Browser": "添加远程浏览器", - "OAuth2: Client Credentials": "OAuth2:客户端凭据", - "Authentication Method": "鉴权方式", - "Authorization Header": "鉴权请求头", - "Form Data Body": "表单数据请求体", - "OAuth Token URL": "OAuth 令牌地址", - "Client ID": "客户端 ID", - "Client Secret": "客户端秘钥", - "OAuth Scope": "OAuth 范围", - "New Group": "新分组", - "Group ID": "分组 ID", - "Group Name": "分组名称", - "Optional: Space separated list of scopes": "可选项:用空格分隔的范围列表", - "Go back to home page.": "返回到首页。", - "No tags found.": "未找到标签。", - "Lost connection to the socket server.": "与 socket 服务器的连接丢失。", - "Cannot connect to the socket server.": "无法连接到 socket 服务器。", - "SIGNL4": "SIGNL4", - "SIGNL4 Webhook URL": "SIGNL4 Webhook 地址", - "Conditions": "条件", - "conditionAdd": "添加条件", - "conditionDelete": "删除条件", - "conditionAddGroup": "添加分组", - "conditionDeleteGroup": "删除分组", - "conditionValuePlaceholder": "值", - "equals": "相等", - "not equals": "不相等", - "contains": "包含", - "not contains": "不包含", - "starts with": "以此开头", - "not starts with": "不以此开头", - "ends with": "以此结尾", - "not ends with": "不以此结尾", - "less than": "少于", - "greater than": "多于", - "less than or equal to": "不多于", - "greater than or equal to": "不少于", - "record": "记录", - "jsonQueryDescription": "使用 JSON 查询解析并提取服务器 JSON 响应中的特定数据,或者,如果不期望得到 JSON 响应,则可使用 \"$\" 获取原始响应。然后将结果转为字符串并与期望值进行字符串比较。有关更多文档,请参阅 {0},亦可使用 {1} 来尝试查询。", - "shrinkDatabaseDescriptionSqlite": "触发 SQLite 数据库的 {vacuum} 命令。{auto_vacuum} 已经启用,但它不会像 {vacuum} 命令那样对数据库进行碎片整理,也不会重新打包各个数据库页面。" -} +{ + "languageName": "English", + "checkEverySecond": "检测频率 {0} 秒", + "retryCheckEverySecond": "重试间隔 {0} 秒", + "resendEveryXTimes": "每 {0} 次失败则重复发送一次", + "resendDisabled": "禁用重复发送", + "retriesDescription": "服务被标记为故障并发送通知之前的最大重试次数", + "ignoreTLSError": "忽略 HTTPS 站点的 TLS/SSL 错误", + "upsideDownModeDescription": "反转监控状态。如果服务可访问,则认为是故障。", + "maxRedirectDescription": "允许的最大重定向次数。设置为 0 以禁用重定向。", + "enableGRPCTls": "允许通过 TLS 连接发送 gRPC 请求", + "grpcMethodDescription": "方法名会转换为小驼峰格式,例如 sayHello、check 等等。", + "acceptedStatusCodesDescription": "选择被视为成功响应的状态码。", + "Maintenance": "维护", + "statusMaintenance": "维护", + "Schedule maintenance": "计划维护", + "Affected Monitors": "受影响的监控项", + "Pick Affected Monitors...": "选择受影响的监控项…", + "Start of maintenance": "维护开始", + "All Status Pages": "所有状态页面", + "Select status pages...": "选择状态页面…", + "recurringIntervalMessage": "每天一次 | 每 {0} 天一次", + "affectedMonitorsDescription": "选择受当前维护影响的监控项", + "affectedStatusPages": "在所选状态页面上显示此维护消息", + "atLeastOneMonitor": "至少选择一个受影响的监控项", + "passwordNotMatchMsg": "两次输入的密码不一致。", + "notificationDescription": "通知必须被分配给监控项才能正常工作。", + "keywordDescription": "在纯 HTML 或 JSON 响应中搜索关键字,区分大小写。", + "pauseDashboardHome": "暂停", + "deleteMonitorMsg": "确定要删除此监控项吗?", + "deleteMaintenanceMsg": "确定要删除此维护吗?", + "deleteNotificationMsg": "确定要为所有监控项删除此通知吗?", + "dnsPortDescription": "DNS 服务器端口,默认为 53,您可以在任何时候更改此端口。", + "resolverserverDescription": "默认服务器是 Cloudflare。您随时可以修改解析服务器。", + "rrtypeDescription": "选择要监控的资源记录类型", + "pauseMonitorMsg": "确定要暂停吗?", + "enableDefaultNotificationDescription": "新的监控项将默认启用此通知,您仍然为每个监控项单独禁用。", + "clearEventsMsg": "确定要删除此监控项的所有事件吗?", + "clearHeartbeatsMsg": "确定要删除此监控项的所有心跳状态吗?", + "confirmClearStatisticsMsg": "确定要删除所有统计信息吗?", + "importHandleDescription": "如果想跳过同名的监控项或消息通知,请选择“跳过已存在”。“覆盖”将删除所有现有的监控项和通知。", + "confirmImportMsg": "确定要导入备份吗?请确保已经选择了正确的导入选项。", + "twoFAVerifyLabel": "请输入令牌码以确认二次验证:", + "tokenValidSettingsMsg": "令牌码有效!您现在可以保存二次验证设置了。", + "confirmEnableTwoFAMsg": "确定要启用二次验证吗?", + "confirmDisableTwoFAMsg": "确定要禁用二次验证吗?", + "Settings": "设置", + "Dashboard": "仪表盘", + "New Update": "有新版本", + "Language": "语言", + "Appearance": "外观", + "Theme": "主题", + "General": "常规", + "Primary Base URL": "站点主 URL", + "Version": "版本", + "Check Update On GitHub": "检查 GitHub 上的更新", + "List": "列表", + "Add": "添加", + "Add New Monitor": "添加监控项", + "Quick Stats": "状态速览", + "Up": "正常", + "Down": "故障", + "Pending": "重试中", + "Unknown": "未知", + "Pause": "暂停", + "Name": "名称", + "Status": "状态", + "DateTime": "日期时间", + "Message": "消息", + "No important events": "暂无重要事件", + "Resume": "恢复", + "Edit": "编辑", + "Delete": "删除", + "Current": "当前", + "Uptime": "在线时间", + "Cert Exp.": "证书有效期", + "day": "天", + "-day": "天", + "hour": "小时", + "-hour": "小时", + "Response": "响应", + "Ping": "Ping", + "Monitor Type": "监控类型", + "Keyword": "关键字", + "Friendly Name": "显示名称", + "URL": "URL", + "Hostname": "主机名", + "Port": "端口", + "Heartbeat Interval": "心跳间隔", + "Retries": "重试次数", + "Heartbeat Retry Interval": "心跳重试间隔", + "Resend Notification if Down X times consecutively": "连续失败时重复发送通知的间隔次数", + "Advanced": "高级", + "Upside Down Mode": "反转模式", + "Max. Redirects": "最大重定向次数", + "Accepted Status Codes": "有效状态码", + "Push URL": "推送 URL", + "needPushEvery": "您需要每 {0} 秒调用一次该 URL。", + "pushOptionalParams": "可选参数:{0}", + "Save": "保存", + "Notifications": "通知", + "Not available, please setup.": "暂不可用,请先设置。", + "Setup Notification": "设置通知", + "Light": "明亮", + "Dark": "黑暗", + "Auto": "自动", + "Theme - Heartbeat Bar": "主题 - 心跳栏", + "Normal": "正常", + "Bottom": "靠下", + "None": "不显示", + "Timezone": "时区", + "Search Engine Visibility": "搜索引擎可见性", + "Allow indexing": "允许索引", + "Discourage search engines from indexing site": "阻止搜索引擎索引网站", + "Change Password": "修改密码", + "Current Password": "当前密码", + "New Password": "新密码", + "Repeat New Password": "重复新密码", + "Update Password": "更新密码", + "Disable Auth": "禁用登录验证", + "Enable Auth": "启用登录验证", + "disableauth.message1": "是否确定 {disableAuth}?", + "disable authentication": "取消登录验证", + "disableauth.message2": "这是为 {intendThirdPartyAuth} (如 Cloudflare Access、Authelia 或其他认证方式)的用户提供的功能。", + "where you intend to implement third-party authentication": "您打算在哪里实施第三方身份验证", + "Please use this option carefully!": "请谨慎使用!", + "Logout": "退出", + "Leave": "离开", + "I understand, please disable": "我已了解,继续禁用", + "Confirm": "确认", + "Yes": "是", + "No": "否", + "Username": "用户名", + "Password": "密码", + "Remember me": "记住我", + "Login": "登录", + "No Monitors, please": "还没有监控项,", + "add one": "点击添加", + "Notification Type": "通知类型", + "Email": "邮件", + "Test": "测试", + "Certificate Info": "证书信息", + "Resolver Server": "解析服务器", + "Resource Record Type": "资源记录类型", + "Last Result": "上次结果", + "Create your admin account": "创建管理员账户", + "Repeat Password": "重复密码", + "Import Backup": "导入备份", + "Export Backup": "导出备份", + "Export": "导出", + "Import": "导入", + "respTime": "响应时间(毫秒)", + "notAvailableShort": "N/A", + "Default enabled": "默认开启", + "Apply on all existing monitors": "应用到所有现有监控项", + "Create": "创建", + "Clear Data": "清除数据", + "Events": "事件", + "Heartbeats": "心跳", + "Auto Get": "自动获取", + "backupDescription": "您可以将所有监控项和通知备份到 JSON 文件。", + "backupDescription2": "注意: 不包括历史状态和事件数据。", + "backupDescription3": "导出的文件可能包含敏感信息,例如通知的令牌,请小心存放。", + "alertNoFile": "请选择要导入的文件。", + "alertWrongFileType": "请选择一个 JSON 文件。", + "Clear all statistics": "清除所有统计数据", + "Skip existing": "跳过已存在", + "Overwrite": "覆盖", + "Options": "选项", + "Keep both": "全部保留", + "Verify Token": "验证令牌", + "Setup 2FA": "设置二次验证", + "Enable 2FA": "启用二次验证", + "Disable 2FA": "禁用二次验证", + "2FA Settings": "二次验证设置", + "Two Factor Authentication": "二次验证", + "Active": "激活", + "Inactive": "停用", + "Token": "令牌", + "Show URI": "显示 URI", + "Tags": "标签", + "Add New below or Select...": "在下面添加或选择…", + "Tag with this name already exist.": "相同名称的标签已存在。", + "Tag with this value already exist.": "相同内容的标签已存在。", + "color": "颜色", + "value (optional)": "值(可选)", + "Gray": "灰色", + "Red": "红色", + "Orange": "橙色", + "Green": "绿色", + "Blue": "蓝色", + "Indigo": "靛蓝", + "Purple": "紫色", + "Pink": "粉色", + "Search...": "搜索…", + "Avg. Ping": "平均 Ping", + "Avg. Response": "平均响应", + "Entry Page": "入口页面", + "statusPageNothing": "这里什么也没有,请添加一个分组或一个监控项。", + "No Services": "无服务", + "All Systems Operational": "所有服务运行正常", + "Partially Degraded Service": "部分服务出现故障", + "Degraded Service": "全部服务出现故障", + "Add Group": "添加分组", + "Add a monitor": "添加监控项", + "Edit Status Page": "编辑状态页面", + "Go to Dashboard": "前往仪表盘", + "Status Page": "状态页面", + "Status Pages": "状态页面", + "defaultNotificationName": "{notification} 通知({number})", + "here": "这里", + "Required": "必填", + "telegram": "Telegram", + "ZohoCliq": "ZohoCliq", + "Bot Token": "机器人令牌", + "wayToGetTelegramToken": "您可以从 {0} 获取 Token。", + "Chat ID": "Chat ID", + "supportTelegramChatID": "支持对话/群组/频道的 Chat ID", + "wayToGetTelegramChatID": "您可以发送一条消息给您的机器人,然后访问此链接来查看 chat_id:", + "YOUR BOT TOKEN HERE": "这里替换成您的 BOT TOKEN", + "chatIDNotFound": "未找到 Chat ID,请先给您的机器人发送一条消息", + "webhook": "Webhook", + "Post URL": "Post URL", + "Content Type": "Content Type", + "webhookJsonDesc": "{0} 适合现代的 HTTP 服务器,例如 Express.js", + "webhookFormDataDesc": "{multipart} 适合 PHP,其中 JSON 需要使用 {decodeFunction} 解码", + "webhookAdditionalHeadersTitle": "额外 Header", + "webhookAdditionalHeadersDesc": "设置 webhook 请求的额外 Header。每一个 Header 应被定义为一对 JSON 键值对。", + "smtp": "电子邮件(SMTP)", + "secureOptionNone": "无 / STARTTLS(常用端口 25、587)", + "secureOptionTLS": "TLS(常用端口 465)", + "Ignore TLS Error": "忽略 TLS 错误", + "From Email": "发信人", + "emailCustomSubject": "邮件主题", + "To Email": "收信人", + "smtpCC": "抄送", + "smtpBCC": "密送", + "discord": "Discord", + "Discord Webhook URL": "Discord Webhook 网址", + "wayToGetDiscordURL": "可在服务器设置 -> 整合 -> Webhook -> 创建 Webhook 中获取", + "Bot Display Name": "机器人显示名称", + "Prefix Custom Message": "自定义消息前缀", + "Hello @everyone is...": "{'@'}everyone,……", + "teams": "Microsoft Teams", + "Webhook URL": "Webhook 网址", + "wayToGetTeamsURL": "您可以在{0}了解如何获取 Webhook URL。", + "wayToGetZohoCliqURL": "您可以在{0}了解如何创建 Webhook URL。", + "signal": "Signal", + "Number": "号码", + "Recipients": "收件人", + "needSignalAPI": "您需要有一个支持 REST API 的 Signal 客户端。", + "wayToCheckSignalURL": "您可以通过下面的 URL 了解如何设置:", + "signalImportant": "重要:您不能混合设定收件人的分组和号码!", + "gotify": "Gotify", + "Application Token": "应用程序令牌", + "Server URL": "服务器 URL", + "Priority": "优先级", + "slack": "Slack", + "Icon Emoji": "Emoji 图标", + "Channel Name": "频道名称", + "Uptime Kuma URL": "Uptime Kuma URL", + "aboutWebhooks": "关于 Webhook 的更多信息:{0}", + "aboutChannelName": "如果您想绕过 Webhook 频道,请在 {0} 字段输入所需的频道名称。例如:#other-channel", + "aboutKumaURL": "如果保留 Uptime Kuma URL 为空,将会默认指向项目的 GitHub 页面。", + "emojiCheatSheet": "Emoji 速查:{0}", + "rocket.chat": "Rocket.Chat", + "pushover": "Pushover", + "pushy": "Pushy", + "PushByTechulus": "使用 Techulus 推送", + "octopush": "Octopush", + "promosms": "PromoSMS", + "clicksendsms": "ClickSend SMS", + "lunasea": "LunaSea", + "apprise": "Apprise (支持 50+ 种通知服务)", + "GoogleChat": "Google Chat(仅 Google Workspace)", + "pushbullet": "Pushbullet", + "Kook": "Kook", + "wayToGetKookBotToken": "在 {0} 创建应用并获取机器人 Token", + "wayToGetKookGuildID": "在 Kook 设置中打开“开发者模式”,然后右键点击频道可获取其 ID", + "Guild ID": "频道 ID", + "line": "Line Messenger", + "mattermost": "Mattermost", + "User Key": "用户密钥", + "Device": "设备", + "Message Title": "消息标题", + "Notification Sound": "通知铃声", + "More info on:": "更多信息:{0}", + "pushoverDesc1": "紧急优先级(2)会在一小时内每隔 30 秒重试一次。", + "pushoverDesc2": "如果您想发送通知给不同的设备,请填写“设备”字段。", + "SMS Type": "短信类型", + "octopushTypePremium": "Premium(快 - 推荐用于警报)", + "octopushTypeLowCost": "Low Cost(慢 - 有时会被运营商屏蔽)", + "checkPrice": "查看 {0} 的价格:", + "apiCredentials": "API Credentials", + "octopushLegacyHint": "您是否在使用旧版本的 Octopush(2011-2020)?", + "Check octopush prices": "查看 Octopush 的价格 {0}。", + "octopushPhoneNumber": "电话号码(国际通用格式,例如:+33612345678) ", + "octopushSMSSender": "短信发送名称:3-11 位大小写字母、数字和空格(a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea 设备 ID", + "Apprise URL": "Apprise 网址", + "Example:": "例如:{0}", + "Read more:": "了解更多:{0}", + "Status:": "状态:{0}", + "Read more": "了解更多", + "appriseInstalled": "Apprise 已安装。", + "appriseNotInstalled": "Apprise 未安装。{0}", + "Access Token": "访问令牌", + "Channel access token": "频道 Access Token", + "Line Developers Console": "Line 开发者控制台", + "lineDevConsoleTo": "Line 开发者控制台 - {0}", + "Basic Settings": "基本设置", + "User ID": "用户 ID", + "Messaging API": "消息 API", + "wayToGetLineChannelToken": "首先访问 {0},创建一个提供者和频道(Messaging API),然后您就可以从上面提到的菜单获取频道的 Access Token 和用户 ID。", + "Icon URL": "图标 URL", + "aboutIconURL": "您可以在“图标 URL”中提供一个图片链接来覆盖默认的资料图片。如果设置了 Emoji 图标则此字段会被忽略。", + "aboutMattermostChannelName": "您可以覆盖 Webhook 发送消息的默认频道,只需在“频道名称”字段中输入您想要的频道名。这需要在 Mattermost 的 Webhook 设置中启用。例如:#other-channel", + "matrix": "Matrix", + "promosmsTypeEco": "SMS ECO - 便宜但是慢,并且容易超负荷。仅限波兰地区的收信人。", + "promosmsTypeFlash": "SMS FLASH - 消息会自动显示在收信人设备上。仅限波兰地区的收信人。", + "promosmsTypeFull": "SMS FULL - 高级短信,您可以使用您自己的发信人名称(需要先注册)。对于警报来说更可靠。", + "promosmsTypeSpeed": "SMS SPEED - 最高优先级。非常快速可靠,但更贵(大约两倍 SMS FULL 的价格)。", + "promosmsPhoneNumber": "电话号码(波兰地区收信人可以不填区号)", + "promosmsSMSSender": "短信发信人名称:已注册的名称或以下默认值之一:InfoSMS、SMS Info、MaxSMS、INFO、SMS", + "Feishu": "飞书", + "Feishu WebHookUrl": "飞书 WebHook URL", + "matrixHomeserverURL": "服务器 URL(包含 http(s):// 和可选的端口号)", + "Internal Room Id": "内部房间 ID", + "matrixDesc1": "您可以在 Matrix 客户端房间设置的高级选项内找到内部房间 ID。格式类似于 !QMdRCpUIfLwsfjxye6:home.server。", + "matrixDesc2": "请不要使用您自己的 Access Token,这将开放您所有的账户权限和您已加入房间的权限。我们强烈建议您创建一个新用户并邀请它至您接收通知的房间中。您可以运行以下命令来获取 Access Token:{0}", + "Method": "方法", + "Body": "请求体", + "Headers": "请求头", + "PushUrl": "推送 URL", + "HeadersInvalidFormat": "请求头不是有效的 JSON: ", + "BodyInvalidFormat": "请求体不是有效的 JSON: ", + "Monitor History": "监控历史", + "clearDataOlderThan": "保留监控历史数据 {0} 天。", + "PasswordsDoNotMatch": "密码不匹配。", + "records": "记录", + "One record": "一条记录", + "steamApiKeyDescription": "要监控 Steam 游戏服务器,您需要 Steam Web-API 密钥。您可以在这里注册您的 API 密钥: ", + "Current User": "当前用户", + "topic": "Topic", + "topicExplanation": "要监控的 MQTT Topic", + "successMessage": "成功消息", + "successMessageExplanation": "视为成功的 MQTT 消息", + "recent": "最近", + "Done": "完成", + "Info": "信息", + "Security": "安全性", + "Steam API Key": "Steam API 密钥", + "Shrink Database": "压缩数据库", + "Pick a RR-Type...": "选择资源记录类型…", + "Pick Accepted Status Codes...": "选择有效的状态码…", + "Default": "默认", + "HTTP Options": "HTTP 选项", + "Create Incident": "创建事件", + "Title": "标题", + "Content": "内容", + "Style": "类型", + "info": "信息", + "warning": "警告", + "danger": "危险", + "error": "错误", + "critical": "关键", + "primary": "主要", + "light": "明亮", + "dark": "黑暗", + "Post": "发布", + "Please input title and content": "请输入标题和内容", + "Created": "创建时间", + "Last Updated": "更新时间", + "Unpin": "取消钉选", + "Switch to Light Theme": "切换到浅色主题", + "Switch to Dark Theme": "切换到深色主题", + "Show Tags": "显示标签", + "Hide Tags": "隐藏标签", + "Description": "描述", + "No monitors available.": "没有可用的监控项。", + "Add one": "添加一个", + "No Monitors": "没有监控项", + "Untitled Group": "无标题分组", + "Services": "服务", + "Discard": "放弃", + "Cancel": "取消", + "Powered by": "本站使用", + "serwersms": "SerwerSMS.pl", + "serwersmsAPIUser": "API 用户名(包括 webapi_ 前缀)", + "serwersmsAPIPassword": "API 密码", + "serwersmsPhoneNumber": "电话号码", + "serwersmsSenderName": "SMS 发信人名称(需要在客户中心注册)", + "smseagle": "SMSEagle", + "smseagleTo": "电话号码", + "smseagleGroup": "通讯录群组名", + "smseagleContact": "通讯录联系人", + "smseagleRecipientType": "收信人类型", + "smseagleRecipient": "收信人(多个需用半角逗号分隔)", + "smseagleToken": "API 访问令牌", + "smseagleUrl": "您的 SMSEagle 设备 URL", + "smseagleEncoding": "以 Unicode 发送", + "smseaglePriority": "消息优先级(0-9,默认为 0)", + "stackfield": "Stackfield", + "Customize": "自定义", + "Custom Footer": "自定义底部", + "Custom CSS": "自定义 CSS", + "smtpDkimSettings": "DKIM 设置", + "smtpDkimDesc": "请访问 Nodemailer DKIM {0} 了解配置方法。", + "documentation": "文档", + "smtpDkimDomain": "域名", + "smtpDkimKeySelector": "前缀选择器", + "smtpDkimPrivateKey": "密钥", + "smtpDkimHashAlgo": "哈希算法(可选)", + "smtpDkimheaderFieldNames": "包含在哈希计算对象内的 Header 列表(可选)", + "smtpDkimskipFields": "不包含在哈希计算对象内的 Header 列表(可选)", + "wayToGetPagerDutyKey": "您可以在 Service -> Service Directory -> (选择一个 Service) -> Integrations -> Add integration 页面中搜索“Events API V2”以获取此 Integration Key,更多信息请看{0}", + "wayToGetFlashDutyKey": "您可以进入 协作空间 -> (选择一个 协作空间) -> 集成数据 -> 新增一个集成 页面,添加“Uptime Kuma”集成获得一个推送地址,复制地址中的 Integration Key,更多信息前往{0}", + "Integration Key": "集成密钥", + "Integration URL": "集成网址", + "Auto resolve or acknowledged": "自动标记为已解决或已读", + "do nothing": "不做任何操作", + "auto acknowledged": "自动标记为已读", + "auto resolve": "自动标记为已解决", + "gorush": "Gorush", + "alerta": "Alerta", + "alertaApiEndpoint": "API 接入点", + "alertaEnvironment": "环境参数", + "alertaApiKey": "API 密钥", + "alertaAlertState": "报警时的严重性", + "alertaRecoverState": "恢复后的严重性", + "deleteStatusPageMsg": "您确认要删除此状态页吗?", + "Proxies": "代理", + "default": "默认", + "enabled": "启用", + "setAsDefault": "设为默认", + "deleteProxyMsg": "您确认要在所有监控项中删除此代理吗?", + "proxyDescription": "代理必须配置到至少一个监控项后才会工作。", + "enableProxyDescription": "此代理必须启用才能对监控项的网络请求起作用。您可以通过修改激活状态,临时在所有监控项中禁用此代理。", + "setAsDefaultProxyDescription": "此代理会对新创建的监控项默认激活,您仍可以在监控项配置中单独禁用此代理。", + "Certificate Chain": "证书链", + "Valid": "有效", + "Invalid": "无效", + "AccessKeyId": "AccessKey ID", + "SecretAccessKey": "AccessKey 密码", + "PhoneNumbers": "电话号码", + "TemplateCode": "TemplateCode", + "SignName": "SignName", + "Sms template must contain parameters: ": "短信模板必须包含以下变量: ", + "Bark Endpoint": "Bark 接入点", + "Bark Group": "Bark 群组", + "Bark Sound": "Bark 铃声", + "WebHookUrl": "钉钉自定义机器人 Webhook 地址", + "SecretKey": "钉钉自定义机器人加签密钥", + "For safety, must use secret key": "出于安全考虑,必须使用加签密钥", + "Device Token": "Apple Device Token", + "Platform": "平台", + "Huawei": "华为", + "High": "高", + "Retry": "重试次数", + "Topic": "Gorush Topic", + "WeCom": "企业微信群机器人", + "WeCom Bot Key": "企业微信群机器人 Key", + "Setup Proxy": "设置代理", + "Proxy Protocol": "代理协议", + "Proxy Server": "代理服务器", + "Server Address": "服务器地址", + "Proxy server has authentication": "代理服务器启用了身份验证功能", + "User": "用户名", + "Installed": "已安装", + "Not installed": "未安装", + "Running": "运行中", + "Not running": "未运行", + "Remove Token": "移除 Token", + "Start": "启动", + "Stop": "停止", + "Uptime Kuma": "Uptime Kuma", + "Add New Status Page": "添加新的状态页", + "Slug": "路径", + "Accept characters:": "可接受的字符:", + "startOrEndWithOnly": "开头和结尾必须为 {0}", + "No consecutive dashes": "不能有连续的破折号", + "Next": "下一步", + "The slug is already taken. Please choose another slug.": "该路径已被使用。请选择其他路径。", + "No Proxy": "无代理", + "Authentication": "验证", + "HTTP Basic Auth": "HTTP 基础身份验证", + "New Status Page": "新的状态页", + "Page Not Found": "未找到该页面", + "Reverse Proxy": "反向代理", + "Backup": "备份", + "About": "关于", + "wayToGetCloudflaredURL": "(可从 {0} 下载 cloudflared)", + "cloudflareWebsite": "Cloudflare 网站", + "Message:": "信息:", + "Don't know how to get the token? Please read the guide:": "不知道如何获取 Token?请阅读指南:", + "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "如果您正在通过 Cloudflare Tunnel 访问网站,则停止可能会导致当前连接断开。您确定要停止吗?请输入密码以确认。", + "HTTP Headers": "HTTP 头", + "Trust Proxy": "可信的代理类字段", + "Other Software": "其他软件", + "For example: nginx, Apache and Traefik.": "例如:nginx、Apache 和 Traefik。", + "Please read": "请阅读", + "Subject:": "颁发给:", + "Valid To:": "有效期至:", + "Days Remaining:": "剩余有效天数:", + "Issuer:": "颁发者:", + "Fingerprint:": "指纹:", + "No status pages": "无状态页", + "Domain Name Expiry Notification": "域名到期时通知", + "Proxy": "代理", + "Date Created": "创建于", + "HomeAssistant": "Home Assistant", + "onebotHttpAddress": "OneBot HTTP 地址", + "onebotMessageType": "OneBot 消息类型", + "onebotGroupMessage": "群聊", + "onebotPrivateMessage": "私聊", + "onebotUserOrGroupId": "群组/用户 ID", + "onebotSafetyTips": "出于安全原因,请务必设置 AccessToken", + "PushDeer Key": "PushDeer 密钥", + "Footer Text": "底部自定义文本", + "Show Powered By": "显示 Powered By", + "Domain Names": "域名", + "signedInDisp": "当前用户: {0}", + "signedInDispDisabled": "已禁用身份验证。", + "RadiusSecret": "Radius 共享机密", + "RadiusSecretDescription": "客户端和服务器之间共享的密钥", + "RadiusCalledStationId": "NAS 网络访问服务器号码(Called Station Id)", + "RadiusCalledStationIdDescription": "所访问的服务器的标识", + "RadiusCallingStationId": "呼叫方号码(Calling Station Id)", + "RadiusCallingStationIdDescription": "发出请求的设备的标识", + "Certificate Expiry Notification": "证书到期时通知", + "API Username": "API 用户名", + "API Key": "API 密钥", + "Recipient Number": "收件人手机号码", + "From Name/Number": "发件人名称/手机号码", + "Leave blank to use a shared sender number.": "留空以使用平台共享的发件人手机号码。", + "Octopush API Version": "Octopush API 版本", + "Legacy Octopush-DM": "旧版本 Octopush-DM", + "endpoint": "接入点", + "octopushAPIKey": "控制台 HTTP API credentials 里的 \"API key\"", + "octopushLogin": "控制台 HTTP API credentials 里的 \"Login\"", + "promosmsLogin": "API 登录名", + "promosmsPassword": "API 密码", + "pushoversounds pushover": "Pushover(默认)", + "pushoversounds bike": "自行车", + "pushoversounds bugle": "军号", + "pushoversounds cashregister": "Cash Register", + "pushoversounds classical": "Classical", + "pushoversounds cosmic": "宇宙", + "pushoversounds falling": "Falling", + "pushoversounds gamelan": "Gamelan", + "pushoversounds incoming": "Incoming", + "pushoversounds intermission": "Intermission", + "pushoversounds magic": "Magic", + "pushoversounds mechanical": "Mechanical", + "pushoversounds pianobar": "Piano Bar", + "pushoversounds siren": "Siren", + "pushoversounds spacealarm": "Space Alarm", + "pushoversounds tugboat": "汽笛", + "pushoversounds alien": "Alien Alarm(长铃声)", + "pushoversounds climb": "Climb(长铃声)", + "pushoversounds persistent": "Persistent(长铃声)", + "pushoversounds echo": "Pushover Echo(长铃声)", + "pushoversounds updown": "Up Down(长铃声)", + "pushoversounds vibrate": "仅震动", + "pushoversounds none": "无(静音)", + "pushyAPIKey": "API 密钥", + "pushyToken": "设备 Token", + "Show update if available": "有更新时通知", + "Also check beta release": "一并检查 Beta 版更新", + "Using a Reverse Proxy?": "正在使用反向代理?", + "Check how to config it for WebSocket": "查看如何将反向代理与 WebSocket 一起使用", + "Steam Game Server": "Steam 游戏服务器", + "Most likely causes:": "最可能的原因:", + "The resource is no longer available.": "您所请求的资源已不再可用。", + "There might be a typing error in the address.": "您输入的地址可能有误。", + "What you can try:": "您可以尝试以下操作:", + "Retype the address.": "重新输入地址。", + "Go back to the previous page.": "返回到上一页面。", + "Coming Soon": "即将推出", + "wayToGetClickSendSMSToken": "您可以在{0}获取 API Username 和 API Key。", + "Connection String": "连接字符串", + "Query": "查询语句", + "settingsCertificateExpiry": "TLS 证书过期通知", + "certificationExpiryDescription": "HTTPS 监控项发现被监控目标的 TLS 证书剩余有效期少于以下天数时将发出通知:", + "Setup Docker Host": "配置 Docker 宿主信息", + "Connection Type": "连接方式", + "Docker Daemon": "Docker 守护进程", + "deleteDockerHostMsg": "您确定要为所有监控项删除此 Docker 宿主设置吗?", + "socket": "Socket", + "tcp": "TCP / HTTP", + "Docker Container": "Docker 容器", + "Container Name / ID": "容器名称 / ID", + "Docker Host": "Docker 宿主", + "Docker Hosts": "Docker 宿主", + "ntfy Topic": "ntfy 主题", + "Domain": "域名", + "Workstation": "工作站", + "disableCloudflaredNoAuthMsg": "您现在正处于 No Auth 模式,无需输入密码。", + "trustProxyDescription": "信任 'X-Forwarded-*' 头。如果您的 Uptime Kuma 是通过 Nginx 或 Apache 等反代服务对外提供访问的话,则您应当启用本功能以获取正确的客户端 IP。", + "wayToGetLineNotifyToken": "您可以在 {0} 获取 Access token", + "Examples": "例如", + "Home Assistant URL": "Home Assistant 地址", + "Long-Lived Access Token": "长期访问令牌", + "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "长期访问令牌可通过点击左下角您的用户名,滚动到页面底部并点击 Create Token 按钮获取。 ", + "Notification Service": "Notification Service", + "default: notify all devices": "默认:通知所有设备", + "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "通知服务的列表可在 Home Assistant 中的 Developer Tools > Services 通过搜索您的设备或手机的名称来获得。", + "Automations can optionally be triggered in Home Assistant:": "可以在 Home Assistant 使用下列模板设置自动化操作的触发条件:", + "Trigger type:": "触发类型:", + "Event type:": "事件类型:", + "Event data:": "事件数据:", + "Then choose an action, for example switch the scene to where an RGB light is red.": "然后您可以选择关联操作,例如切换到 RGB 灯发出红光的场景。", + "Frontend Version": "前端版本", + "Frontend Version do not match backend version!": "前端版本与后端版本不匹配!", + "Base URL": "API 基础地址", + "goAlertInfo": "GoAlert 是一个用于呼叫调度、自动汇报和通知(如 SMS 或语音呼叫)的开源应用程序。在正确的时间以正确的方式自动让正确的人参与!{0}", + "goAlertIntegrationKeyInfo": "使用形如 aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 的通用 API 集成密钥,通常是复制来的链接中的 token 参数值。", + "goAlert": "GoAlert", + "backupOutdatedWarning": "已弃用:由于大量新功能的加入,以及备份功能没有时时维护,现在备份功能已经无法生成完整的备份和恢复完整的设置。", + "backupRecommend": "请改为直接备份 docker 卷或者数据文件夹(./data/)。", + "Optional": "可选的", + "squadcast": "Squadcast", + "SendKey": "SendKey", + "SMSManager API Docs": "SMSManager API 文档 ", + "Gateway Type": "网关类型", + "SMSManager": "SMSManager", + "You can divide numbers with": "可用的数字分隔符包括", + "or": "或", + "recurringInterval": "时间间隔", + "Recurring": "重复", + "strategyManual": "手动启用/禁用", + "warningTimezone": "使用服务器时区", + "weekdayShortMon": "周一", + "weekdayShortTue": "周二", + "weekdayShortWed": "周三", + "weekdayShortThu": "周四", + "weekdayShortFri": "周五", + "weekdayShortSat": "周六", + "weekdayShortSun": "周日", + "dayOfWeek": "每周计划", + "dayOfMonth": "每月计划", + "lastDay": "结束日", + "lastDay1": "每月最后一天", + "lastDay2": "每月倒数第二天", + "lastDay3": "每月倒数第三天", + "lastDay4": "每月倒数第四天", + "No Maintenance": "无维护计划", + "pauseMaintenanceMsg": "确定要暂停吗?", + "maintenanceStatus-under-maintenance": "正在维护", + "maintenanceStatus-inactive": "未启用", + "maintenanceStatus-scheduled": "已计划", + "maintenanceStatus-ended": "已结束", + "maintenanceStatus-unknown": "未知", + "Display Timezone": "显示时区", + "Server Timezone": "服务器时区", + "statusPageMaintenanceEndDate": "结束时间", + "IconUrl": "图标 URL", + "Enable DNS Cache": "(已弃用)为 HTTP(s) 监控项启用 DNS 缓存", + "Enable": "启用", + "Disable": "禁用", + "dnsCacheDescription": "可能无法在某些 IPv6 环境工作,如果遇到问题请禁用。", + "Single Maintenance Window": "单一时间窗口", + "Maintenance Time Window of a Day": "每日维护时间窗口", + "Effective Date Range": "生效日期范围(可选)", + "Schedule Maintenance": "计划维护", + "Date and Time": "日期时间", + "DateTime Range": "日期时间范围", + "Strategy": "策略", + "Free Mobile User Identifier": "Free Mobile 用户 ID", + "Free Mobile API Key": "Free Mobile API 密钥", + "Enable TLS": "启用 TLS", + "Proto Service Name": "Proto 服务名称", + "Proto Method": "Proto 方法", + "Proto Content": "Proto 内容", + "Economy": "经济", + "Lowcost": "低价", + "high": "高价", + "General Monitor Type": "常规监控类型", + "Passive Monitor Type": "被动监控类型", + "Specific Monitor Type": "特殊监控类型", + "dataRetentionTimeError": "保留期必须为0或更大", + "Monitor": "监控项", + "Custom": "自定义", + "promosmsAllowLongSMS": "允许长的短信", + "confirmDeleteTagMsg": "您确定要删除这个标签?与此标签关联的监控项不会被删除。", + "infiniteRetention": "设为0表示无限保留期。", + "Help": "帮助", + "Game": "游戏", + "Packet Size": "数据包大小", + "loadingError": "无法获取数据,请稍后重试。", + "plugin": "插件 | 插件", + "install": "安装", + "installing": "正在安装", + "uninstall": "卸载", + "uninstalling": "正在卸载", + "confirmUninstallPlugin": "您确定要卸载此插件吗?", + "Custom Monitor Type": "自定义监控类型", + "markdownSupported": "支持 Markdown 语法", + "Google Analytics ID": "Google Analytics(分析)ID", + "Learn More": "了解更多", + "Edit Tag": "编辑标签", + "telegramMessageThreadID": "(可选)话题 ID", + "telegramMessageThreadIDDescription": "可选的唯一标识符,用以向该标识符对应的话题发送消息,仅限启用了话题功能的超级群组可用", + "notificationRegional": "地区性通知平台", + "telegramSendSilently": "静默发送", + "Body Encoding": "请求体编码", + "telegramSendSilentlyDescription": "静默地发送消息。消息发布后用户会收到无声通知。", + "telegramProtectContent": "阻止转发/保存", + "telegramProtectContentDescription": "如果启用,Telegram 中的机器人消息将受到保护,不会被转发和保存。", + "Clone Monitor": "克隆监控项", + "Clone": "克隆", + "cloneOf": "{0} 的克隆", + "Expiry": "过期", + "Expiry date": "过期时间", + "Continue": "继续", + "Add Another": "添加另一个", + "Add API Key": "添加 API 密钥", + "No API Keys": "没有 API 密钥", + "apiKey-active": "有效", + "apiKey-expired": "已过期", + "Expires": "过期时间", + "apiKey-inactive": "已禁用", + "disableAPIKeyMsg": "您确定要禁用这个 API 密钥?", + "deleteAPIKeyMsg": "您确定要删除这个 API 密钥?", + "Generate": "生成", + "API Keys": "API 密钥", + "Don't expire": "从不过期", + "Key Added": "API 密钥已生成", + "apiKeyAddedMsg": "您的 API 密钥已生成。此页只会显示一次,请妥当保存。", + "pagertreeUrgency": "紧急程度", + "pagertreeLow": "低", + "pagertreeCritical": "严重", + "pagertreeIntegrationUrl": "集成 URL 地址", + "pagertreeSilent": "静默", + "pagertreeMedium": "中", + "pagertreeHigh": "高", + "pagertreeResolve": "自动解除", + "pagertreeDoNothing": "什么都不做", + "wayToGetPagerTreeIntegrationURL": "在 PagerTree 中创建 Uptime Kuma 集成后,复制端点 URL 到此处。在 {0} 查看详情", + "Add New Tag": "添加新标签", + "lunaseaDeviceID": "设备 ID", + "lunaseaTarget": "目标", + "lunaseaUserID": "用户 ID", + "statusPageRefreshIn": "将于 {0} 后刷新", + "twilioAccountSID": "账户 SID", + "twilioAuthToken": "鉴权 Token / API Key Secret", + "twilioFromNumber": "发信号码", + "twilioToNumber": "收信号码", + "sameAsServerTimezone": "使用服务器时区", + "startDateTime": "开始日期/时间", + "invalidCronExpression": "无效的 Cron 表达式:{0}", + "endDateTime": "结束日期/时间", + "cronExpression": "Cron 表达式", + "cronSchedule": "计划: ", + "ntfyAuthenticationMethod": "鉴权方式", + "ntfyUsernameAndPassword": "用户名和密码", + "pushoverMessageTtl": "消息存活时间(秒)", + "Monitor Setting": "{0} 监控项设置", + "Badge Color": "徽章内容颜色", + "Badge Suffix": "徽章内容后缀", + "Badge Prefix": "徽章内容前缀", + "Badge Label": "徽章标签", + "Badge Duration": "徽章显示时段(最后 x 小时)", + "Badge Type": "徽章类型", + "Badge Generator": "{0} 徽章生成器", + "Open Badge Generator": "打开徽章生成器", + "Badge Style": "徽章样式", + "Badge Down Days": "故障状态所需剩余天数", + "Badge Warn Days": "徽章预警天数", + "Badge Warn Color": "警告状态下徽章颜色", + "Badge Maintenance Color": "维护状态下徽章颜色", + "Badge Down Color": "故障状态下徽章颜色", + "Badge Up Color": "正常状态下徽章颜色", + "Badge Label Suffix": "徽章标签后缀", + "Badge URL": "徽章网址", + "Badge value (For Testing only.)": "徽章内容(仅供测试)", + "Badge Pending Color": "重试中状态下徽章颜色", + "Badge Label Prefix": "徽章标签前缀", + "Badge Label Color": "徽章标签颜色", + "Show Clickable Link Description": "勾选后所有能访问本状态页的访客均可查看该监控项网址。", + "Show Clickable Link": "显示可点击的监控项链接", + "Group": "分组", + "Monitor Group": "监控项组", + "Cannot connect to the socket server": "无法连接到后端服务器", + "Reconnecting...": "重连中……", + "Edit Maintenance": "编辑维护计划", + "Home": "首页", + "noGroupMonitorMsg": "暂无可用,请先创建一个监控项组。", + "Close": "关闭", + "nostrRecipients": "接收者公钥(npub 格式)", + "nostrSender": "发送者私钥(nsec 格式)", + "nostrRecipientsHelp": "npub 格式,每行一个", + "nostrRelaysHelp": "Relay 服务地址,每行一个", + "nostrRelays": "Nostr relay 服务", + "chromeExecutableDescription": "致 Docker 用户:如果 Chromium 尚未安装,则需要几分钟时间来安装并显示测试结果。这需要 1 GB 硬盘空间。", + "chromeExecutableAutoDetect": "自动检测", + "chromeExecutable": "Chrome/Chromium 可执行文件", + "Invert Keyword": "反转模式", + "invertKeywordDescription": "出现关键词将令检测结果为失败,而非成功。", + "webhookBodyCustomOption": "自定义内容", + "webhookCustomBodyDesc": "为 webhook 设定一个自定义 HTTP 请求体。可在模板内使用 {msg}、{heartbeat}和{monitor} 变量。", + "webhookBodyPresetOption": "预设 - {0}", + "Request Body": "请求体", + "Json Query": "JSON 查询", + "twilioApiKey": "API Key(可选)", + "Expected Value": "预期值", + "Badge Duration (in hours)": "徽章时间范围(以小时为单位)", + "Badge Preview": "徽章预览", + "Notify Channel": "通知该频道", + "aboutNotifyChannel": "勾选“通知该频道”,会令该频道内所有成员都收到一条桌面端或移动端通知,无论其状态是在线或离开。", + "filterActive": "启用", + "filterActivePaused": "暂停", + "Kafka Topic Name": "Kafka 主题名称", + "Press Enter to add broker": "按回车键添加缓存代理(broker)", + "Enter the list of brokers": "输入缓存代理(broker)列表", + "Kafka Brokers": "Kafka 缓存代理(Broker)", + "Pick a SASL Mechanism...": "选择一种 SASL 鉴权方式……", + "Mechanism": "鉴权方式", + "Kafka SASL Options": "Kafka SASL 选项", + "AccessKey Id": "密钥 ID(AccessKey Id)", + "Authorization Identity": "授权实体(Authorization Identity)", + "Session Token": "会话令牌(Session Token)", + "Secret AccessKey": "访问密钥(Secret AccessKey)", + "Enable Kafka Producer Auto Topic Creation": "启用 Kafka 生成者(Producer)自动创建主题(Topic)功能", + "Enable Kafka SSL": "启用 Kafka SSL 功能", + "Kafka Producer Message": "Kafka 生成者(Producer)消息", + "tailscalePingWarning": "如需使用 Tailscale Ping 客户端,您需要以非 docker 方式安装 Uptime Kuma,并同时安装 Tailscale 客户端。", + "Server URL should not contain the nfty topic": "服务器地址不应包含 ntfy主题", + "Select": "选择", + "selectedMonitorCount": "已选:{0}", + "noOrBadCertificate": "无证书或证书错误", + "showCertificateExpiry": "显示证书有效期", + "FlashDuty Severity": "严重程度", + "Check/Uncheck": "选中/取消选中", + "pushDeerServerDescription": "留空则使用官方服务器", + "PushDeer Server": "PushDeer 服务器", + "timeoutAfter": "{0} 秒后超时", + "Request Timeout": "请求超时", + "gamedigGuessPortDescription": "Valve 服务器查询协议使用的端口可能与客户端端口不同。如果监控器无法连接到服务器,请尝试此方法。", + "gamedigGuessPort": "Gamedig: 自动检测端口号", + "styleElapsedTimeShowWithLine": "显示(带连接线)", + "styleElapsedTimeShowNoLine": "显示(不带连接线)", + "styleElapsedTime": "在监控项详情的心跳栏下显示起止时间", + "enableNSCD": "启用 NSCD(名称服务缓存)以缓存所有 DNS 请求", + "setupDatabaseChooseDatabase": "您想用哪种数据库?", + "setupDatabaseEmbeddedMariaDB": "您无需设置此项。通过 Docker 方式安装时已自动配置了一个 MariaDB 数据库。Uptime Kuma 会通过 Unix 套接字方式连接该数据库。", + "setupDatabaseMariaDB": "连接到外部 MariaDB 数据库。您需要设置该数据库的连接方式。", + "setupDatabaseSQLite": "一个简单的数据库文件,推荐小规模部署使用。在 v2.0.0 版本之前,Uptime Kuma 使用 SQLite 作为默认数据库。", + "dbName": "数据库名称", + "Saved.": "已保存。", + "monitorToastMessagesLabel": "监控项的弹窗通知", + "toastSuccessTimeout": "成功类弹窗通知的自动关闭用时", + "toastErrorTimeout": "失败类弹窗通知的自动关闭用时", + "monitorToastMessagesDescription": "监控项的弹窗通知的自动关闭用时,以秒为单位。设置为 -1 将禁用弹窗通知的自动关闭功能,设置为 0 将完全禁用弹窗通知功能。", + "Bark API Version": "Bark API 版本", + "programmingLanguages": "编程语言", + "pushOthers": "其他", + "pushViewCode": "如何使用 Push 监控项?(查看示例代码)", + "authInvalidToken": "无效的令牌。", + "authUserInactiveOrDeleted": "该用户被禁用或删除。", + "tagNotFound": "标签未找到。", + "successEnabled": "已成功启用。", + "successDisabled": "已成功禁用。", + "successBackupRestored": "已成功恢复备份。", + "successEdited": "已成功编辑。", + "successDeleted": "已成功删除。", + "successPaused": "已成功暂停。", + "successResumed": "已成功恢复。", + "successAdded": "已成功添加。", + "2faDisabled": "已成功禁用 2FA。", + "2faEnabled": "已成功启用 2FA。", + "2faAlreadyEnabled": "2FA 已经启用。", + "foundChromiumVersion": "已找到 Chromium/Chrome。版本:{0}", + "successAuthChangePassword": "已成功更新密码。", + "authIncorrectCreds": "错误的用户名或密码。", + "Reset Token": "重置令牌", + "templateMsg": "通知的消息", + "templateHeartbeatJSON": "描述心跳信息的对象", + "templateLimitedToUpDownCertNotifications": "仅适用于“正常”、“故障”、“证书到期”类通知", + "templateMonitorJSON": "描述监控项信息的对象", + "emailCustomisableContent": "可自定义的内容", + "smtpLiquidIntroduction": "以下两个字段可通过 Liquid 模板语言进行模板化。使用说明请参阅 {0}。这些是可用变量:", + "leave blank for default subject": "留空以使用默认主题", + "emailCustomBody": "自定义正文", + "leave blank for default body": "留空以使用默认正文", + "emailTemplateMsg": "通知的消息", + "emailTemplateMonitorJSON": "描述监控项信息的对象", + "emailTemplateHeartbeatJSON": "描述心跳信息的对象", + "emailTemplateStatus": "状态", + "emailTemplateHostnameOrURL": "主机名或 URL", + "emailTemplateServiceName": "服务名称", + "liquidIntroduction": "可通过 Liquid 模板语言实现模板化。使用说明请参阅 {0}。这些是可用的变量:", + "templateLimitedToUpDownNotifications": "仅适用于“正常”、“故障”类通知", + "emailTemplateLimitedToUpDownNotification": "仅适用于“正常”、“故障”类心跳,否则为空", + "GrafanaOncallUrl": "Grafana Oncall 服务 URL", + "noDockerHostMsg": "不可用。请先设置一个 Docker 宿主。", + "DockerHostRequired": "请为此监控项设置一个 Docker 宿主。", + "Browser Screenshot": "浏览器截图", + "successKeyword": "“成功”关键词", + "successKeywordExplanation": "视为成功的MQTT关键词", + "Add a new expiry notification day": "添加一个新的天数条件", + "setup a new monitor group": "创建一个新的监控项组", + "Remote Browsers": "远程浏览器", + "Remote Browser": "远程浏览器", + "Add a Remote Browser": "添加一个远程浏览器", + "Remote Browser not found!": "未找到远程浏览器!", + "remoteBrowsersDescription": "远程浏览器可用以代替本地 Chromium 浏览器。您可使用类似于 browserless.io 的服务,或者自行运行一个类似服务", + "self-hosted container": "自托管容器", + "remoteBrowserToggle": "默认情况下 Chromium 运行于 Uptime Kuma 所在容器内。您可以通过切换此开关来使用远程浏览器。", + "useRemoteBrowser": "使用远程浏览器", + "deleteRemoteBrowserMessage": "您确定要删除此远程浏览器吗,这会影响所有监控项?", + "Remove the expiry notification": "移除该天数条件", + "openModalTo": "打开一个新窗口以{0}", + "Add a domain": "添加一个域名", + "Remove domain": "移除域名 {0}", + "ntfyPriorityHelptextAllExceptDown": "除了 {0} 类事件使用 {1} 优先级外,其他所有事件均使用该优先级", + "statusPageSpecialSlugDesc": "特殊路径 {0}:当访客未指定路径时将显示此路径对应的页面", + "Search monitored sites": "搜索监控中站点", + "settingUpDatabaseMSG": "正在配置数据库中。这需要一定的时间,请耐心等候。", + "ntfyPriorityHelptextAllEvents": "所有事件将使用最高优先级", + "What is a Remote Browser?": "什么是远程浏览器?", + "Your User ID": "你的用户 ID", + "Channel access token (Long-lived)": "频道访问令牌(长期版)", + "wayToGetHeiiOnCallDetails": "如需了解如何获取 Trigger ID 和 API 密钥,请访问 {documentation}", + "documentationOf": "{0} 文档", + "gtxMessagingToHint": "国际通用格式,需要前导 \"+\" ({e164}、{e212} 或 {e214} 格式)", + "From Phone Number / Transmission Path Originating Address (TPOA)": "发件人电话号码 / 传输路径起始地址(TPOA)", + "gtxMessagingApiKeyHint": "你可以在此找到你的 API 密钥:My Routing Accounts > Show Account Information > API Credentials > REST API (v2.x)", + "To Phone Number": "收件人电话号码", + "gtxMessagingFromHint": "在手机上,收件人会看到 TPOA 地址作为消息的发送者。TPOA 允许的格式包括:至多11个字母或数字、短代码、当地长代码或国际号码({e164}、{e212} 或 {e214} 格式)", + "Allow Long SMS": "允许长消息", + "Destination": "收件人", + "cellsyntOriginator": "在收件人处作为消息发送者显示。允许的内容取决于发件人类型。", + "Originator": "发件人", + "max 15 digits": "最多 15 位数字", + "cellsyntOriginatortypeAlphanumeric": "字符或数字类型(最多 11 个字母或数字)。收件人无法向此号码回复消息。", + "Telephone number": "手机号码", + "Alphanumeric (recommended)": "字符或数字类型(推荐)", + "Originator type": "发件人类型", + "max 11 alphanumeric characters": "最多 11 个字母或数字", + "cellsyntSplitLongMessages": "长消息会被切分为至多 6 段,每段至多 153 个字符,总共至多 918 个字符。", + "cellsyntDestination": "收件人的手机号码需要使用以 00+国家代码开头的国际通用格式,例如若要发给英国的号码 07920 110 000 需使用 00447920110000 作为收件人手机号码(至多17位数)。需发送给多个收件人手机号码时可使用英文逗号分隔,每次请求最 多250 00个收件人手机号码。", + "cellsyntOriginatortypeNumeric": "数字类型(最多 15 位数)需使用国际通用格式,不以 00+国家代码开头,例如若要使用英国的号码 07920 110 000 需填写 447920110000。收件人可向此号码回复消息。", + "callMeBotGet": "您可以在此处填写您生成的用于 {0}、{1} 或 {2} 的端点。 请注意您可能会受到速率限制。 速率限制被推测为:{3}(仅供参考)", + "whapiRecipient": "手机号码 / 联系人 ID / 组 ID", + "API URL": "API 地址", + "wayToGetWhapiUrlAndToken": "您可以通过进入您想要的频道来获取 API URL 和令牌:{0}", + "wayToWriteWhapiRecipient": "可用格式为不含 + 号的国际通用格式手机号码({0})、联系人 ID({1})或组 ID({2})。", + "Mentioning": "是否提及成员", + "Don't mention people": "不提及任何人", + "Mention group": "提及 {group}", + "senderSevenIO": "发信人号码或名称", + "wayToGetSevenIOApiKey": "访问 app.seven.io > 开发人员 > api 密钥 > 绿色添加按钮下的仪表板", + "receiverInfoSevenIO": "如果接收号码不在德国,您必须在号码前面添加国家代码(例如,对于来自美国的国家代码 1,请使用 117612121212 而不是 017612121212)", + "apiKeySevenIO": "SevenIO API 密钥", + "locally configured mail transfer agent": "本地配置的邮件传输代理", + "Either enter the hostname of the server you want to connect to or localhost if you intend to use a locally configured mail transfer agent": "输入您要连接的服务器的主机名,或者输入 {localhost}(如果您打算使用 {local_mta})", + "receiverSevenIO": "收信人号码", + "Host URL": "服务器地址", + "ignoreTLSErrorGeneral": "连接时忽视 TLS/SSL 错误", + "wayToGetDiscordThreadId": "获取一个子区(thread)或论坛帖子的消息 ID 与获取一个频道的 ID 相似。关于如何获取 ID 请参阅 {0}", + "whatHappensAtForumPost": "创建一个新论坛帖子。本功能不会向已存在的论坛帖子发送消息。如果需要请使用 \"{option}\"", + "mongodbCommandDescription": "对数据库运行 MongoDB 命令。有关可用命令的信息,请查阅 {documentation}", + "Command": "命令", + "bitrix24SupportUserID": "输入你在 Bitrix24 的用户 ID。你可以在你的用户个人资料页找到你的用户 ID。", + "wayToGetBitrix24Webhook": "你可以按以下步骤创建一个 webhook:{0}", + "Bitrix24 Webhook URL": "Bitrix24 Webhook 地址", + "postToExistingThread": "发送到已存在的子区/论坛帖子", + "Create new forum post": "创建新的论坛帖子", + "Send to channel": "发送到频道", + "Select message type": "选择消息类型", + "Refresh Interval Description": "状态页面会每 {0} 秒进行一次完全刷新", + "Refresh Interval": "刷新间隔", + "forumPostName": "论坛帖子名称", + "e.g. {discordThreadID}": "例如 {discordThreadID}", + "threadForumPostID": "子区/论坛帖子 ID", + "smspartnerSenderName": "SMS 发件人名称", + "smspartnerPhoneNumber": "手机号码", + "smspartnerApiurl": "你可以在此处找到你的 API 密钥:{0}", + "smspartnerSenderNameInfo": "不能使用特殊字符,字符数在 3 到 11 个之间", + "smspartnerPhoneNumberHelptext": "号码必须使用国际通用格式,例如 {0}、{1}。多个号码必须使用 {2} 分隔", + "threemaRecipientTypePhone": "电话号码", + "threemaRecipientTypeIdentityFormat": "8 位字符", + "threemaRecipientTypeIdentity": "Threema ID", + "threemaRecipientType": "收信人类型", + "threemaRecipient": "收件人", + "threemaApiAuthenticationSecret": "网关密钥", + "threemaSenderIdentityFormat": "8 位字符,通常以 * 开头", + "threemaSenderIdentity": "网关 ID", + "threemaRecipientTypeEmail": "邮件地址", + "threemaBasicModeInfo": "注:此通知类型所使用的 Threema 网关为基础模式(服务器端加密)。更多细节参见 {0}。", + "threemaRecipientTypePhoneFormat": "E.164 标准,不含前导 + 号", + "wayToGetThreemaGateway": "你可以在 {0} 注册 Threema 网关。", + "apiKeysDisabledMsg": "由于登录验证被禁用,API 密钥也被禁用。", + "now": "现在", + "Json Query Expression": "JSON 查询表达式", + "and": "与", + "cacheBusterParam": "添加参数 {0}", + "cacheBusterParamDescription": "随机生成一个参数以绕过缓存。", + "Community String": "SNMP 通讯字符串", + "snmpCommunityStringHelptext": "此字符串用作密码,以验证和控制对SNMP启用设备的访问。请将其与您的SNMP设备配置匹配。", + "Please enter a valid OID.": "请输入一个合法的 OID。", + "privateOnesenderDesc": "请确保电话号码有效。要向私人电话号码发送消息,格式形如:628123456789", + "wayToGetOnesenderUrlandToken": "你可以在 Onesender 网站获取地址和令牌。更多信息参见 {0}", + "signl4Docs": "你可以在此找到更多关于如何配置 SIGNL4 以及如何获取 SIGNL4 Webhook 地址的信息:{0}。", + "groupOnesenderDesc": "请确保分组 ID 有效。要向分组发送消息,格式形如:628123456789-342345", + "time ago": "{0} 之前", + "-year": "年", + "OID (Object Identifier)": "OID(对象标识符)", + "snmpOIDHelptext": "输入您想监控的传感器或状态的 OID。如果您不确定 OID 是什么,可以使用 MIB 浏览器或 SNMP 软件等网络管理工具进行查找。", + "Condition": "条件", + "SNMP Version": "SNMP 版本", + "Host Onesender": "Onesender 服务器", + "Token Onesender": "Onesender 令牌", + "Recipient Type": "收件人类型", + "Private Number": "私密号码", + "Add Remote Browser": "添加远程浏览器", + "OAuth2: Client Credentials": "OAuth2:客户端凭据", + "Authentication Method": "鉴权方式", + "Authorization Header": "鉴权请求头", + "Form Data Body": "表单数据请求体", + "OAuth Token URL": "OAuth 令牌地址", + "Client ID": "客户端 ID", + "Client Secret": "客户端秘钥", + "OAuth Scope": "OAuth 范围", + "New Group": "新分组", + "Group ID": "分组 ID", + "Group Name": "分组名称", + "Optional: Space separated list of scopes": "可选项:用空格分隔的范围列表", + "Go back to home page.": "返回到首页。", + "No tags found.": "未找到标签。", + "Lost connection to the socket server.": "与 socket 服务器的连接丢失。", + "Cannot connect to the socket server.": "无法连接到 socket 服务器。", + "SIGNL4": "SIGNL4", + "SIGNL4 Webhook URL": "SIGNL4 Webhook 地址", + "Conditions": "条件", + "conditionAdd": "添加条件", + "conditionDelete": "删除条件", + "conditionAddGroup": "添加分组", + "conditionDeleteGroup": "删除分组", + "conditionValuePlaceholder": "值", + "equals": "相等", + "not equals": "不相等", + "contains": "包含", + "not contains": "不包含", + "starts with": "以此开头", + "not starts with": "不以此开头", + "ends with": "以此结尾", + "not ends with": "不以此结尾", + "less than": "少于", + "greater than": "多于", + "less than or equal to": "不多于", + "greater than or equal to": "不少于", + "record": "记录", + "jsonQueryDescription": "使用 JSON 查询解析并提取服务器 JSON 响应中的特定数据,或者,如果不期望得到 JSON 响应,则可使用 \"$\" 获取原始响应。然后将结果转为字符串并与期望值进行字符串比较。有关更多文档,请参阅 {0},亦可使用 {1} 来尝试查询。", + "shrinkDatabaseDescriptionSqlite": "触发 SQLite 数据库的 {vacuum} 命令。{auto_vacuum} 已经启用,但它不会像 {vacuum} 命令那样对数据库进行碎片整理,也不会重新打包各个数据库页面。" +} diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 5d999b597..619e7146c 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -1,1917 +1,1917 @@ - - - - - + + + + + diff --git a/src/pages/List.vue b/src/pages/List.vue index 86e6e98e2..98e6a6864 100644 --- a/src/pages/List.vue +++ b/src/pages/List.vue @@ -11,6 +11,18 @@ export default { components: { MonitorList, }, + mounted() { + if (!this.$root.isMobile && this.$route.path === '/list') { + this.$router.push('/dashboard'); + } + }, + watch: { + '$root.isMobile'(newVal) { + if (!newVal && this.$route.path === '/list') { + this.$router.push('/dashboard'); + } + } + } }; @@ -21,4 +33,11 @@ export default { padding: 20px; } +.slide-fade-enter-active, .slide-fade-leave-active { + transition: all 0.5s ease; +} +.slide-fade-enter, .slide-fade-leave-to { + transform: translateX(10px); + opacity: 0; +}